ハーバーレジストリ
ハーバーレジストリの有効化
Harbor レジストリを有効にするには、グループまたはプロジェクトの Harbor インテグレーションを設定する必要があります。Harbor 設定には 4 つのフ ィ ール ド が必要です:url
project_name
、username
、password
。
項目 | 説明 |
---|---|
url | HarborインスタンスのURL。 |
project_name | Harborインスタンスのプロジェクト名。 |
username | Harbor インスタンスへのログインに使用するユーザー名。 |
password | Harbor インスタンスへのログインに使用するパスワード。 |
GitLab CI/CD の定義済み変数と以下の Harbor レジストリ変数を使用して、Harbor インスタンスにデータを要求できます。
変数 | 説明 |
---|---|
HARBOR_URL | HarborインスタンスのURL。 |
HARBOR_HOST | Harbor インスタンスの URL のホスト。 |
HARBOR_OCI | Harbor インスタンス URL の OCI URL。 |
HARBOR_PROJECT | Harborインスタンスのプロジェクト名。 |
HARBOR_USERNAME | Harbor インスタンスへのログインに使用するユーザー名。 |
HARBOR_PASSWORD | Harbor インスタンスへのログインに使用するパスワード。 |
テスト設定
設定をテストする場合、リクエストはハーバー・インスタンスの/api/v2.0/ping
に送信されます。テストに成功すると、ステータスコード200
が返されます。このテストは主に、Harbor インスタンスが正しく設定されていることを確認するためのものです。username
とpassword
が正しいかどうかは検証しません。
コードの構造
app/controllers/concerns/harbor
├── access.rb
├── artifact.rb
├── repository.rb
└── tag.rb
app/controllers/projects/harbor
├── application_controller.rb
├── artifacts_controller.rb
├── repositories_controller.rb
└── tags_controller.rb
app/controllers/groups/harbor
├── application_controller.rb
├── artifacts_controller.rb
├── repositories_controller.rb
└── tags_controller.rb
app/models/integrations/harbor.rb
app/serializers/integrations/harbor_serializers
├── artifact_entity.rb
├── artifact_serializer.rb
├── repository_entity.rb
├── repository_serializer.rb
├── tag_entity.rb
└── tag_serializer.rb
lib/gitlab/harbor
├── client.rb
└── query.rb
app/controllers/projects/harbor
とapp/controllers/groups/harbor
の下にあるコントローラは、フロントエンド呼び出し用の API インターフェイスを提供します。
app/controllers/concerns/harbor
にあるモジュールは、 コントローラが使用する一般的なメソッドを提供します。
Harborインテグレーションモデルはapp/models/integrations
にあり、Harborインテグレーションに関する設定情報が含まれています。
app/serializers/integrations/harbor_serializers
にあるシリアライザは、app/controllers/projects/harbor
とapp/controllers/groups/harbor
にあるコントローラで使用され、 コントローラがレスポンスの JSON データをシリアライズするのに役立ちます。
lib/gitlab/harbor
ディレクトリにはHarborクライアントがあり、HarborインスタンスにAPIリクエストを送信してデータを取得します。
シーケンス図
ポリシー
グループとプロジェクトのread_harbor_registry
ポリシーは、ユーザーが Harbor レジストリにアクセスできるかどうかを制御するために使用されます。このポリシーは、レポーターロール以上のすべてのユーザーで有効になります。
フロントエンド開発者
関連するフロントエンドのコードはapp/assets/javascripts/packages_and_registries/harbor_registry/
ディレクトリにあります。ファイル構造は以下の通りです:
├── components
│ ├── details
│ │ ├── artifacts_list_row.vue
│ │ ├── artifacts_list.vue
│ │ └── details_header.vue
│ ├── list
│ │ ├── harbor_list_header.vue
│ │ ├── harbor_list_row.vue
│ │ └── harbor_list.vue
│ ├── tags
│ │ ├── tags_header.vue
│ │ ├── tags_list_row.vue
│ │ └── tags_list.vue
│ └── harbor_registry_breadcrumb.vue
├── constants
│ ├── common.js
│ ├── details.js
│ ├── index.js
│ └── list.js
├── pages
│ ├── details.vue
│ ├── harbor_tags.vue
│ ├── index.vue
│ └── list.vue
├── index.js
├── router.js
└── utils.js
ファイルharbor_registry/pages/index.vue
には Vue のルータービューコンポーネントが 1 つだけ含まれており、router.js
を経由してimages list
、image detail
、tags list
のページに移動します。
registry_breadcrumb.vue
コンポーネントはマルチレベルパスをサポートしていないため、harbor_registry/components/harbor_registry_breadcrumb.vue
コンポーネントを再実装しました。
harbor_registry_breadcrumb.vue
にパス配列を渡すことで、マルチレベルのパンくずコンポーネントを生成することができます。
const routeNameList = [];
const hrefList = [];
this.breadCrumbState.updateName(nameList);
this.breadCrumbState.updateHref(hrefList);