この記事はなに?
Google App Engine
でdbt Docs
のページをホスティングしつつ、Github Actions から定期的に更新する手順をまとめた記事になります。
サービスアカウントの作成
Github Actions でデプロイする際に利用するサービスアカウントを作成します。
項目 | 設定値 |
---|---|
サービスアカウント名 | github-actions-app-engine-deploy |
ロール | App Engine 管理者 |
BigQuery ジョブユーザー | |
BigQuery データ閲覧者 | |
Cloud Build 編集者 | |
Storage オブジェクト管理者 | |
サービスアカウント ユーザー |
app.yml
の作成
dbt Docs
のページを開くには、dbt docs generate
コマンドを実行することで生成されるindex.html
、manifest.json
、catalog.json
が必要になります。
なお、dbt docs generate
コマンド自体は Github Actions で実行するため、事前にローカルでの実行は不要です。
runtime: python39
instance_class: F1
handlers:
- url: /
static_files: target/index.html
upload: target/index.html
- url: /manifest.json
static_files: target/manifest.json
upload: target/manifest.json
- url: /catalog.json
static_files: target/catalog.json
upload: target/catalog.json
GAE
のサービスの作成
app.yml
がある階層で、下記コマンドを実行して、GAE
のサービスを生成しておきます。
gcloud init
gcloud app deploy
Github Actions で動かすapp_engine_deploy.yml
の作成
下記の例では、日本時間の午前5時にデプロイするように設定しています。
また、認証用サービスアカウントのkey.json
をシークレットで設定した上で、呼び出すようにしています。
name: Deploy an App Engine app
on:
schedule:
- cron: '0 20 * * *'
workflow_dispatch:
permissions: write-all
jobs:
deplay-staging:
name: GAE deplay
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: main
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: {{ プロジェクト名を入力 }}
service_account_key: ${{ secrets.APP_ENGINE_DEPLOY_SA_KEY }}
export_default_credentials: true
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Install dbt
run: |
python -m pip install --upgrade pip
pip install dbt-core==1.3.0 dbt-bigquery==1.3.0 pytz
- name: dbt deps
run: |
dbt deps
- name: dbt docs generate
run: |
dbt docs generate
- name: Commit
run: |
git config user.name "github actions"
git config user.email "action@github.com"
git add -f target/index.html target/manifest.json target/catalog.json
git commit -a -m 'dbt docs generate'
git push origin ${{ github.event.inputs.ref }}
- name: Deploy an App Engine app
id: deploy-app
uses: google-github-actions/deploy-appengine@v0.3.1
with:
project_id: {{ プロジェクト名を入力 }}
deliverables: app.yaml
credentials: ${{ secrets.APP_ENGINE_DEPLOY_SA_KEY }}
version: v1
IAP の設定
GCP
にアクセスしIAP
のページを開きます。
デプロイしたGAE
のアプリを選択し、「プリンシパルを追加」からアクセスを許可したいプリンシパルを入力し、IAP-secured Web App User
のロールを付与して保存します。
反映に少し時間がかかるため5分ほど待った上で、デプロイしたGAE
のサービスURLにアクセスしてみましょう。
Google認証の画面が表示され、先程許可したプリンシパルのみアクセスが許可されていれば完了です。