Skip to content
Latchkey

ビルドアーティファクトとは?

ビルドアーティファクトとは、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を避けられます。

関連ガイド