🐕

GitHub Actionsでdbtを定期実行する ことはじめ

2023/03/23に公開

はじめに

dbt cliを使用していると定期実行をどのように実装するか悩むのかなと思います。実行方法は数多ありますが、今回はシンプルなGitHub Actionsを使用していきます。

やりたいこと

  • dbt の models 配下のクエリをGitHub Actionsを使用して定期実行したい

コード

name: schedule_dbt_job

on:
   workflow_dispatch:
  
   schedule:
       # run at 7AM every single day
       # https://crontab.guru <-- for generating CRON expression
       - cron: "0 7 * * *"
jobs:
   schedule_dbt_job:
       name: schedule_dbt_job
       runs-on: ubuntu-latest

       steps:
       - name: Check out
         uses: actions/checkout@master

       - uses: actions/setup-python@v1
         with:
           python-version: "3.8.x"

       - name: Install dependencies
         run: |
            pip install dbt-snowflake
            python3 -m pip install --upgrade pip

       - name: set profiles
         run: |
            mkdir ~/.dbt
            cat << EOF > ~/.dbt/profiles.yml
            dbt_demo:
              target: dev
              outputs:
                dev:
                  type:      snowflake
                  account:   ${{ secrets.SF_ACCOUNT }}
                  database:  ${{ secrets.SF_DATABASE }}
                  warehouse: ${{ secrets.SF_WAREHOUSE }}
                  schema:    ${{ secrets.SF_SCHEMA }}
                  role:      ${{ secrets.SF_ROLE }}
                  threads:   8
                  user:      ${{ secrets.SF_USERNAME }}
                  password:  ${{ secrets.SF_PASSWORD }}
            EOF
            cat ~/.dbt/profiles.yml

       # dbt related commands here - run use --target prod/dev to run for specific environments
       - name: Run dbt models
         working-directory: dbt_demo
         run: |
            dbt debug
            dbt run

課題

今後は下記を主に改善したいです

  • profiles.ymlに書き込む内容をsecretsを使用したい
    • 解決済み) secretsの設定で可能
  • profiles.ymlの認識がうまくいっておらず、exportで一時対応をしていることを解決したい
    • 解決済み) プロジェクトは配下にサンプルのprofiles.ymlを置いていたためそちらを見に行っていた
  • dbt docsをgithub pagesでホストしたい
  • 監視周りも組み込んでいきたい

対象レポジトリ

Discussion