Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add docker release to the full release process for final releases #51

Merged
merged 50 commits into from
May 20, 2024
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
3048bfc
add docker release to release pipeline
mikealfare Apr 5, 2024
4d9292f
changelog
mikealfare Apr 5, 2024
db3d70e
changelog
mikealfare Apr 5, 2024
7f240c0
update dependabot to include Docker
mikealfare Apr 10, 2024
acf410d
Merge branch 'refs/heads/main' into config/docker-release
mikealfare Apr 13, 2024
938fc07
update to align with other docker release pipelines
mikealfare Apr 13, 2024
8ae7fc0
removed defaulted input for docker package
mikealfare Apr 15, 2024
9862ed6
point back to main
mikealfare Apr 15, 2024
6b935b2
remove changie entry
mikealfare Apr 15, 2024
619641f
add github release
mikealfare Apr 16, 2024
858e994
add github release
mikealfare Apr 16, 2024
5323d3f
add github release
mikealfare Apr 16, 2024
41f665c
add github release
mikealfare Apr 16, 2024
07eb152
add release prep workflow
mikealfare Apr 16, 2024
5af9942
add release prep workflow to release workflow
mikealfare Apr 16, 2024
a8b0048
Merge branch 'main' into config/docker-release
mikealfare Apr 16, 2024
94b8d3c
fix core team workflow ref
mikealfare Apr 16, 2024
0a41a9f
Merge remote-tracking branch 'origin/config/docker-release' into conf…
mikealfare Apr 16, 2024
eb8d083
fix workflow ref
mikealfare Apr 16, 2024
41f4864
pass secrets to release prep workflow
mikealfare Apr 16, 2024
f2c63dc
pass secrets to release prep workflow
mikealfare Apr 16, 2024
ddb29b6
allow for only docker release, don’t release docker when deploying to…
emmyoop Apr 17, 2024
45952e7
Update docker/Dockerfile
mikealfare Apr 26, 2024
0d0a074
Merge branch 'refs/heads/main' into config/docker-release
mikealfare Apr 26, 2024
41ef500
Merge branch 'refs/heads/main' into config/docker-release
mikealfare May 2, 2024
a7497e3
sync with main
mikealfare May 2, 2024
5be5dba
clean up test script
mikealfare May 2, 2024
e67d140
pull branch through to release workflow
mikealfare May 2, 2024
1ece62d
remove sha from workflow
mikealfare May 2, 2024
3a0fb25
fix concurrency id
mikealfare May 2, 2024
4ab3ecd
fix action reference
mikealfare May 2, 2024
35515ed
fix action reference
mikealfare May 2, 2024
de47a33
add postgres setup to integration tests
mikealfare May 2, 2024
793f5d9
Merge branch 'main' into config/docker-release
mikealfare May 3, 2024
e7e61df
Merge branch 'main' into config/docker-release
mikealfare May 13, 2024
25790ff
Merge branch 'main' into config/docker-release
mikealfare May 13, 2024
0530d96
Merge branch 'main' into config/docker-release
mikealfare May 14, 2024
e1fd3ef
remove owner portion from repo name
mikealfare May 14, 2024
ebe2b5f
skip pypi and github release when docker only
mikealfare May 14, 2024
527871a
Merge branch 'main' into config/docker-release
mikealfare May 14, 2024
63c82e1
point docker release to dev branch for now
mikealfare May 14, 2024
45a024a
Merge remote-tracking branch 'origin/config/docker-release' into conf…
mikealfare May 14, 2024
9cde4cf
fix release branch logic
mikealfare May 14, 2024
3291829
fix repository name reference
mikealfare May 14, 2024
acc1df4
fix branch references
mikealfare May 14, 2024
6a39cbd
point everything back to main
mikealfare May 15, 2024
2931917
Merge branch 'main' into config/docker-release
mikealfare May 15, 2024
1e7ad5b
adding some requested docs
mikealfare May 20, 2024
26b6332
Merge remote-tracking branch 'origin/config/docker-release' into conf…
mikealfare May 20, 2024
201f3e2
remove unused script
mikealfare May 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,8 @@ updates:
schedule:
interval: "weekly"
rebase-strategy: "disabled"
- package-ecosystem: "docker"
directory: "/docker"
schedule:
interval: "weekly"
rebase-strategy: "disabled"
VersusFacit marked this conversation as resolved.
Show resolved Hide resolved
113 changes: 81 additions & 32 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,60 +3,109 @@ name: Release
on:
workflow_dispatch:
inputs:
deploy-to:
type: choice
description: Choose where to publish (test/prod)
options:
- prod
- test
default: prod
ref:
description: "The ref (sha or branch name) to use"
branch:
description: "The branch to release from"
type: string
default: "main"
version:
description: "The version to release"
required: true
type: string
deploy-to:
description: "Deploy to test or prod"
type: environment
default: prod
VersusFacit marked this conversation as resolved.
Show resolved Hide resolved
only_docker:
description: "Only release Docker image, skip GitHub & PyPI"
type: boolean
default: false
mikealfare marked this conversation as resolved.
Show resolved Hide resolved

permissions: read-all
permissions:
contents: write # this is the permission that allows creating a new release

# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }}-${{ inputs.deploy-to }}
group: "${{ github.workflow }}-${{ github.event_name }}-${{ inputs.version }}-${{ inputs.deploy-to }}"
VersusFacit marked this conversation as resolved.
Show resolved Hide resolved
cancel-in-progress: true

jobs:
release:
name: PyPI - ${{ inputs.deploy-to }}
runs-on: ubuntu-latest
environment:
name: ${{ inputs.deploy-to }}
url: ${{ vars.PYPI_PROJECT_URL }}
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
release-prep:
name: "Release prep: generate changelog, bump version"
uses: dbt-labs/dbt-postgres/.github/workflows/release_prep_hatch.yml@config/docker-release
with:
branch: ${{ inputs.branch }}
version: ${{ inputs.version }}
deploy-to: ${{ inputs.deploy-to }}
secrets: inherit

build-release:
name: "Build release"
needs: release-prep
runs-on: ubuntu-latest
outputs:
archive-name: ${{ steps.archive.outputs.name }}
steps:
- name: Check out repository
- name: "Checkout ${{ github.repository.name }}@${{ inputs.branch }}"
uses: actions/checkout@v4
with:
ref: ${{ needs.release-prep.outputs.release-branch }}
persist-credentials: false
ref: "${{ inputs.ref }}"

- name: Setup `hatch`
- name: "Setup `hatch`"
uses: dbt-labs/dbt-adapters/.github/actions/setup-hatch@main

- name: Inputs
id: release-inputs
- name: "Set archive name"
id: archive
run: |
version=$(hatch version)
archive_name=dbt-postgres-$version-${{ inputs.deploy-to }}
echo "archive-name=$archive_name" >> $GITHUB_OUTPUT
archive_name=${{ github.repository.name }}-${{ inputs.version }}-${{ inputs.deploy-to }}
echo "name=$archive_name" >> $GITHUB_OUTPUT

- name: Build `dbt-postgres`
- name: "Build ${{ github.repository.name }}"
uses: dbt-labs/dbt-adapters/.github/actions/build-hatch@main
with:
archive-name: ${{ steps.release-inputs.outputs.archive-name }}
archive-name: ${{ steps.archive.outputs.name }}

- name: Publish to PyPI
pypi-release:
name: "PyPI release"
if: ${{ !failure() && !cancelled() && !inputs.only_docker }}
runs-on: ubuntu-latest
needs: build-release
environment:
name: ${{ inputs.deploy-to }}
url: ${{ vars.PYPI_PROJECT_URL }}
permissions:
id-token: write # this permission is required for trusted publishing
VersusFacit marked this conversation as resolved.
Show resolved Hide resolved
steps:
- name: "Publish to PyPI"
uses: dbt-labs/dbt-adapters/.github/actions/publish-pypi@main
with:
pypi-repository-url: ${{ vars.PYPI_REPOSITORY_URL }}
archive-name: ${{ steps.release-inputs.outputs.archive-name }}
repository-url: ${{ vars.PYPI_REPOSITORY_URL }}
archive-name: ${{ needs.build-release.outputs.archive-name }}

github-release:
name: "GitHub release"
if: ${{ !failure() && !cancelled() && !inputs.only_docker }}
needs:
- build-release
- release-prep
uses: dbt-labs/dbt-adapters/.github/workflows/github-release.yml@main
with:
sha: ${{ needs.release-prep.outputs.release-sha }}
version_number: ${{ inputs.version }}
changelog_path: ${{ needs.release-prep.outputs.changelog-path }}
test_run: ${{ inputs.deploy-to == 'test' }}
archive_name: ${{ needs.build-release.outputs.archive-name }}

docker-release:
name: "Docker release"
# We cannot release to docker on a test run because it uses the tag in GitHub as
# what we need to release but draft releases don't actually tag the commit so it
# finds nothing to release
if: ${{ !failure() && !cancelled() && (inputs.deploy-to == 'prod' || inputs.only_docker) }}
VersusFacit marked this conversation as resolved.
Show resolved Hide resolved
needs: github-release # docker relies on the published tag from github-release
permissions:
packages: write # this permission is required for publishing to GHCR
uses: dbt-labs/dbt-release/.github/workflows/release-docker.yml@latest-wrangler-new-docker
mikealfare marked this conversation as resolved.
Show resolved Hide resolved
with:
version_number: ${{ inputs.version }}
test_run: ${{ inputs.deploy-to == 'test' }}
Loading
Loading