アーティファクト・レジストリの概念
アーティファクト・レジストリに関連する概念および用語を確認します。
アーティファクトとは、ソフトウェア・パッケージ、ライブラリ、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ダイジェストが異なる場合、それらのコンテンツは異なります。