このドキュメントでは、リモート リポジトリを 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
- Azure DevOps Services で、秘密 SSH 認証鍵を作成します。
- Azure DevOps Services リポジトリに公開 SSH 認証鍵をアップロードします。
Bitbucket
- Bitbucket でSSH 秘密鍵を作成します。
- Bitbucket リポジトリに公開 SSH 認証鍵をアップロードします。
GitHub
- GitHub で SSH 秘密鍵を作成します。
- GitHub 公開 SSH 認証鍵をアップロードします。
GitLab
- GitLab で秘密の 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 プロバイダのホストの公開鍵を入力します。
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
のエントリをご覧ください。[リンク] をクリックします。
HTTPS を介してリモート リポジトリを接続する
HTTPS 経由でリモート リポジトリを接続するには、個人用のアクセス トークンを使用して Secret Manager のシークレットを作成し、そのシークレットをデフォルトの Dataform サービス アカウントと共有する必要があります。
Dataform は、アクセス トークンを使用して Git プロバイダにログインし、デベロッパーに代わって変更を commit します。Dataform では、デベロッパーの Google Cloud メールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。
HTTPS を介してリモート リポジトリを Dataform リポジトリに接続するには、次の手順に沿って操作します。
Git プロバイダで次の操作を行います。
GitHub
GitHub で、きめ細かい個人用アクセス トークンまたは従来の個人用アクセス トークンを作成します。
- GitHub のきめ細かい個人アクセス トークンの場合は、次の操作を行います。
選択したリポジトリのみへのリポジトリ アクセスを選択し、接続するリポジトリを選択します。
リポジトリの内容に対する読み取り / 書き込みアクセス権を付与します。
ニーズに応じてトークンの有効期限を設定します。
- 従来の GitHub の個人用アクセス トークンの場合は、次の操作を行います。
Dataform に
repo
権限を付与します。ニーズに応じてトークンの有効期限を設定します。
組織で SAML シングル サインオン(SSO)を使用している場合は、トークンを承認します。
GitLab
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 のトラブルシューティングをご覧ください。