Skip to content

Document how to release Crossplane extensions (providers, functions, etc.) #785

@negz

Description

@negz

What problem are you facing?

The function template repos (e.g. https://github.com/crossplane/function-template-go and https://github.com/crossplane/function-template-python) set up a GitHub Action named CI. Using the Action is optional, but it can help with releasing a new function. I think it would be useful to document a release branch pattern that function authors could choose to use.

How could this Function help solve your problem?

For the functions I maintain, I first setup a https://marketplace.upbound.io repository (docs at https://docs.upbound.io):

  1. Create an https://marketplace.upbound.io org and repository to match the function's GitHub org and repository. For example the org might be crossplane-contrib and the repository might be function-auto-ready.
  2. Create a team with permission to write to the repository.
  3. Create a robot and add it to the team.
  4. Create an API token for the robot
  5. Save the API token access ID as a GitHub Actions repository token named XPKG_ACCESS_ID.
  6. Save the API token as a GitHub Actions repository token named XPKG_TOKEN

Once these tokens are created the CI job will push a package for every PR merged to master, using a tag like v0.0.0-20231101115142-1091066df799 as described in crossplane/function-template-go#38.

Then, to cut a new minor version release the process is pretty simple. I:

  1. Create a new branch named (e.g.) release-0.2 using the GitHub UI.
  2. Create a new release named (e.g.) v0.2.0 using the GitHub UI, using the above branch. This creates a new tag.
  3. Manually trigger the CI workflow against the new tag (e.g. v0.2.0) and tell it to tag the package with the same tag.

Metadata

Metadata

Assignees

Labels

P1Must fix, critical issues. Frequent or wide-spread user impact.enhancementNew feature or requestfunctionsrelease

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions