Bitbucket Server ホストに接続する

このページでは、Bitbucket Server ホストを Cloud Build に接続する方法について説明します。Bitbucket Server ホストに接続すると、Bitbucket Server リポジトリが Cloud Build と統合されます。これにより、Bitbucket Server からリポジトリをビルドするようにビルドトリガーを構成したり、プライベート ネットワークで Bitbucket Server からリポジトリをビルドするようにビルドトリガーを構成したりできます。

始める前に

  • Enable the Cloud Build, Secret Manager, and Compute Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

必要な IAM 権限

Bitbucket Server ホストに接続するために必要な権限を取得するには、ユーザー アカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Bitbucket Server インスタンスがプライベート ネットワークでホストされている場合は、プライベート ネットワークで Bitbucket Server からリポジトリをビルドするを参照して、ホスト接続の構成に必要な追加の IAM ロールを確認してください。

個人用アクセス トークンを作成する

Bitbucket Server インスタンスのホスト接続を作成する前に、次の手順で Bitbucket Server に個人用アクセス トークンを作成します。

  1. Bitbucket Server インスタンスにログインします。

  2. 手順に沿って、ユーザー アカウントの HTTP アクセス トークンを作成します。

    1. スコープがリポジトリ管理者のアクセス トークンを作成し、リポジトリの接続と切断に使用します。

    2. スコープがリポジトリの読み取りのアクセス トークンを作成して、Cloud Build リポジトリがリポジトリ内のソースコードにアクセスできるようにします。

  3. トークン値を安全に保存します。これらのトークンを使用して、Bitbucket Server リポジトリに接続します。

Bitbucket Server ホストに接続する

コンソール

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

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

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

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

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

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

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

    Bitbucket Server インスタンスを Cloud Build に接続するには、次の情報を入力します。

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

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

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

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

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

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

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

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

    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.0 から 192.0.2.255 です。

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

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

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

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

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

gcloud

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

gcloud alpha builds enterprise-config bitbucketserver create
    --name=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

ここで

  • CONFIG_NAME は、Bitbucket Server 構成の名前です。
  • USERNAME は、Bitbucket Server のユーザー名です。
  • HOST_URI は、Bitbucket Server インスタンスのホスト 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 Server インスタンスに接続する VPC ネットワークです。詳細については、プライベート ネットワークの Bitbucket Server からリポジトリをビルドするをご覧ください。

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

  • SSL_CA_FILE は、Bitbucket Server へのリクエストに使用する SSL 証明書を含むローカル ファイルのパスです。証明書は PEM 形式にする必要があります。

API

API を使用して Bitbucket Server ホストを 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 Server インスタンスのホスト URI です。
  • USERNAME は、Bitbucket Server のユーザー名です。
  • 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 Server インスタンスにピアリングする VPC ネットワークです。

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

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

  • 省略可: SSL_CERTIFICATE は、オンプレミスの Bitbucket Server インスタンスに使用される 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=CONFIG_NAME -d @config.json

ここで

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

成功すると、レスポンスの本文には新しく作成された 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 Server 構成に関連付けられたリージョンです。
  • OPERATION_ID は、Bitbucket Server 構成の作成オペレーションの ID です。

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

次のステップ