J'ai créé un pipeline de code avec du code très simple et connecté à codecommit. essayé de le construire mais il échoue à l'étape de construction de code indiquant une erreur lors de l'exécution de l'installation de npm Est-ce que je manque quelque chose. Désolé, j'étais nouveau dans ce codebuild / codepipeline
Voici le journal des échecs de codebuild
version: 0.0 environment_variables: plaintext: "INPUT_FILE": "serverless.yml" "S3_BUCKET": "" containers: LambdaFunctions: phases: during_build: commands: - npm install - aws cloudformation package --template $INPUT_FILE --s3-bucket $S3_BUCKET --output-template post-saml.yaml artifacts: files: - post-saml.yaml - beta.json
mon fichier buildspec.yml ressemble à ceci
[Container] 2019/02/15 11:47:39 Waiting for agent ping [Container] 2019/02/15 11:47:40 Waiting for DOWNLOAD_SOURCE [Container] 2019/02/15 11:47:40 Phase is DOWNLOAD_SOURCE [Container] 2019/02/15 11:47:40 CODEBUILD_SRC_DIR=/codebuild/output/src501317273/src [Container] 2019/02/15 11:47:40 YAML location is /codebuild/output/src501317273/src/buildspec.yml [Container] 2019/02/15 11:47:40 Processing environment variables [Container] 2019/02/15 11:47:40 Moving to directory /codebuild/output/src501317273/src [Container] 2019/02/15 11:47:40 Registering with agent [Container] 2019/02/15 11:47:40 Phases found in YAML: 1 [Container] 2019/02/15 11:47:40 BUILD: 2 commands [Container] 2019/02/15 11:47:40 Phase complete: DOWNLOAD_SOURCE Success: true [Container] 2019/02/15 11:47:40 Phase context status code: Message: [Container] 2019/02/15 11:47:40 Entering phase INSTALL [Container] 2019/02/15 11:47:40 Phase complete: INSTALL Success: true [Container] 2019/02/15 11:47:40 Phase context status code: Message: [Container] 2019/02/15 11:47:40 Entering phase PRE_BUILD [Container] 2019/02/15 11:47:40 Phase complete: PRE_BUILD Success: true [Container] 2019/02/15 11:47:40 Phase context status code: Message: [Container] 2019/02/15 11:47:41 Entering phase BUILD [Container] 2019/02/15 11:47:41 Running command npm install sh: 1: npm: not found [Container] 2019/02/15 11:47:41 Command did not exit successfully npm install exit status 127 [Container] 2019/02/15 11:47:41 Phase complete: BUILD Success: false [Container] 2019/02/15 11:47:41 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: npm install. Reason: exit status 127 [Container] 2019/02/15 11:47:41 Entering phase POST_BUILD [Container] 2019/02/15 11:47:41 Phase complete: POST_BUILD Success: true [Container] 2019/02/15 11:47:41 Phase context status code: Message: [Container] 2019/02/15 11:47:41 Expanding base directory path: . [Container] 2019/02/15 11:47:41 Assembling file list [Container] 2019/02/15 11:47:41 Expanding . [Container] 2019/02/15 11:47:41 Expanding artifact file paths for base directory . [Container] 2019/02/15 11:47:41 Assembling file list [Container] 2019/02/15 11:47:41 Expanding post-saml.yaml [Container] 2019/02/15 11:47:41 Skipping invalid artifact path post-saml.yaml [Container] 2019/02/15 11:47:41 Expanding beta.json [Container] 2019/02/15 11:47:41 Found 1 file(s) [Container] 2019/02/15 11:47:41 Phase complete: UPLOAD_ARTIFACTS Success: true [Container] 2019/02/15 11:47:41 Phase context status code: Message:
Merci d'avance pour l'aide
3 Réponses :
Le message d'erreur se trouve à quelques lignes dans vos journaux: sh: 1: npm: not found
.
Cela signifie que la commande npm n'est pas disponible dans l'environnement de construction. Avez-vous correctement sélectionné une construction nodejs
?
Lorsque vous créez un environnement de construction, vous devez spécifier le système d'exploitation et le runtime. Il est très peu probable que vous n'ayez pas spécifié nodejs
comme runtime.
Consultez le guide étape par étape ici: https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html#getting-started-create-build-project
Consultez la documentation ici: https: / /docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html
J'ai eu le même problème. Pour voir le problème réel, veuillez vérifier attentivement les journaux de construction. Ce n'est pas l'erreur indiquée en rouge, mais quelques lignes au-dessus.
(1) Quelque chose à voir avec l'autorisation du rôle de service de génération de code. J'ai attribué temporairement l'accès à l'administration et cela a fonctionné mais a échoué pour une raison différente. Pour le vérifier, essayez d’exécuter la simple commande de formation de nuages comme ‘aws cloudformation list-stacks’ uniquement (essayez-la avec l’option de commande en ligne ou laissez cette commande uniquement et voyez que cela fonctionne.
(2) Le problème avec le mien était un fichier samtemplate (j'essayais avec C #), dans votre cas serverless.yml. Il créait un fichier de construction à un emplacement, mais mon modèle faisant référence à un emplacement différent. si possible, essayez la même commande de votre AWS CLI sur votre machine locale
Il se peut que vous ayez sélectionné un mauvais OS / image, etc. Vérifiez https: // docs. aws.amazon.com/codebuild/latest/userguide/getting-started-create-build-project-console.html
Il suffit de publier ceci ici au cas où quelqu'un d'autre le croiserait à l'avenir. OP buildspec.yaml
devrait fonctionner s'il est mis à jour comme suit
Référence BuildSpec
Journal des modifications:
version: 0.2 env: variables: INPUT_FILE: "serverless.yml" S3_BUCKET: "" phases: install: runtime-versions: nodejs: 10 commands: - npm install build: commands: - aws cloudformation package --template $INPUT_FILE --s3-bucket $S3_BUCKET --output-template post-saml.yaml artifacts: files: - post-saml.yaml - beta.json