2017-10-05 15 views
3

git、codebuild、およびelastic beanstalkを使用してCI/CDパイプラインを構築しています。ビルドが失敗した後もコードビルドが続行します

テストケースの構文エラーが原因でビルドが失敗した場合、コードビルドの次のステージへの進捗状況が表示され、最終的にアーチファクトが生成されます。

ビルドに失敗した場合、実行を停止する必要があると私が理解していました。これは正しい動作ですか?

下記のbuildspecをご覧ください。

version: 0.2 

phases: 
    install: 
    commands: 
     - echo Installing package.json.. 
     - npm install 
     - echo Installing Mocha... 
     - npm install -g mocha 
    pre_build: 
    commands: 
     - echo Installing source NPM placeholder dependencies... 
    build: 
    commands: 
     - echo Build started on `date` 
     - echo Compiling the Node.js code 
     - mocha modules/**/tests/*.js 
    post_build: 
    commands: 
     - echo Build completed on `date` 
artifacts: 
    files: 
    - modules/* 
    - node_modules/* 
    - package.json 
    - config/* 
    - server.js 

答えて

2

CodeBuildは終了コードによる障害を構築検知します。テストの実行が失敗した場合にゼロ以外の終了コードを返すようにする必要があります。

POST_BUILD will always run as long as BUILD was also runBUILDの成功または失敗に関係なく)UPLOAD_ARTIFACTSについても同様です。これは、デバッグ情報/成果物を取得できるようにするためです。あなたがBUILDの成否に応じてPOST_BUILDに異なる何かをしたい場合は、それが失敗した場合

、あなたはBUILDが成功した場合1に設定されているbuiltin environment variable CODEBUILD_BUILD_SUCCEEDING、および0をテストすることができます。

+0

任意のアイデアどのように確保するための終了コードが返されますか? – pkpk

0

post_buildステージが実行され、アーティファクトが生成されます。 post_buildは、必要に応じてビルド環境を適切にシャットダウンするのに適しており、ビルドに失敗してもアーティファクトが役立つ可能性があります。例えば。余分なログ、中間ファイルなど。

post_buildは、ビルド結果に無関心で、ビルド環境を適切に初期化解除するコマンドに対してのみ使用することをお勧めします。それ以外の場合は、そのステップを除外することができます。

0

CodeBuildは、環境変数CODEBUILD_BUILD_SUCCEEDINGを使用して、ビルドプロセスが正しいかどうかを示します。

私が今発見された最良の方法は、インストールsecionで小さなスクリプトを作成することで、その後なかれ、これはのように使用します。

phases: 
    install: 
    commands: 
     - echo '#!/bin/bash' > /usr/local/bin/ok; echo 'if [[ "$CODEBUILD_BUILD_SUCCEEDING" == "0" ]]; then exit 1; else exit 0; fi' >> /usr/local/bin/ok; chmod +x /usr/local/bin/ok 
    post_build: 
    commands: 
     - ok && echo Build completed on `date` 
関連する問題