Bitbucket Server ホストに接続する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

準備

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

    API を有効にする

設定

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

API キーの取得

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

API キーを取得するには:

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

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

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

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

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

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

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

必要な IAM 権限

GitHub Enterprise ホストに接続するには、Cloud Build 編集者(roles/cloudbuild.builds.editorロールとCloud Build 統合オーナー(cloudbuild.integrations.ownerロールをユーザー アカウントに付与します。

必要なロールをユーザー アカウントに追加するには、Cloud Build リソースへのアクセスの構成をご覧ください。Cloud Build に関係する IAM ロールについて詳しくは、IAM ロールと権限をご覧ください。

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

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

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

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

Bitbucket Server ホストへの接続

コンソール

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

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

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

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

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

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

    • Host URL: Bitbucket Server インスタンスのホスト URL。例: https://bbs.example-test.com:7990
    • Google Cloud API キー: 認証情報の認証に使用する API キー。
    • [省略可] CA 証明書: 自己署名証明書。証明書のサイズは 10 KB 以下の PEM 形式(.pem.cer、または .crt)にする必要があります。このセクションを空白のままにすると、デフォルトの証明書のセットが使用されます。

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

    • 読み取りアクセス トークン: 読み取り権限を持つ Bitbucket Server アカウントの個人用アクセス トークン。

    • 管理者アクセス トークン: プロジェクトとサーバー リポジトリに対する管理者権限を持つ Bitbucket Server アカウントの個人アクセス トークン。

    • [省略可] ネットワーク プロジェクト: オンプレミス ネットワークのネットワーク プロジェクト ID。

    • [省略可] ネットワーク名: オンプレミス ネットワークのネットワーク名。

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

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

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

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

gcloud

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

gcloud alpha builds enterprise-config bitbucketserver create
    --name=BITBUCKET_SERVER_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_SERVER_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 ネットワークです。
  • 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,
      "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 ネットワークです。

  • [省略可] 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"  -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/global/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json

ここで

  • PROJECT_NUMBER は Cloud プロジェクト番号です。
  • PROJECT_ID は Cloud プロジェクト ID です。
  • 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/global/operations/OPERATION_ID

ここで

  • PROJECT_NUMBER は Cloud プロジェクト番号です。
  • PROJECT_ID は Cloud プロジェクト ID です。
  • OPERATION_ID は、Bitbucket Server 構成作成オペレーションの ID です。

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

次のステップ