前回は、Databricks ReposとGitHubを連携しました。お互いのリポジトリを連携させることで、GitHubで更新したノートブックなどを素早くAzureのDatabricks上で実行することができます。しかし、その同期は手動で実行していました。
そこで、今回はGitHubリポジトリを更新したら自動でその変更内容をDatabricks Reposへ反映させていきます。
実現方法
開発環境でノートブックなどを更新してGitHubにpushしたら、GitHub Actionsを用いてDatabricks APIを叩き、Databricks Reposに更新した内容をpullします。
前提条件
以下の記事を参考にDatabricks ReposとGithubのリポジトリの連携設定を予め行ってください。後程の説明は、両者のリポジトリが連携できている前提で進めていきます。
設定
Datanricks用のアクセストークンの生成
GitHub ActionsからDatabricks APIを叩くための認証情報を準備します。今回は開発を想定していますので、Databricks上の個人ユーザーでアクセストークンを利用します。
AzureのDatabricksワークスペースにログインしたら、右上のUser SettingsからDeveloperを選択します。その後Access TokenのManageをクリックします。あとはコメントに使用目的を記載し、有効期間を設定して生成します。この時トークンが表示されるためメモしておきます。
GitHub Actionsの設定
続いてGitHub Actionsの設定を行います。まずは、pushしたときにパイプラインが実行するように設定します(on: [push])。
続いてパイプライン処理の中でDatabricks Reposを更新するAPIを叩きます。API実行時はReposのIDが必要になりますので、事前にGet Repos APIなどを用いてIDを取得しておきます。
API実行には、「JamesIves/fetch-api-data-action@v2」を使用しています。Authorizationヘッダーに先ほど生成したアクセストークンを設定します。トークン自体はGitHubのシークレットに登録しています。またbodyにはブランチ名をしてします。
name: databricks
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: change git
uses: JamesIves/fetch-api-data-action@v2
with:
endpoint: https://<Databricks URL>/api/2.0/repos/<Databricks Repos ID>
configuration: '{ "method": "PATCH", "headers": {"Authorization": "Bearer ${{ secrets.DATABRICKS_ACCESS_TOKEN }}"}, "body": {"branch": "main"} }'
以上で設定は完了です。あとは適当にノートブックを更新してGitHubにpushします。すると、パイプラインが起動して、GitHubにpushした内容がDatabricks Reposにも反映されます。
まとめ
GitHub Actionsを利用して、変更内容を自動的にDatabricks Reposへ反映させてみました。開発中は作成・デプロイ・実行・修正を幾度も繰り返すことになるため、自動化は欠かせません。自動化可能な部分はなるべく自動化して効率的に開発していきましょう。
コメント