ビルドアーティファクトとは?
ビルドアーティファクトとは、buildのパッケージ化された出力、つまり保存・テスト・デプロイされるファイルやbundleのことです。
buildが完了すると、バイナリ、イメージ、zip化されたbundleといった、目に見えるものが生成されます。その出力がビルドアーティファクトです。それをバージョン管理されたファーストクラスのオブジェクトとして扱うことは、信頼できるデリバリの中核です。
アーティファクトとは
ビルドアーティファクトは、ソースコードをコンパイルしパッケージ化した具体的な結果、つまり実際にデプロイするものです。コンテナイメージ、JARやWARファイル、コンパイル済みバイナリ、または静的アセットのzipかもしれません。アーティファクトはソースコードとは別物であり、ソースが生成するものです。
アーティファクトはどう生成・保存されるか
pipelineのbuildステージがアーティファクトを生成し、通常はバージョンやコミット識別子でラベル付けします。アーティファクトはその後、artifact repositoryやregistryに保存され、後続のpipelineステージや他のシステムが再buildせずにまったく同じbuildを取得できるようにします。
例
- サービス用のDockerコンテナイメージ。
- Javaアプリケーション用のJARファイル。
- GoやRustプログラム用のコンパイル済みバイナリ。
- ウェブサイト用にbuildされた静的ファイルのzip。
Build once, deploy everywhere
デリバリの中核原則は、アーティファクトを一度だけbuildし、そのまったく同じアーティファクトをすべての環境で昇格させることです。stagingと本番が同一のバイトを実行するため、各環境が再buildするときに忍び込むdriftを避けられます。アーティファクトこそが "build once" を可能にするものです。
なぜ重要なのか
バージョン管理され保存されたアーティファクトは、トレーサビリティ(どのコミットがこれを生成したか?)、再現性(同じものを再びデプロイする)、そしてrollbackの能力(前のアーティファクトを再デプロイする)を与えます。それらはdeployment pipelineを流れる単位なので、正しく扱えばpipeline全体が信頼できるものになります。
重要なポイント
- ビルドアーティファクトは、buildのパッケージ化されデプロイ可能な出力です。
- アーティファクトは、再利用できるようにバージョン管理され保存されます。
- 一度buildして同じアーティファクトを昇格させることで、driftを避けられます。