Skip to content
Carl Henrik Lunde edited this page Feb 14, 2026 · 1 revision

Welcome to the provider-sql wiki!

Release Process for provider-sql

Overview

provider-sql follows semantic versioning with a v prefix (e.g. v0.14.0). Releases are published to:

  • Upbound Marketplace: xpkg.upbound.io/crossplane-contrib/provider-sql
  • GitHub Container Registry (GHCR): via the publish-provider-package.yml workflow
  • GitHub Releases: manual release with changelog

Pre-release checklist

Before starting a release, verify all of the following:

  • All intended PRs are merged to master
  • CI is green on master — check Actions > CI (lint, unit tests, e2e tests, check-diff all pass)
  • No open issues or PRs tagged for this milestone/release
  • Dependency updates (Dependabot PRs) are reviewed — merge or defer as appropriate
  • go.sum and generated code are up to date (make generate and make modules.download modules.check produce no diff)
  • Examples in examples/ work with the current code (spot-check if significant changes were made)
  • New features are covered by unit or e2e tests
  • Check what is not covered by dependabot: Go version, build submodule version

Step-by-step release process

Step 1: Determine the version number

Check the latest tag:

git describe --tags --abbrev=0

Decide the next version based on what changed since the last release:

git log $(git describe --tags --abbrev=0)..HEAD --oneline

Use v-prefix. For pre-releases (e.g. v0.15.0-rc.0), it will not be visible in Unbound Marketplace.

Step 2: Create the git tag

Use the Tag GitHub Actions workflow:

  1. Go to Actions > Tag
  2. Click "Run workflow"
  3. Fill in:
    • Branch: master
    • version: the version string, e.g. v0.15.0
    • message: a short tag message, e.g. Release v0.15.0
  4. Click "Run workflow"

If a tag has been created via git commands, that is fine too.

Step 3: Write the changelog

  1. Go to Releases > Draft a new release
  2. Choose a tag: select the tag you just created (e.g. v0.15.0)
  3. Release title: v0.15.0
  4. Description: paste the changelog from Step 2
  5. For pre-releases (e.g. v0.15.0-rc.0), check "Set as a pre-release"
  6. Click "Publish release"

Review all commits since the last release:

git log $(git describe --tags --abbrev=0)..HEAD --oneline

Changelog structure (follow the format from previous releases):

Brief summary of the release — highlight the most important changes and link to
relevant docs (e.g. marketplace page, examples directory).

## What's Changed
* Short description of feature/fix by @author in https://github.com/crossplane-contrib/provider-sql/pull/NNN
* Short description of feature/fix by @author in https://github.com/crossplane-contrib/provider-sql/pull/NNN

## Significant bumps
* chore: bump important-dependency from x.y.z to a.b.c by @dependabot[bot] in #NNN

## Build changes
* Description of CI/build changes by @author in #NNN

## Dependabot
* chore: bump minor-dependency from x.y.z to a.b.c by @dependabot[bot] in #NNN

## New Contributors
* @username made their first contribution in #NNN

**Full Changelog**: https://github.com/crossplane-contrib/provider-sql/compare/vOLD...vNEW

Tips for a good changelog:

  • Lead with a 1-3 sentence summary of what's important in this release
  • Group changes by category: features/fixes first, then significant dependency bumps (which is could change the behaviour of the code), then build changes, then routine Dependabot bumps
  • Link to the marketplace page: https://marketplace.upbound.io/providers/crossplane-contrib/provider-sql/vX.Y.Z
  • If there are breaking changes or migration steps, put them at the top in a dedicated section

GitHub can auto-generate a starting point:

Step 4: Publish the provider package

Run the Publish Provider Package workflow to build and push the Crossplane package to GHCR (and mirror to XPKG):

  1. Go to Actions > Publish Provider Package
  2. Click "Run workflow"
  3. Fill in:
    • Branch: master (or the tag/ref, e.g. v0.15.0)
    • version: the version string, e.g. v0.15.0 (leave blank to auto-detect from git)
    • go-version: leave as default (1.24) unless you have a reason to change it
  4. Click "Run workflow"
  5. Wait for the workflow to complete (~10 minutes)

What this does: Builds the Crossplane provider package (xpkg) and pushes it to:

  • ghcr.io/crossplane-contrib/provider-sql:v0.15.0
  • xpkg.upbound.io/crossplane-contrib/provider-sql:v0.15.0 (mirrored)

Step 7: Post-release verification

Pre-release / Release candidate process

For pre-releases (e.g. v0.15.0-rc.0):

  1. Follow the same steps above, but use a pre-release version string (e.g. v0.15.0-rc.0)
  2. When creating the GitHub Release, mark it as pre-release
  3. Pre-releases are useful for testing before a final release

Hotfix / patch release process

If you need to release a patch on an older minor version:

  1. Create a release branch from the tag: git checkout -b release-0.14 v0.14.0
  2. Cherry-pick the fix commits onto the release branch
  3. Push the release branch: git push upstream release-0.14
  4. CI runs automatically on release-* branches
  5. Use the Tag workflow targeting the release-0.14 branch
  6. Follow steps 3-4 above as normal

Quick reference

What Where
Tag workflow Actions > Tag
CI workflow Actions > CI
Publish workflow Actions > Publish Provider Package
GitHub Releases Releases
Upbound Marketplace provider-sql
GHCR packages Packages
Versioning Semantic versioning with v prefix