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

このドキュメントでは、Dataform リポジトリをサードパーティのリモート Git リポジトリにリンクする方法について説明します。

リポジトリをリンクすると、Dataform 開発ワークスペースで行った変更をリモートの Git リポジトリに対して push および pull できるようになります。

Dataform リポジトリは、次の Git プロバイダでホストされているリモートの Git リポジトリにリンクできます。

  • Azure DevOps サービス

  • Bitbucket

  • GitHub

  • GitLab

サードパーティのリモート リポジトリを Dataform リポジトリにリンクするには、まず認証する必要があります。Dataform のリモート リポジトリを HTTPS または SSH で認証できます。

GitHub と GitLab のリモート リポジトリでは、認証に HTTPS または SSH を使用できます。Azure DevOps Services と Bitbucket リモート リポジトリでは、SSH を使用する必要があります。

準備

まだ作成していない場合は、Dataform リポジトリを作成します。 これは、後で Dataform サービス アカウントとシークレットを共有する際に必要になります。

必要なロール

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

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

HTTPS を使用してリモート リポジトリを認証する

HTTPS を使用して GitHub リポジトリと GitLab リポジトリを認証するには、個人用のアクセス トークンを使用して Secret Manager のシークレットを作成し、作成したシークレットを Dataform サービス アカウントと共有します。

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

GitHub リポジトリを認証するには、従来の個人用アクセス トークンまたはトークン権限をカスタマイズできるきめ細かい個人用アクセス トークンを作成します。

GitLab リポジトリを認証するには、従来の個人用アクセス トークンを作成します。

HTTPS を使用して Dataform の GitHub または GitLab リポジトリを認証するには、次の手順を行います。

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

  2. GitHub 個人アクセス トークンを作成する手順は次のとおりです。

    1. Dataform に repo 権限を付与します。

    2. トークンは、必要に応じて適切な有効期限に設定してください。

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

  3. 省略可: GitHub のきめ細かい個人用アクセス トークンを作成する場合は、次の手順を行います。

    1. 選択したリポジトリのみにアクセスするリポジトリを選択してから、接続するリポジトリを選択します。

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

    3. トークンは、必要に応じて適切な有効期限に設定してください。

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

  4. GitLab 個人アクセス トークンを作成するときは、次の手順を行います。

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

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

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

    3. トークンは、必要に応じて適切な有効期限に設定してください。

  5. Secret Manager で、Git プロバイダに接続するための個人用アクセス トークンを含む Secret を作成します。

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

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

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. アクセス権を付与する場合は、Dataform サービス アカウントに roles/secretmanager.secretAccessor ロールを付与してください。

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

SSH 経由でリモート リポジトリを認証する

SSH 認証鍵と Secret Manager のシークレットを生成することで、SSH を介して Azure DevOps Services、Bitbucket、GitHub、GitLab リポジトリを認証できます。

SSH 認証鍵は、公開 SSH 認証鍵と秘密 SSH 認証鍵で構成されています。Git プロバイダと共有 SSH 認証鍵を共有し、秘密 SSH 認証鍵を持つ Secret Manager シークレットを作成する必要があります。その後、シークレットを Dataform サービス アカウントと共有します。

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

SSH を介して Dataform の Azure DevOps Services、Bitbucket、GitHub、GitLab リポジトリを認証するには、次の手順に従います。

  1. Azure DevOps Services、Bitbucket、GitHub、GitLab で SSH 認証鍵を作成します。

  2. 公開 SSH 認証鍵をサードパーティの Git アカウントにアップロードします。

  3. Secret Manager で、秘密 SSH 認証鍵をシークレット値としてシークレットを作成します。

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

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

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. アクセス権を付与する場合は、Dataform サービス アカウントに roles/secretmanager.secretAccessor ロールを付与してください。

Dataform リポジトリの接続

Dataform リポジトリをリモートの Git リポジトリにリンクするには、次の手順に沿って操作します。

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

    Dataform に移動

  2. 接続するリポジトリを選択します。

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

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

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

    SSH 認証の場合、リモートの Git リポジトリの URL は次のいずれかの形式になります。

    • 絶対 URL: ssh://git@{host_name}[:{port}]/{repository_path}port は省略可能です。
    • SCP に似た URL: git@{host_name}:{repository_path}
  5. [Default remote branch name] フィールドに、リモートの Git リポジトリのメイン開発ブランチの名前を入力します。

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

  7. リモート リポジトリに SSH 認証を使用した場合は、[ホストの SSH 公開鍵の Key-Value] フィールドに、Git プロバイダのホストの公開鍵を入力します。

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

      ALGORITHM BASE64_KEY_VALUE
    
  8. リンク をクリックします。

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

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

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

    Dataform に移動

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

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

  4. [リモート リポジトリへのリンク] ペインで、次のいずれかのオプションを編集します。

    1. [リモートの Git リポジトリの URL] フィールドで、リンクされたリモート Git リポジトリの URL を編集します。

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

    2. [Default remote branch name] フィールドで、リモートの Git リポジトリのメイン開発ブランチの名前を編集します。

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

    4. リモート リポジトリに SSH 認証を使用した場合は、[ホストの SSH 公開鍵の Key-Value] フィールドに、Git プロバイダのホストの公開鍵を入力します。

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

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

次のステップ