このドキュメントでは、リモート リポジトリを Dataform リポジトリに接続する方法について説明します。リポジトリを接続すると、Dataform 開発ワークスペースで行った変更をリモートの Git リポジトリに対して push および pull できるようになります。
リモート リポジトリには、HTTPS または SSH 経由で接続できます。
次の表に、サポートされている Git プロバイダと、そのリポジトリで使用できる接続方法を示します。
Git プロバイダ | 接続方法 |
---|---|
Azure DevOps Services | SSH |
Bitbucket | SSH |
GitHub | SSH または HTTPS |
GitLab | SSH または HTTPS |
始める前に
- 組織またはプロジェクトで
dataform.restrictGitRemotes
組織のポリシーを使用してリモートの Git リポジトリを制限している場合は、リモート リポジトリに接続する Dataform リポジトリを作成する前に、リモートの Git リポジトリがポリシーの許可リストに追加されていることを確認してください。詳細については、リモート リポジトリを制限するをご覧ください。 - 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 リポジトリに接続する手順は次のとおりです。
Git プロバイダで次の操作を行います。
- Azure DevOps Services で SSH 秘密鍵を作成します。
- Azure DevOps Services リポジトリに 公開 SSH 認証鍵をアップロードします。
- GitHub で SSH 秘密鍵を作成します。
- Bitbucket リポジトリに 公開 SSH 認証鍵をアップロードします。
- GitHub で SSH 秘密鍵を作成します。
- GitHub リポジトリに GitHub の公開 SSH 認証鍵をアップロードします。
- GitHub で SSH 秘密鍵を作成します。
- GitLab リポジトリに GitLab の公開 SSH 認証鍵をアップロードします。
Secret Manager でシークレットを作成し、秘密 SSH 認証鍵をシークレット値として設定します。
Dataform サービス アカウントにシークレットへのアクセス権を付与します。
デフォルトの Dataform サービス アカウントの形式は次のとおりです。
service-
PROJECT_NUMBER @gcp-sa-dataform.iam.gserviceaccount.comサービス アカウントに
roles/secretmanager.secretAccessor
ロールを付与します。
Google Cloud コンソールの [Dataform] ページに移動します。
リモート リポジトリに接続する Dataform リポジトリを選択します。
リポジトリ ページで、[設定] > [Git と接続] の順にクリックします。
[リモート リポジトリへのリンク] ペインの [リモートの Git リポジトリの URL] フィールドに、リモート Git リポジトリの URL を入力し、最後に
.git
を付けます。リモート Git リポジトリの URL は、次のいずれかの形式にする必要があります。
- 絶対 URL:
ssh://git@{host_name}[:{port}]/{repository_path}
、port
は省略可。 - SCP のような URL:
git@{host_name}:{repository_path}
。
- 絶対 URL:
[デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメインの開発ブランチの名前を入力します。
[Secret] プルダウンで、リモートの Git リポジトリのシークレットを選択します。
[ホストの SSH 公開鍵の Key-Value] フィールドに、Git プロバイダのホストの公開鍵を入力します。
SSH 公開鍵の値は
known_hosts
ファイルの形式にする必要があります。 この値には、次の形式で、base64
形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。ALGORITHM BASE64_KEY_VALUE Azure DevOps Services のホストの公開鍵を取得するには、ターミナルで
ssh-keyscan -t rsa ssh.dev.azure.com
コマンドを実行します。SSH 公開鍵の値は
known_hosts
ファイルの形式にする必要があります。 この値には、次の形式で、base64
形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。ALGORITHM BASE64_KEY_VALUE Bitbucket の公開鍵を取得するには、SSH を構成するをご覧ください。
SSH 公開鍵の値は
known_hosts
ファイルの形式にする必要があります。 この値には、次の形式で、base64
形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。ALGORITHM BASE64_KEY_VALUE GitHub のホストの公開鍵を取得するには、GitHub の SSH 認証鍵のフィンガープリントをご覧ください。
SSH 公開鍵の値は
known_hosts
ファイルの形式にする必要があります。 この値には、次の形式で、base64
形式でエンコードされたアルゴリズムと公開鍵が含まれている必要があります。ただし、ホスト名や IP は不要です。ALGORITHM BASE64_KEY_VALUE GitLab のホストの公開鍵を取得するには、SSH
known_hosts
のエントリをご覧ください。[リンク] をクリックします。
HTTPS 経由でリモート リポジトリに接続する
HTTPS 経由でリモート リポジトリに接続するには、個人用アクセス トークンを使用して Secret Manager のシークレットを作成し、デフォルトの Dataform サービス アカウントとシークレットを共有する必要があります。
Dataform は、アクセス トークンを使用して Git プロバイダにログインし、デベロッパーに代わって変更を commit します。Dataform では、デベロッパーのメールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。 Google Cloud
HTTPS 経由でリモート リポジトリを Dataform リポジトリに接続する手順は次のとおりです。
Git プロバイダで次の操作を行います。
GitHub で、きめ細かい個人用アクセス トークンまたは従来の個人用アクセス トークンを作成します。
- きめ細かい GitHub 個人アクセス トークンの場合は、次の操作を行います。
選択したリポジトリのみへのリポジトリ アクセスを選択し、接続するリポジトリを選択します。
リポジトリの内容に対する読み取り / 書き込みアクセス権を付与します。
ニーズに応じてトークンの有効期限を設定します。
- 従来の GitHub 個人アクセス トークンの場合は、次の操作を行います。
Dataform に
repo
権限を付与します。ニーズに応じてトークンの有効期限を設定します。
組織で SAML シングル サインオン(SSO)を使用している場合は、トークンを承認します。
GitLab で GitLab の個人用アクセス トークンを作成します。
トークンに
dataform
という名前を付けます。GitLab の個人用アクセス トークンの名前は
dataform
にする必要があります。Dataform に
api
、read_repository
、write_repository
の権限を付与します。ニーズに応じてトークンの有効期限を設定します。
Secret Manager で、リモート リポジトリの個人アクセス トークンを含むシークレットを作成します。
Dataform サービス アカウントにシークレットへのアクセス権を付与します。
デフォルトの Dataform サービス アカウントの形式は次のとおりです。
service-
PROJECT_NUMBER @gcp-sa-dataform.iam.gserviceaccount.com- サービス アカウントに
roles/secretmanager.secretAccessor
ロールを付与します。
- サービス アカウントに
Google Cloud コンソールの [Dataform] ページに移動します。
リモート リポジトリに接続する Dataform リポジトリを選択します。
リポジトリ ページで、[設定] > [Git と接続] の順にクリックします。
[リモート リポジトリへのリンク] ペインの [リモートの Git リポジトリの URL] フィールドに、リモート Git リポジトリの URL を入力し、最後に
.git
を付けます。リモート Git リポジトリの URL にユーザー名やパスワードを含めることはできません。
[デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメインの開発ブランチの名前を入力します。
[Secret] プルダウンで、リモートの Git リポジトリのシークレットを選択します。
[リンク] をクリックします。
リモート リポジトリ接続を編集する
Dataform リポジトリとリモートの Git リポジトリ間の接続を編集する手順は次のとおりです。
Google Cloud コンソールの [Dataform] ページに移動します。
編集するリポジトリをクリックします。
リポジトリ ページで、[設定] > [Git 接続を編集] の順にクリックします。
[リモート リポジトリへのリンク] ペインで、接続設定を編集します。
[更新] をクリックします。
次のステップ
Dataform リポジトリの詳細については、リポジトリを作成するをご覧ください。
開発ワークスペースを作成するには、ワークスペースを作成するをご覧ください。
リモート リポジトリ接続に関する問題のトラブルシューティング方法については、Dataform のトラブルシューティングをご覧ください。