
DataformのサードパーティーGitリポジトリ接続機能を試してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部の鈴木です。
Dataformでは以下のドキュメントに記載のように、GitHubのようなサードパーティーのGitリポジトリと連携する機能があります。今回はこの機能を使ってみたのでご紹介します。
前提
今回はGitHubのプライベートリポジトリに接続してみました。
また、Dataform側のリポジトリは、以下のブログで既に作成してあるものを使ってみました。この記事ではDataformにリポジトリを作成し、QuickStartに紹介されている定義を作成・実行し、リポジトリにもcommitしていました。
つまり、既にいくつかのcommitがあるワークスペースを含むリポジトリをGitHubに新しく接続設定するとどうなるのかを中心に確認しました。
参考にしたドキュメント
冒頭でも掲載した、以下のConnect to a third-party Git repositoryを参考に進めました。
最後に、接続したリポジトリにローカルから新しい定義を追加して、Dataformのリポジトリにpullし、BigQueryにテーブルを作成できるかについても試してみました。
やってみる
1. GitHub側の設定
まず検証用のGitHubアカウントでプライベートリポジトリを作成しました。

続いて、SettingsのDeveloper settingsからPersonal access tokens (classic)を払い出しました。

今回、scopesはrepoにチェックを入れました。

なお、personal access tokenの作成については以下のガイドに詳しく説明があるので併せてご覧ください。
また、Dataformとしては、Create and share a secretの項目に、classic personal access tokenとfine-grained personal access tokenの両方が使えることがドキュメントに記載されています。
2. シークレットの作成
続いてGoogle CloudのコンソールからSecret Managerを開き、シークレットを作成を押しました。なお、Secret Manager APIが有効化されていない場合は先に有効化する作業が入ります。

名前と先ほど生成したトークンを入力し、ほかはデフォルト設定のままシークレットを作成を押しました。

3. Dataformサービスアカウントからのアクセス権付与
IAMと管理のアクセス件の付与から、サービスアカウントへシークレットへのアクセス権の付与を行いました。

ロールはSecret Manager のシークレット アクセサーを付与しています。

なお、この作業は以前のブログのサービスアカウントへのアクセス権限追加でも類似の作業をしています。
4. 接続設定
Dataformのコンソールで接続したいリポジトリを開きました。

※ 検証当日は既にDataformがGAされたアナウンスがされていましたが、画面上はプレビューと出ています。
SETTINGSタブを開き、GITと接続を押しました。

リモートリポジトリへのリンクに、作成したGitリポジトリのURLと、デフォルトのブランチ名、作成したpersonal access tokenを設定したシークレットを入力し、リンクを押しました。

Successfully linked to remote Git repositoryと表示され、接続設定が完了したことを確認できました。

5. DataformのリポジトリからGitHubのリポジトリへのコードの連携
事前に作成していたワークスペースであるquickstart-workspaceから、どのようにGitHubにコードを共有できるか確認しました。
三点リーダーを押すと、先ほど接続したリポジトリへ資源を共有するためのオプションがあることが分かりました。

まず今回の接続作業実施時には、まだcommitしていない変更があったのでcommitしました。
すると、PULL FROM DEFAULT BRANCHと表示されたのでクリックしてみました。
`
その後、PUSH TO REMOTE BRANCHと表示されたのでクリックしてみました。

最後にOPEN REPOSITORY TO CREATE PRと表示が変わったのでGitHubのリポジトリを見に行きました。

ワークスペースと同じ名前のブランチが作成されていました。

後は普通にPRを作成すれば、Dataformで行った修正をGitHub側のデフォルトブランチにマージできました。前回の記事で作成したcommitも確かに含まれていました。

6. GitHubのリポジトリからDataformのリポジトリへのコードの連携
続いて、GitHubのリポジトリからDataformのリポジトリ(特に先述したquickstart-workspaceワークスペース)にもコードの連携ができるか試してみました。
作成したGitHubのリポジトリをローカルにcloneして、新しいテーブル定義を作成してみました。

GitHubにpushして、PRを作成し、マージしました。

次にDataformの画面でquickstart-workspaceワークスペースを開き、デフォルトブランチからpullを押してみました。

このようにワークスペースに変更を持ってくることができました。

最後に、この定義を指定してアクションを実行してみました。

テーブルが作成できました。

最後に
今回は、ドキュメントを参考に、GitHubのリポジトリとDataformのリポジトリを接続してコードをどのように共有できるのか確認してみました。
既にDataformのリポジトリ側で定義を作っていても、GitHubのリポジトリと連携ができることも確認できました。
また、GitHubのリポジトリからDataformのリポジトリに新しい定義をpullしてBigQueryにテーブルを作成できることも分かりました。
今回試した内容が分かっていれば、テーブル定義などはVSCodeなど各自が慣れた開発ツールで開発をしてGitHubに連携し、デプロイはDataformのリポジトリに共有してBigQueryに反映することもできますね。
参考になりましたら幸いです。






