Bitbucket Server リポジトリに接続する

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

準備

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

    Enable the APIs

Bitbucket Server リポジトリに接続する

コンソール

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

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

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

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

  3. [リポジトリを接続] をクリックします。

  4. [Bitbucket Server] を選択します。

    [リポジトリを接続] パネルが表示されます。Bitbucket Server リポジトリを接続するには、次の手順を行います。

    1. [リージョン]: 接続が存在するリージョンを選択します。

    2. [ソースコード管理プロバイダの選択] で [Bitbucket Server] を選択します。

    3. [ホスト接続]: プルダウン メニューからホスト接続の名前を選択します。

    4. [続行] をクリックします。

    5. [リポジトリを選択] で、Cloud Build に接続する Bitbucket Server リポジトリを選択します。

    6. Bitbucket Server アカウントとリポジトリを選択したら、同意の免責条項を読み、横にあるチェックボックスをオンにして、提示された利用規約に同意することを表明します。

    7. [接続] をクリックして、リポジトリを接続します。

    リポジトリが接続されると、Cloud Build は Bitbucket Server インスタンスのリポジトリに Webhook を構成します。次に、リポジトリを変更したときに、リポジトリは対応する Bitbucket Server トリガーを呼び出す Webhook を送信します。1 つのリポジトリを複数のホスト接続で複数回接続することもできます。Webhook の管理方法については、Webhook を管理するをご覧ください。

    Webhook を見つけるには、Webhook ID が必要です。接続した各リポジトリの Webhook ID は、BitbucketServerConfig で確認できます。

    次のコマンドを入力して、Webhook ID を取得します。

      gcloud alpha builds enterprise-config bitbucketserver describe CONFIG_NAME  --region=REGION
    

    ここで

    • CONFIG_NAME は、Bitbucket Server 構成の名前です。
    • REGION は、Bitbucket Server ホスト接続のリージョンです。
  5. [完了] をクリックします。必要に応じて [トリガーを作成する] をクリックして、トリガーを作成します。

API

API を使用して Bitbucket Server リポジトリを Cloud Build に接続するには、次の手順を行います。

  1. 次の JSON テンプレートを使用してリポジトリを接続します。

    {
      "parent": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
      "requests": {
        "parent": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
       "bitbucketServerConnectedRepository": {
          "parent": "projects/PROJECT_NUMBER/locations/REGION/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME",
          "repo": {
            "projectKey": "PROJECT_KEY",
            "repoSlug": "REPO_SLUG"
           }
         }
      }
    }
    

    ここで

    • PROJECT_NUMBER は Cloud プロジェクトのプロジェクト番号です。
    • REGION は、Bitbucket Server 構成に関連付けられたリージョンです。
    • BITBUCKET_SERVER_CONFIG_NAME は、Bitbucket Server 構成の名前です。
    • PROJECT_KEY は、Bitbucket Server プロジェクトのキーです。 個人用リポジトリを接続する場合、プロジェクト キーは、ユーザー名の前にチルダ(~)記号が含まれている必要があります。例: ~${USERNAME}ホスト リポジトリの完全な URL は、「https://${HOST_URI}/projects/~${USER_NAME}/repos/${REPO_SLUG}」のようになります。
    • REPO_SLUG は、Bitbucket Server リポジトリのスラッグです。
  2. ターミナルで、次の 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/REGION/bitbucketServerConfigs/BITBUCKET_SERVER_CONFIG_NAME/connectedRepositories:batchCreate -d @requests.json
    

    ここで

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

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

  3. ターミナルで、次の 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 Server 構成に関連付けられたリージョンです。
    • OPERATION_ID は、Bitbucket Server 構成の作成オペレーションの ID です。オペレーション ID は、レスポンスの name フィールドで確認できます。レスポンスの name フィールドの形式は次のようになります。projects/project-id/locations/region/operations/operation-id

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

次のステップ