Bitbucket データセンター ホストに接続する

このページでは、Bitbucket データセンター ホストを Cloud Build に接続する方法について説明します。

準備

  • Cloud Build, Secret Manager, and Compute Engine API を有効にします。

    API を有効にする

設定

Bitbucket データセンター ホストに接続する前に、Bitbucket データセンターからの受信イベントを認証して受け入れる API キーを取得する必要があります。さらに、Webhook を作成してリポジトリ データを取得するには、Google Cloud プロジェクトで IAM 権限を付与して、Bitbucket データセンターで個人用アクセス トークンを作成する必要があります。

API キーの取得

ホスト リポジトリを接続し、受信 Webhook イベントを認証するには、API キーが必要です。

API キーを取得するには:

  1. Google Cloud Console の認証情報ページを開きます。

    [認証情報] ページを開く

  2. [認証情報を作成] をクリックします。

  3. [API キー] をクリックします。

    作成した API キーとともにダイアログが表示されます。API キーをメモします。

  4. プロダクト アプリケーションのキーを制限する場合は、[キーを制限] をクリックして、キーを保護する追加の手順を行います。制限しない場合は、[閉じる] をクリックします。

    キーを制限する方法については、API キーの制限を適用するをご覧ください。

個人用アクセス トークンの作成

次のタスクを実行するには、Bitbucket データセンターに 2 つの個人用アクセス トークンを作成する必要があります。

これらの個人用のアクセス トークンは、必要最小限の権限です。追加の権限は、必要に応じて Bitbucket データセンターで構成できます。たとえば、Bitbucket Data Center アカウントを選択して、Bitbucket Data Center インスタンス上のリポジトリのサブセットにのみアクセスし、Cloud Build で利用できる対象を細かく制御できます。

個人用のアクセス トークンを作成したら、Bitbucket データセンター リポジトリに接続して、トークンの値を安全に保存します。

Bitbucket データセンター ホストへの接続

Console

Google Cloud コンソールを使用して Bitbucket データセンター ホストを Cloud Build に接続するには:

  1. Google Cloud コンソールで [リポジトリの管理] ページを開きます。

    [リポジトリの管理] ページを開く

  2. [ホストに接続] をクリックします。

    [リポジトリを接続] パネルが表示されます。

    次の情報を入力して、Bitbucket データセンター インスタンスを Cloud Build に接続します。

    • Host url: Bitbucket データセンター インスタンスのホスト URL。例: https://bbs.example-test.com:7990
    • Google Cloud API キー: 認証情報の認証に使用する API キー。
    • CA 証明書: 自己署名証明書。証明書のサイズは 10 KB 以下の PEM 形式(.pem.cer、または .crt)にする必要があります。このセクションを空白のままにすると、デフォルトの証明書のセットが使用されます。
    • ユーザー名: Bitbucket データセンター アカウントのユーザー名。このアカウントには、Cloud Build に接続するリポジトリに対する管理者権限が必要です。
    • 読み取りアクセス トークン: 読み取り権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークン。
    • 管理者アクセス トークン: プロジェクトとリポジトリに対する管理者権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークン。
    • [省略可] ネットワーク プロジェクト: オンプレミス ネットワークのネットワーク プロジェクト ID。
    • [省略可] ネットワーク名: オンプレミス ネットワークのネットワーク名。
  3. [ホストに接続] をクリックします。

    Bitbucket データセンター インスタンスがピアリングされたネットワーク上にある場合、ホストの接続に数分かかることがあります。

    [リポジトリを接続] パネルにリダイレクトされます。

    ホスト接続を作成すると、個人用のアクセス トークンと Webhook シークレットは、Secret Manager に安全に保存されます。シークレットは、Secret Manager ページで確認および管理できます。

gcloud

gcloud コマンドを使用して Bitbucket データセンター ホストを Cloud Build に接続するには、ターミナルで「gcloud alpha builds enterprise-config bitbucketserver create」コマンドを実行する必要があります。Google Cloud Console を使用してホストを接続する場合とは異なり、個人用のアクセス トークンと Webhook シークレットを Secret Manager に手動で保存した後、次のコマンドを実行する必要があります。

gcloud alpha builds enterprise-config bitbucketserver create
--name=BITBUCKET_DATA_CENTER_CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--ssl-ca-file=SSL_CA_FILE

ここで

  • BITBUCKET_DATA_CENTER_CONFIG_NAME は、Bitbucket データセンターの構成の名前です。
  • USERNAME は、Bitbucket データセンターのユーザー名です。
  • HOST_URI は、Bitbucket データセンター インスタンスのホスト URI です。
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された管理者アクセス トークンのリソース名です。Secret Manager に保存されているシークレットの想定される形式は、projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER} です。シークレットの最新バージョンを使用するには、バージョンとして latest を指定できます。これは、Secret Manager に保存されている各リソースに適用されます。
  • READ_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された読み取りアクセス トークンのリソース名です。
  • WEBHOOK_SECRET_SECRET_VERSION は、Secret Manager に保存された Webhook シークレットのリソース名です。
  • API_KEY は、Google Cloud API キーです。
  • [省略可] PEERED_NETWORK は、オンプレミスで Bitbucket Data Center インスタンスに接続する VPC ネットワークです。
  • SSL_CA_FILE は、Bitbucket データセンターへのリクエストに使用する SSL 証明書を含むローカル ファイルへのパスです。証明書は PEM 形式にする必要があります。

API

API を使用して Bitbucket データセンター ホストを Cloud Build に接続するには、次の JSON テンプレートを使用します。Google Cloud コンソールを使用してホストを接続する場合とは異なり、API を呼び出す前に、個人用のアクセス トークンと Webhook シークレットを Secret Manager に手動で保存する必要があります。

  {
      "hostUri": "HOST_URI",
      "username": "USERNAME",
      "apiKey": "API_KEY",
      "secrets": {
        "adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
        "readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
        "webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
      },
      "peeredNetwork": "PEERED_NETWORK",
      "sslCa": "SSL_CERTIFICATE"
  }

ここで

  • HOST_URI は、Bitbucket データセンター インスタンスのホスト URI です。
  • USERNAME は、Bitbucket データセンターのユーザー名です。
  • API_KEY は、Google Cloud API キーです。
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された管理者アクセス トークンのリソース名です。Cloud Build サービス アカウント(service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com)に、Secret Manager のロールを付与する必要がある場合があります。詳しくは、サービス アカウントに Secret Manager のロールを付与するをご覧ください。

  • READ_ACCESS_TOKEN_SECRET_VERSION は、Secret Manager に保存された読み取りアクセス トークンのリソース名です。

  • WEBHOOK_SECRET_SECRET_VERSION は、Secret Manager に保存された Webhook シークレットのリソース名です。

  • [省略可] PEERED_NETWORK は、オンプレミスで Bitbucket Data Center インスタンスに接続する VPC ネットワークです。

  • [省略可] SSL_CERTIFICATE は、オンプレミスの Bitbucket データセンター インスタンスに使用される SSL 証明書です。

ターミナルで、次の curl コマンドを入力します。

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json

ここで

  • PROJECT_ID は Cloud プロジェクト ID です。
  • REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
  • BITBUCKET_DATA_CENTER_CONFIG_NAME は、Bitbucket データセンターの構成の名前です。

成功すると、レスポンスの本文には新しく作成された Operation のインスタンスが含まれます。

ターミナルで、次の curl コマンドを入力します。

  curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8"  -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

ここで

  • PROJECT_NUMBER は Cloud プロジェクト番号です。
  • PROJECT_ID は Cloud プロジェクト ID です。
  • REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
  • OPERATION_ID は、Bitbucket データセンターの構成作成オペレーションの ID です。

オペレーションが完了したことを示す done: true がレスポンスに含まれるまで、GetOperation API コマンドを実行したままにする必要が生じる場合があります。Bitbucket データセンターの構成が正常に作成された場合は、response.value フィールドでその構成を確認できます。正常に作成されなかった場合は、error フィールドで詳細なエラーレポートを確認してください。

次のステップ