2

githubとAWS CodePipelineの間で統合をセットアップできました。今では、ラムダ関数によるプッシュイベントの後にコードがS3にアップロードされます。それはとてもうまくいく。DockerイメージをAWS CodePipelineのステップとして作成

ソースコードがS3の新しいZIPがパイプラインをトリガし、コードをビルドします。それはいいです。今私はプロジェクトのドッカー画像を作りたいと思います。

最初の問題は、プロジェクト(nodejs)ビルドとドッカービルドを混在させることができないことです。それは問題ありません。次の問題は、ドッカービルドのために別のbuildspec.ymlを持つことができないということです。回避策として動作するビルド・コマンドを手動で指定してください(ok)。

パイプラインの一部としてドッキング・ビルドを配置する方法は、最大の問題ですが、私の理解が不足していますか?最初のビルドステップはプロジェクトをビルドし、次のビルドステップはドッカーイメージをビルドします。 2つのスタンドアロンAWS CodeBuild

パイプライン構築ステップでは、出力にアーティファクトを生成する必要があります。しかし、ドッカービルドではファイルが生成されず、ドッカービルド後の最終的なドッカープッシュはパイプラインサービスによってアーティファクトとして認定されていないように見えます。

方法はありますか?

ありがとうございました

+0

は、あなたがこの記事を見ましたか?今週はこれをテストするつもりですが、記事では最終段階でドッカー画像をプッシュしています。お役に立てれば。 docs.aws.amazon.com/codebuild/latest/userguide/sample-docker.html –

+0

これはスタンドアロンビルドとして動作します。これは問題ありません。しかし、CodePipelineの一部としてそれを待っていれば、ドッカーの画像は出力アーチファクトを生成しないため、できません。 私は出力として、醜い回避策を置くと思うが、他の方法は見つけられていない。 – stibi

+0

最終パッケージのジップをアーチファクトとして保存するだけで、ドッカーイメージのオフラインビルドを行うことができます。それが私の計画だった。 –

答えて

0

ご迷惑をおかけして申し訳ありません。私たちのロードマップには、それほど制限の少ないものになっています。一方、CodeBuildアクションを使用するには、出力アーティファクトとしてダミーファイルを使用できます。

+0

これは今の場合ですか? – Nathan

2

少し遅れていますが、うまくいけば誰かにとって役に立ちます。 post_buildフェーズコマンドの一部としてドッカー画像を公開する必要があります。ここでbuildspec.ymlの例です:あなたが見ることができるように、CodeBuildプロジェクトはいくつかのパラメータを期待

version: 0.1 

phases: 
    pre_build: 
    commands: 
     - echo Logging in to Amazon ECR... 
     - $(aws ecr get-login --region $AWS_REGION) 
    build: 
    commands: 
     - echo Build started on `date` 
     - echo Building the Docker image...   
     - docker build -t $IMAGE . 
     - "docker tag $IMAGE $REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}" 
    post_build: 
    commands: 
     - echo Build completed on `date` 
     - echo Pushing the Docker image... 
     - "docker push $REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}" 
     - "echo {\\\"image\\\":\\\"$REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}\\\"} > image.json" 
artifacts: 
    files: 
    - 'image.json' 

からAWS_REGIONREPOIMAGEをし、AWS ECR上の画像を公開しています(ただし、あなたがお好みのレジストリを使用することができます) 。また、既存のCODEBUILD_BUILD_ID環境変数を使用してイメージタグの動的値を抽出します。イメージがプッシュされると、イメージへのフルパスでjsonファイルが作成され、CodePipelineが使用するアーティファクトとしてパブリッシュされます。

これを有効にするには、CodeBuildプロジェクトの「環境イメージ」が「ドッカー」で、「権限付き」フラグが有効になっている必要があります。パイプラインでCodeBuildプロジェクトを作成する場合は、上記のbuildspecファイルで使用される環境変数を指定することもできます。ここでは、このトピックには良いのチュートリアルがあり

http://queirozf.com/entries/using-aws-codepipeline-to-automatically-build-and-deploy-your-app-stored-on-github-as-a-docker-based-beanstalk-application

+1

ビルドフェーズのコマンドが失敗した場合、post_buildフェーズ**のコマンドは引き続き実行されます**。 [ビルドフェーズの移行](http://docs.aws.amazon.com/codebuild/latest/userguide/view-build-details.html#view-build-details-phases)を参照してください。 –

関連する問題