CodePipelineのアーティファクトで悩んだ時のメモ


はじめに

初めてCodePipelineでパイプラインを作っていて、Buildステージのアーティファクトがよくわからなくて悩んだ時のでメモです

メモ

CodePipelineのアーティファクトストア(S3)のある場所

アーティファクトストアはアーティファクトがあるS3バケットのことです

  • パイプライン作成時
    高度な設定 → カスタムロケーション で指定する事ができます

  • デフォルトのロケーションの場合
    パイプライン → 設定 → アーティファクトストア を見ると場所があります
    (ここでは codepipeline-us-west-1-999999999999 になります)

アーティファクトストアの中

デフォルトのロケーションをみると codepipeline-(リージョン)-(アカウントID)になるので、この中には複数のアーティファクトが置かれます

このように今作った SamplePipelineLS3 と以前作った hellow-world があります

アーティファクトの場所

Sourceステージでは SourceArtifact
Buildステージでは BuildArtifact
上記の2つで指定されたアーティファクトはそれぞれ
codepipeline-(リージョン)-(アカウントID)/(パイプライン名)/ 配下にあります
( ここでは codepipeline-us-west-1-999999999999/SamplePipelineLS3/

名前が短かくなっていますが、調べてないのでちょっとわかりません
BuildArtif/
SourceArti/

名前の変更


アーティファクト名を Soruceステージで ohayou、Buildステージで oyasumi に変更するとそれぞれ合わせて出来ます
古いアーティファクトは消えません

それぞれこの中にあるzipファイルをダウンロードして解凍すると、中にSourceステージやBuildステージでファイルが入っています

数を増やす

BUildステージの出力アーティファクトの数を2つに増やします
oyasumi と nemurenai です

この時は buildspec.yml も修正します

ここ
buildspec.yml
version: 0.2
phases:
  build:
    commands:
      - echo Build started on `date`
      - sam package --template-file template.yml --s3-bucket $S3_ARTIFACT_BUCKET --output-template-file packaged.yml

artifacts:
  secondary-artifacts:
    nemurenai:
      files:
        - "**/template.yml"
    oyasumi:
      files:
        - '**/packaged.yml'

元は下記です。secondary-artifacts を追加しています。

(略)
artifacts:
  files:
    - '**/packaged.yml'


下記のように3つのフォルダができます。(古いのは削除しました)

それぞれzipファイルをダウンロードして中を見ると下記が入っています
nemurenai → template.yml
oyasumi → packaged.yml
ohayo → template.yml と buildspec.yml 等

buildspec.yml を指定していなかったり、ミスっているとビルドがエラーになりフェーズ詳細で下記のメッセージが表示されます

CLIENT_ERROR: no definition for secondary artifact usimitu in buildspec


とりあえず以上になります

残課題
- ビルドプロジェクトで追加したアーティファクトの扱い