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

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

始める前に

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

    API を有効にする

  • Bitbucket データセンター リポジトリにソースコードを用意します。
  • Bitbucket データセンター ソース リポジトリに、Dockerfile または Cloud Build 構成ファイルを配置します。
  • Bitbucket データセンターインスタンスをまだインストールしていない場合は、Bitbucket データセンターをインストールする手順をご覧ください。
  • このページで gcloud コマンドを使用するには、Google Cloud CLI をインストールします。

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

コンソール

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

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

    [リポジトリ] ページを開く

  2. ページの上部で、[第 1 世代] タブを選択します。

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

  4. プルダウン メニューから [Bitbucket データセンター] を選択します。

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

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

    1. リージョン: 接続のリージョンを選択します。

    2. 名前: 接続の名前を入力します。

    3. ホスト URL: Bitbucket データセンター インスタンスのホスト URL。例: https://bbs.example-test.com:7990

    4. Google Cloud API キー: 認証情報の認証に使用する API キーを入力します。

    5. CA 証明書: 自己署名証明書。証明書のサイズは 10 KB 以下の PEM 形式(.pem.cer、または .crt)にする必要があります。このセクションを空白のままにすると、Google Cloud はデフォルトの証明書セットの証明書を使用します。

    6. ユーザー名: Bitbucket データセンター アカウントのユーザー名。このアカウントには、Cloud Build に接続するリポジトリに対する管理者権限が必要です。

    7. 読み取りアクセス トークン: 読み取り権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークンを入力します。

    8. 管理者アクセス トークン: プロジェクトとリポジトリに対する管理者権限を持つ Bitbucket データセンター アカウントの個人用アクセス トークンを入力します。

    9. [ネットワークの種類] で、次のいずれかのオプションを選択します。

      1. 公共のインターネット: 公共のインターネットを使用してインスタンスにアクセスできる場合は、このオプションを選択します。

      2. プライベート ネットワーク: インスタンスがプライベート ネットワークでホストされている場合は、このオプションを選択します。

        1. プロジェクト: Google Cloud プロジェクト ID を選択します。

        2. ネットワーク: プルダウン メニューからネットワークを選択します。ネットワークを作成していない場合は、VPC ネットワークを作成して管理するでネットワークの作成方法を確認してください。

        3. IP 範囲: ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲を入力します。

          STARTING_IP/SUBNET_PREFIX_SIZE 形式のクラスレス ドメイン間ルーティング(CIDR)ルーティング表記を使用して範囲を指定できます。たとえば、192.0.2.0/24 の接頭辞長は 24 文字です。IP 範囲の最初の 24 ビットがサブネット マスク(192.0.2.0)として使用され、使用可能なホストアドレスの範囲は 192.0.2.0192.0.2.255 です。

          接頭辞長の値は /29 以下にしてください。範囲に値が指定されていない場合は、デフォルト値の /24 が自動的に割り当てられます。接頭辞長に値が指定されていない場合、ピアリングされた VPC ネットワーク内で IP アドレスが自動的に割り当てられます。IP アドレスに値が指定されていない場合、IP アドレスにはピアリングされる VPC ネットワーク内の範囲が自動的に割り当てられます。

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

    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 \
    --peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
    --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 ネットワークです。 詳細については、プライベート ネットワーク内の Bitbucket データセンターからリポジトリをビルドするをご覧ください。

  • 省略可: PEERED_NETWORK_IP_RANGE は、ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲です。

  • 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",
    "peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
    "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 ネットワークです。

    STARTING_IP/SUBNET_PREFIX_SIZE 形式のクラスレス ドメイン間ルーティング(CIDR)ルーティング表記を使用して範囲を指定できます。たとえば、192.0.2.0/24 の接頭辞長は 24 文字です。IP 範囲の最初の 24 ビットがサブネット マスク(192.0.2.0)として使用され、可能なホストアドレスの範囲は 192.0.2.0192.0.2.225 です。

  • 省略可: PEERED_NETWORK_IP_RANGE は、ピアリングされたネットワークの割り当て範囲内で VM を割り当てることができる内部 IP 範囲です。

  • 省略可: 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 はユーザーの Google 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 は Google Cloud プロジェクト番号です。
  • PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
  • REGION は、Bitbucket データセンターの構成に関連付けられたリージョンです。
  • OPERATION_ID は、Bitbucket データセンターの構成作成オペレーションの ID です。

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

次のステップ