サードパーティの Git リポジトリに接続する

このドキュメントでは、リモート リポジトリを Dataform リポジトリに接続する方法について説明します。リポジトリを接続すると、Dataform 開発ワークスペースで行った変更をリモートの Git リポジトリに対して push および pull できるようになります。

HTTPS または SSH 経由でリモート リポジトリを接続できます。

次の表に、サポートされている Git プロバイダと、そのリポジトリで使用できる接続方法を示します。

Git プロバイダ 接続方法
Azure DevOps Services SSH
Bitbucket SSH
GitHub SSH または HTTPS
GitLab SSH または HTTPS

始める前に

  1. 組織またはプロジェクトで dataform.restrictGitRemotes 組織のポリシーを使用してリモートの Git リポジトリを制限している場合は、リモート リポジトリに接続する Dataform リポジトリを作成する前に、リモートの Git リポジトリがポリシーの許可リストに追加されていることを確認してください。詳細については、リモート リポジトリを制限するをご覧ください。
  2. Dataform リポジトリの作成または選択。後で デフォルトの Dataform サービス アカウントとシークレットを共有する際に必要になります。

必要なロール

Dataform リポジトリをリモートの Git リポジトリに接続するために必要な権限を取得するには、リポジトリに対する Dataform 管理者 roles/dataform.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

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

SSH 経由でリモート リポジトリに接続する

SSH 経由でリモート リポジトリを接続するには、SSH 認証鍵と Secret Manager のシークレットを生成する必要があります。SSH 認証鍵は公開 SSH 認証鍵と秘密 SSH 認証鍵で構成されます。公開 SSH 認証鍵を Git プロバイダと共有し、秘密 SSH 認証鍵を使用して Secret Manager シークレットを作成する必要があります。次に、デフォルトの Dataform サービス アカウントとシークレットを共有します。

Dataform は秘密 SSH 認証鍵のシークレットを使用して Git プロバイダにログインし、デベロッパーの代わりに変更を commit します。Dataform では、デベロッパーの Google Cloud メールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。

SSH を介してリモート リポジトリを Dataform リポジトリに接続するには、次の手順に沿って操作します。

  1. Git プロバイダで、次の操作を行います。

    Azure DevOps Services

    1. Azure DevOps Services で、秘密 SSH 認証鍵を作成します
    2. Azure DevOps Services リポジトリに公開 SSH 認証鍵をアップロードします

    Bitbucket

    1. Bitbucket でSSH 秘密鍵を作成します。
    2. Bitbucket リポジトリに公開 SSH 認証鍵をアップロードします。

    GitHub

    1. GitHub で SSH 秘密鍵を作成します。
    2. GitHub 公開 SSH 認証鍵をアップロードします。

    GitLab

    1. GitLab で秘密の SSH 認証鍵を作成します。
    2. GitLab リポジトリに GitLab の公開 SSH 認証鍵をアップロードします。
  2. Secret Manager でシークレットを作成し、秘密 SSH 認証鍵をシークレット値として設定します。

    1. Dataform サービス アカウントにシークレットへのアクセス権を付与します

      デフォルトの Dataform サービス アカウントの形式は次のとおりです。

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    2. サービス アカウントに roles/secretmanager.secretAccessor ロールを付与します。

  3. Google Cloud コンソールの [Dataform] ページに移動します。

    Dataform に移動

  4. リモート リポジトリに接続する Dataform リポジトリを選択します。

  5. リポジトリ ページで、[設定] > [Git と接続] の順にクリックします。

  6. [リモート リポジトリへのリンク] ペインの [リモートの Git リポジトリの URL] フィールドに、リモート Git リポジトリの URL を入力し、最後に .git を付けます。

    リモート Git リポジトリの URL は、次のいずれかの形式にする必要があります。

    • 絶対 URL: ssh://git@{host_name}[:{port}]/{repository_path}port は省略可。
    • SCP のような URL: git@{host_name}:{repository_path}
  7. [デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメイン開発ブランチの名前を入力します。

  8. [Secret] プルダウンで、リモートの Git リポジトリのシークレットを選択します。

  9. [ホストの SSH 公開鍵の Key-Value] フィールドに、Git プロバイダのホストの公開鍵を入力します。

    Azure DevOps Services

    SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。 この値には、次の形式で、base64 形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。

    ALGORITHM BASE64_KEY_VALUE
    

    Azure DevOps Services のホストの公開鍵を取得するには、ターミナルで ssh-keyscan -t rsa ssh.dev.azure.com コマンドを実行します。

    Bitbucket

    SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。 この値には、次の形式で、base64 形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。

    ALGORITHM BASE64_KEY_VALUE
    

    Bitbucket の公開鍵を取得するには、SSH を構成するをご覧ください。

    GitHub

    SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。 この値には、次の形式で、base64 形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。

    ALGORITHM BASE64_KEY_VALUE
    

    GitHub のホストの公開鍵を取得するには、GitHub の SSH 認証鍵のフィンガープリントをご覧ください。

    GitLab

    SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。 この値には、次の形式で、base64 形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。

    ALGORITHM BASE64_KEY_VALUE
    

    GitLab のホストの公開鍵を取得するには、SSH known_hosts のエントリをご覧ください。

  10. [リンク] をクリックします。

HTTPS を介してリモート リポジトリを接続する

HTTPS 経由でリモート リポジトリを接続するには、個人用のアクセス トークンを使用して Secret Manager のシークレットを作成し、そのシークレットをデフォルトの Dataform サービス アカウントと共有する必要があります。

Dataform は、アクセス トークンを使用して Git プロバイダにログインし、デベロッパーに代わって変更を commit します。Dataform では、デベロッパーの Google Cloud メールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。

HTTPS を介してリモート リポジトリを Dataform リポジトリに接続するには、次の手順に沿って操作します。

  1. Git プロバイダで次の操作を行います。

    GitHub

    1. GitHub で、きめ細かい個人用アクセス トークンまたは従来の個人用アクセス トークンを作成します。

      • GitHub のきめ細かい個人アクセス トークンの場合は、次の操作を行います。
      1. 選択したリポジトリのみへのリポジトリ アクセスを選択し、接続するリポジトリを選択します。

      2. リポジトリの内容に対する読み取り / 書き込みアクセス権を付与します。

      3. ニーズに応じてトークンの有効期限を設定します。

      • 従来の GitHub の個人用アクセス トークンの場合は、次の操作を行います。
      1. Dataform に repo 権限を付与します。

      2. ニーズに応じてトークンの有効期限を設定します。

    2. 組織で SAML シングル サインオン(SSO)を使用している場合は、トークンを承認します。

    GitLab

    1. GitLab で、GitLab 個人用アクセス トークンを作成します。

    2. トークンに dataform という名前を付けます。

      GitLab の個人用アクセス トークンの名前は dataform にする必要があります。

    3. Dataform に apiread_repositorywrite_repository の権限を付与します。

    4. 必要に応じてトークンの有効期限を設定します。

  2. Secret Manager で、リモート リポジトリの個人アクセス トークンを含むシークレットを作成します。

  3. Dataform サービス アカウントにシークレットへのアクセス権を付与します

    デフォルトの Dataform サービス アカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. サービス アカウントに roles/secretmanager.secretAccessor ロールを付与します。
  4. Google Cloud コンソールの [Dataform] ページに移動します。

    Dataform に移動

  5. リモート リポジトリに接続する Dataform リポジトリを選択します。

  6. リポジトリ ページで、[設定] > [Git と接続] の順にクリックします。

  7. [リモート リポジトリへのリンク] ペインの [リモートの Git リポジトリの URL] フィールドに、リモート Git リポジトリの URL を入力し、最後に .git を付けます。

    リモート Git リポジトリの URL にユーザー名やパスワードを含めることはできません。

  8. [デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメインの開発ブランチの名前を入力します。

  9. [Secret] プルダウンで、リモートの Git リポジトリのシークレットを選択します。

  10. [リンク] をクリックします。

リモート リポジトリ接続を編集する

Dataform リポジトリとリモートの Git リポジトリ間の接続を編集するには、次の手順を行います。

  1. Google Cloud コンソールの [Dataform] ページに移動します。

    Dataform に移動

  2. 編集するリポジトリをクリックします。

  3. リポジトリ ページで、[設定] > [Git 接続を編集] の順にクリックします。

  4. [リモート リポジトリへのリンク] ペインで、接続設定を編集します。

  5. [更新] をクリックします。

次のステップ