5
votes

la construction du code a échoué avec une erreur lors de l'exécution de la commande: npm install. Raison: état de sortie 127

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


0 commentaires

3 Réponses :


4
votes

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

Et voir une capture d'écran de ma console ici: entrez la description de l'image ici


0 commentaires

0
votes

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


0 commentaires

0
votes

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:

  • a mis à jour la spécification de build vers la version .2
  • a ajouté une dépendance nodejs à la phase d'installation
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


0 commentaires