Skip to content

Warning

You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?

dbt Cloud action

Actions
Runs a dbt Cloud Job specified by Job ID
v3.3
Star (26)

dbt Cloud action

This action lets you trigger a job run on dbt Cloud, fetches the run_results.json artifact, and git checkouts the branch that was ran by dbt Cloud.

Inputs

Required

  • dbt_cloud_token - dbt Cloud API token
  • dbt_cloud_account_id - dbt Cloud Account ID
  • dbt_cloud_job_id - dbt Cloud Job ID

Optional

  • cause - Cause message to use (Default="Triggered by a GitHub Action")
  • git_sha - The git SHA (e.g. commit) to checkout before running dbt Cloud Job. This refers to the state your repository is when running. (dbt API docs)
  • interval - The interval between polls in seconds (Default=30)

We recommend passing sensitive variables as GitHub secrets. Example usage.

Create your workflow

name: Run dbt cloud
on:
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: fal-ai/dbt-cloud-action@main
        id: dbt_cloud_run
        with:
          dbt_cloud_token: ${{ secrets.DBT_CLOUD_API_TOKEN }}
          dbt_cloud_account_id: ${{ secrets.DBT_CLOUD_ACCOUNT_ID }}
          dbt_cloud_job_id: ${{ secrets.DBT_CLOUD_JOB_ID }}

Use with fal

You can trigger a dbt Cloud run and it will download the artifacts to be able to run your fal run command easily in GitHub Actions.

You have to do certain extra steps described here:

name: Run dbt cloud and fal scripts
on:
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      # Checkout before downloading artifacts or setting profiles.yml
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - uses: fal-ai/dbt-cloud-action@main
        id: dbt_cloud_run
        with:
          dbt_cloud_token: ${{ secrets.DBT_CLOUD_API_TOKEN }}
          dbt_cloud_account_id: ${{ secrets.DBT_ACCOUNT_ID }}
          dbt_cloud_job_id: ${{ secrets.DBT_CLOUD_JOB_ID }}

      - name: Setup profiles.yml
        shell: python
        env:
          contents: ${{ secrets.PROFILES_YML }}
        run: |
          import yaml
          import os
          import io

          profiles_string = os.getenv('contents')
          profiles_data = yaml.safe_load(profiles_string)

          with io.open('profiles.yml', 'w', encoding='utf8') as outfile:
            yaml.dump(profiles_data, outfile, default_flow_style=False, allow_unicode=True)

      - uses: actions/setup-python@v2
        with:
          python-version: "3.9.x"

      - name: Install dependencies
        # Normally would install a `requirements.txt`.
        # This is to make it visible.
        run: |
          pip install dbt-bigquery
          pip install fal

      - name: Run fal scripts
        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
          SLACK_BOT_CHANNEL: ${{ secrets.SLACK_BOT_CHANNEL }}
        run: |
          # Move to the same code state of the dbt Cloud Job
          git checkout ${{ steps.dbt_cloud_run.outputs.git_sha }}
          # TODO: review target in passed profiles.yaml contents
          fal run --profiles-dir .

dbt Cloud action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Runs a dbt Cloud Job specified by Job ID
v3.3

dbt Cloud action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.