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 を送信します。リポジトリは、複数のホスト接続で複数回接続することもできます。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 フィールドで詳細なエラーレポートを確認してください。

次のステップ