From 9e622f74f84eb02d6f92470e0cfadfacad610d0e Mon Sep 17 00:00:00 2001 From: winnie <91998347+gwenwindflower@users.noreply.github.com> Date: Sun, 7 Apr 2024 19:17:57 -0500 Subject: [PATCH] Add staging CD jobs (#23) Adds GHAs to call the Staging Deploy jobs for BQ and SF on merge to `staging`. This supports the change to make Staging the default branch in Jaffle Shop (already done), and completes the process of getting us to the following state: - :bridge_at_night: **Feature branches branch off Staging** - :sunrise: **Feature branches are PR'd against Staging** and run CI jobs via API call across all active adapters (currently SF and BQ) in the Staging Environment - :new: **PRs are merged into Staging**, kicking off a CD build job in Staging (our default build command is `dbt build --exclude "resource_type:seed" because seeds are depended on as a source, and running a regular build will create a race condition where some models beat their source seeds into the warehouse and cause failing tests) - :rocket: **When we're ready for a Jaffle Shop Release we merge Staging into Main** kicking off CD jobs via API call in the Prod Environment across all active adapters - :nerd_face: **Dev Environments in dbt Cloud auto defer to Staging**, as we've set that up as a Staging Environment in Cloud --------- Co-authored-by: Winnie Winship Co-authored-by: dave-connors-3 <73915542+dave-connors-3@users.noreply.github.com> --- .github/workflows/ci.yml | 3 +- .github/workflows/prod_cd.yml | 55 ++++++++++++++++++++++++++++++++ .github/workflows/staging_cd.yml | 55 ++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/prod_cd.yml create mode 100644 .github/workflows/staging_cd.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8dd9c014..b86ea3f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,10 @@ -name: Run dbt Cloud CI job +name: dbt Cloud CI on: pull_request: branches: - main + - staging jobs: run_snowflake: diff --git a/.github/workflows/prod_cd.yml b/.github/workflows/prod_cd.yml new file mode 100644 index 00000000..c85d98f3 --- /dev/null +++ b/.github/workflows/prod_cd.yml @@ -0,0 +1,55 @@ +name: dbt Cloud Deploy + +on: + push: + branches: + - main + +jobs: + run_snowflake: + name: dbt Cloud Deploy Prod Snowflake + runs-on: macos-latest + + env: + DBT_ACCOUNT_ID: 188483 + DBT_PROJECT_ID: 283328 + DBT_PR_JOB_ID: 409009 + DBT_API_KEY: ${{ secrets.DBT_CLOUD_API_KEY }} + DBT_JOB_CAUSE: "GitHub Actions Request" + DBT_JOB_BRANCH: main + + steps: + - uses: "actions/checkout@v4" + - uses: "actions/setup-python@v5" + with: + python-version: "3.12" + - name: Install uv + run: python3 -m pip install uv + - name: Install deps + run: uv pip install -r requirements.txt --system + - name: Run dbt Cloud job + run: python3 .github/workflows/scripts/dbt_cloud_run_job.py + + run_bigquery: + name: dbt Cloud Deploy Prod BigQuery + runs-on: macos-latest + + env: + DBT_ACCOUNT_ID: 188483 + DBT_PROJECT_ID: 275557 + DBT_PR_JOB_ID: 553247 + DBT_API_KEY: ${{ secrets.DBT_CLOUD_API_KEY }} + DBT_JOB_CAUSE: "GitHub Actions Request" + DBT_JOB_BRANCH: main + + steps: + - uses: "actions/checkout@v4" + - uses: "actions/setup-python@v5" + with: + python-version: "3.12" + - name: Install uv + run: python3 -m pip install uv + - name: Install deps + run: uv pip install -r requirements.txt --system + - name: Run dbt Cloud job + run: python3 .github/workflows/scripts/dbt_cloud_run_job.py diff --git a/.github/workflows/staging_cd.yml b/.github/workflows/staging_cd.yml new file mode 100644 index 00000000..e1cf2325 --- /dev/null +++ b/.github/workflows/staging_cd.yml @@ -0,0 +1,55 @@ +name: dbt Cloud Deploy Staging + +on: + push: + branches: + - staging + +jobs: + run_snowflake: + name: dbt Cloud Deploy Staging Snowflake + runs-on: macos-latest + + env: + DBT_ACCOUNT_ID: 188483 + DBT_PROJECT_ID: 283328 + DBT_PR_JOB_ID: 565266 + DBT_API_KEY: ${{ secrets.DBT_CLOUD_API_KEY }} + DBT_JOB_CAUSE: "GitHub Actions Request" + DBT_JOB_BRANCH: main + + steps: + - uses: "actions/checkout@v4" + - uses: "actions/setup-python@v5" + with: + python-version: "3.12" + - name: Install uv + run: python3 -m pip install uv + - name: Install deps + run: uv pip install -r requirements.txt --system + - name: Run dbt Cloud job + run: python3 .github/workflows/scripts/dbt_cloud_run_job.py + + run_bigquery: + name: dbt Cloud Deploy Staging BigQuery + runs-on: macos-latest + + env: + DBT_ACCOUNT_ID: 188483 + DBT_PROJECT_ID: 275557 + DBT_PR_JOB_ID: 560539 + DBT_API_KEY: ${{ secrets.DBT_CLOUD_API_KEY }} + DBT_JOB_CAUSE: "GitHub Actions Request" + DBT_JOB_BRANCH: main + + steps: + - uses: "actions/checkout@v4" + - uses: "actions/setup-python@v5" + with: + python-version: "3.12" + - name: Install uv + run: python3 -m pip install uv + - name: Install deps + run: uv pip install -r requirements.txt --system + - name: Run dbt Cloud job + run: python3 .github/workflows/scripts/dbt_cloud_run_job.py