アーティファクト・レジストリの概念

アーティファクト・レジストリに関連する概念および用語を確認します。

アーティファクトとは、ソフトウェア・パッケージ、ライブラリ、zipファイル、またはアプリケーションのデプロイに使用されるその他のタイプのファイルです。たとえば、PythonライブラリやMavenライブラリがあります。アーティファクトは、関連するアーティファクトの集合であるリポジトリにグループ化されます。たとえば、複数のバージョンのMavenアーティファクトをMavenリポジトリにグループ化したり、PythonライブラリをPythonリポジトリにアップロードしたりできます。

アーティファクト・レジストリのリポジトリ名およびアーティファクト名

類似するアーティファクトをグループ化するリポジトリを作成するときは、リポジトリ名<repo-name>を指定します。名前は、文字またはアンダースコアで始まり、文字、数字、ハイフンまたはアンダースコアが続く必要があります。長さは1から255文字です。機密情報を入力しないでください。

例: web-app-repo

名前を空白のままにすると、後で変更できる名前が自動的に生成されます。自動的に生成される名前には次のパターンがあります: artifactrepository<timestamp>

例: artifactrepository20210423180901

アーティファクトをリポジトリにアップロードするときは、そのパスとバージョンを指定します。入力に基づいて、次の形式でアーティファクトにアーティファクト名が割り当てられます:

<artifact-path>:<version>

例: project01/my-web-app/artifact-abc:1.0.0

  • アーティファクト・パス<artifact-path>は、リポジトリ内のアーティファクトの場所を表すユーザー定義パスです。スラッシュはディレクトリ構造を作成しませんが、スラッシュを使用してリポジトリを編成できます。

    例: project01/my-web-app/artifact-abc

  • バージョン<version>は、アーティファクトのバージョンです。アーティファクトには増分更新が加えられるため、アーティファクトにバージョンを割り当てることができます。こうすると、ビルドをアーティファクトのバージョンに関連付けて、以前のバージョンにロールバックできます。

    例: 1.1.0または1.2-beta-2

アーティファクト名は最大長255に切り捨てられます。

アーティファクト・レジストリの不変アーティファクト

リポジトリを作成するときに、そのリポジトリを不変として指定できます。つまり、そのリポジトリにアップロードされたアーティファクトは不変になります。これらのアーティファクトはそのまま使用され、置換できません。不変リポジトリにより、アーティファクトの整合性が保証されます。不変アーティファクトの一般的なユース・ケースは、次のとおりです:

  • デプロイメントのロールバック: ロールバックには、以前の作業中バージョンのデプロイメントの正確なファイルを使用します。不変アーティファクトにより、アーティファクトがリポジトリにアップロードされた後、誰も最後の作業中バージョンを変更していないことが保証されます。
  • コードの寄与: デプロイメント・プロジェクトでは、開発者のコード変更が他のユーザーに影響を与えないようにするために、すべてのアーティファクトを不変にすることをお薦めします。たとえば、website-image.pngにウサギのイメージがある場合、誰もキツネのイメージでそれを上書きできません。イメージを置換してもコードは壊れませんが、結果が変わります。不変アーティファクトを置換するかわりに、新しいアーティファクトをアップロードします。
重要

アーティファクトを削除してから、同じアーティファクト名を使用して新しいアーティファクトをアップロードすると、そのアーティファクトのコンテンツの上書きと同じになります。

不変アーティファクトは削除できますが、置換できません。不変アーティファクトを削除した場合、その名前を別のアーティファクトに割り当てることはできません。そのため、新しいアーティファクトをアップロードして、削除されたアーティファクトのパスとバージョンを割り当てることはできません。ただし、新しいバージョンで同じパスを指定することは可能です。

リポジトリが不変でない場合は、そのリポジトリ内のアーティファクトを上書きできます。たとえば、不変リポジトリの可変スナップショットをテストに使用できます。

アーティファクト・レジストリのアーティファクトの状態

リポジトリ内のアーティファクトを状態でフィルタできます。次の状態があります:

  • AVAILABLE
  • DELETED

たとえば、アーティファクトに名前を付ける前に、DELETED stateでアーティファクトをフィルタできます。こうすると、新しいアーティファクトをアップロードするときに、削除されたアーティファクトの名前を使用しないように徹底できます。

リポジトリにアーティファクトをアップロードすると、アーティファクト・レジストリによってアーティファクトのSHA256ダイジェストが計算され、アーティファクトのプロパティに追加されます。SHA256ダイジェストは、256ビットのセキュア・ハッシュ・アルゴリズムです。

アーティファクト・レジストリでのセキュア・ハッシュを使用したアーティファクトの識別

コード内のアーティファクトをロールバックまたは使用するときは、そのSHA256ダイジェストをリポジトリ内のアーティファクトのSHA256ダイジェストと比較します。アーティファクトのSHA256ダイジェストが異なる場合、それらのコンテンツは異なります。