Skip to content

Release to Cloud off of main #17

Release to Cloud off of main

Release to Cloud off of main #17

# What?
#
# Tag and release an arbitrary ref. Uploads to an internal archive for further processing.
#
# How?
#
# After checking out and testing the provided ref, the image is built and uploaded.
#
# When?
#
# Manual trigger or cron job every wednesday morning.
name: "Release to Cloud"
run-name: "Release to Cloud off of ${{ inputs.ref }}"
on:
workflow_dispatch:
inputs:
ref:
description: "The ref (sha or branch name) to use"
type: string
default: "main"
required: true
package_test_command:
description: "Package test command"
type: string
default: "python -c \"import dbt.adapters.bigquery\""
required: true
skip_tests:
description: "Should the tests be skipped? (default to false)"
type: boolean
required: true
default: false
schedule:
- cron: '0 13 * * 3' # Every Wednesday at 8:00 AM central time
defaults:
run:
shell: bash
jobs:
get-last-successful-release-run:
runs-on: ubuntu-latest
outputs:
commit_sha: ${{ steps.get_last_successful_release_run.outputs.commit_sha }}
steps:
- name: Get last successful Release to Cloud run details
id: get_last_successful_release_run
run: |
last_run_url=$(curl --silent -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/actions/runs?event=workflow_dispatch&status=success&branch=main&workflow_file=release-internal.yml" | jq -r '.workflow_runs[0].url')
echo "Last run URL: $last_run_url"
commit_sha=$(curl --silent -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" $last_run_url | jq -r '.head_sha')
echo "Commit SHA: $commit_sha"
echo "::set-output name=commit_sha::$commit_sha"
check-for-new-commits:
runs-on: ubuntu-latest
needs: get-last-successful-release-run
outputs:
latest_commit_sha: ${{ steps.check_new_commits.outputs.latest_commit_sha }}
has_new_commits: ${{ steps.check_new_commits.outputs.has_new_commits }}
steps:
- name: Check for new commits since last Release to Cloud run
id: check_new_commits
run: |
last_commit_sha=${{ needs.get-last-successful-release-run.outputs.commit_sha }}
echo "Last successful commit SHA: $last_commit_sha"
latest_commit_sha=$(git rev-parse ${{ inputs.ref }})
echo "Latest commit SHA: $latest_commit_sha"
if [ "$last_commit_sha" != "$latest_commit_sha" ]; then
echo "::set-output name=has_new_commits::true"
else
echo "::set-output name=has_new_commits::false"
fi
echo "::set-output name=latest_commit_sha::$latest_commit_sha"
invoke-reusable-workflow:
if: needs.check-for-new-commits.outputs.has_new_commits == 'true'
name: "Build and Release Internally"
uses: "dbt-labs/dbt-release/.github/workflows/internal-archive-release.yml@main"
with:
package_test_command: "${{ inputs.package_test_command }}"
dbms_name: "bigquery"
ref: "${{ inputs.ref }}"
skip_tests: "${{ inputs.skip_tests }}"
secrets: inherit