このページでは、GitLab ホストを Cloud Build に接続する方法について説明します。
準備
-
Enable the Cloud Build and Secret Manager APIs.
GitLab ホストへの接続
GitLab インスタンスのホスト接続を作成する前に、次の手順で GitLab に個人用アクセス トークンを作成する必要があります。
GitLab インスタンスにログインします。
インスタンスの GitLab ページで、右上のアバターをクリックします。
[プロフィールを編集] をクリックします。
左側のサイドバーで [アクセス トークン] を選択します。
[個人用アクセス トークン] ページが表示されます。
スコープが
api
のアクセス スコープを作成して、リポジトリの接続と切断に使用します。スコープが
read_api
のアクセス トークンを作成して、Cloud Build リポジトリがリポジトリ内のソースコードにアクセスできるようにします。
コンソール
GitLab ホストを Cloud Build に接続するには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリ] ページが表示されます。
ページ上部の [第 2 世代] タブを選択します。
上部のバーにあるプロジェクト セレクタで、Google Cloud プロジェクトを選択します。
[ホスト接続の作成] をクリックして、新しいホストを Cloud Build に接続します。
左側のパネルで、ソース プロバイダとして GitLab を選択します。
[接続の構成] セクションで、次の情報を入力します。
[リージョン]: 接続のリージョンを選択します。
[名前]: 接続の名前を入力します。
[ホストの詳細] セクションで、次の情報を選択または入力します。
- GitLab プロバイダ: プロバイダとして GitLab.com を選択します。
[個人用アクセス トークン] セクションで、次の情報を入力します。
API アクセス トークン: スコープ アクセスが
api
のトークンを入力します。このトークンは、リポジトリの接続と切断に使用されます。Read API アクセス トークン: スコープ アクセスが
read_api
のトークンを入力します。Cloud Build トリガーは、このトークンを使用してリポジトリ内のソースコードにアクセスします。
[接続] をクリックします。
[接続] ボタンをクリックすると、個人用アクセス トークンが Secret Manager に安全に保存されます。ホスト接続後、Cloud Build はユーザーに代わって Webhook シークレットも作成します。シークレットは、Secret Manager ページで確認および管理できます。
これで、GitLab 接続が正常に作成されました。
gcloud
GitLab ホストを Cloud Build に接続する前に、次の手順で認証情報を保存します。
次のコマンドを実行して、Secret Manager で Webhook シークレットを作成します。
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-
ホスト接続の作成に使用するように計画するプロジェクトとは異なる Google Cloud プロジェクトにシークレットを保存する場合は、次のコマンドを入力して、プロジェクトが Cloud Build サービス エージェントにアクセスできるようにします。
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.admin"
ここで
- PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
これで、GitLab ホストを Cloud Build に接続できるようになりました。
次の手順を行います。
GitLab ホストを Cloud Build に接続するには:
次のコマンドを入力して、GitLab 接続を作成します。
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION
ここで
- CONNECTION_NAME は接続の名前です。
- HOST_URI は GitLab インスタンスの URI です。例:
https://my-gle-server.net
- PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
- REGION は、接続のリージョンです。
- API_TOKEN は、スコープが
api
のトークンの名前です。 - READ_TOKEN は、スコープが
read_api
のトークンの名前です。 - SECRET_VERSION はシークレットのバージョンです。
- WEBHOOK_SECRET は Webhook シークレットです。
これで、GitLab 接続が正常に作成されました。
次のステップ
- GitLab リポジトリに接続する方法を確認する。
- GitLab パイプラインで Google マネージド CI / CD コンポーネントを使用して、ワークロードをビルドして Google Cloud にデプロイする方法を学習します。GitLab on Google Cloud をご覧ください。