はじめに
初めて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 も修正します
ここ
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
とりあえず以上になります
残課題
- ビルドプロジェクトで追加したアーティファクトの扱い