All release steps rely on Github Actions. If you do not have permission to run Github actions into this repository, please request it so.
Make sure to have all your changes merged into the main branch before proceeding to a release.
The Instana Go Tracer consists of three distinguished release types:
- Release of the core module, aka
go-sensor
- Release of an instrumented package. Eg:
instrumentation/instagin
- Release of all instrumented packages updated for using the latest core
Each of these releases are described below:
The core module needs to be released in a couple of cases:
- When a new feature or improvement is made into the core. This basically means any change made in the root of the project that affects Go files.
- When a new span is created. This will be needed if a new instrumentation is on the way and the span type is new, and needs to reside in the core module, according to the current design of the tracer.
Steps to release the core module:
- Go to the repository actions
- Click on Go Tracer Release
- On the right side of the page, click on
Run workflow
- Keep the default branch
main
- Keep the default package as
.
- Select
minor
orpatch
according to the version type you want to release - If you want to review the release and manually release it, keep the checkbox
Release as a draft?
- If you keep it as a draft, you will have to go to the releases page and publish the release
- If you uncheck the
Release as a draft?
box, the release will take place
An instrumented package needs to be released when a new instrumentation is introduced or if an existing package is updated.
The steps to release an instrumented package is nearly the same as the core module:
- Go to the repository actions
- Click on Go Tracer Release
- On the right side of the page, click on
Run workflow
- Keep the default branch
main
- Type the name of the package you want to release. Eg:
instagin
. You only add extra information when you want to release a different major version other than v1. In that case, suppose you want to release v2 of instaredigo, then writeinstaredigo/v2
. If an nonexisting package is provided the workflow will fail. - Select
major
,minor
orpatch
according to the version type you want to release - If you want to review the release and manually release it, keep the checkbox
Release as a draft?
- If you keep it as a draft, you will have to go to the releases page and publish the release
- If you uncheck the
Release as a draft?
box, the release will be published automatically
For releases done by the
Go Tracer Release
action that are not drafts, the workflow will automatically post the release in the Slack channel and will update https://pkg.go.dev website with the latest version of the packagesFor releases done by the
Go Tracer Release
action that are drafts, both the Slack post and https://pkg.go.dev website update will happen after the release is manually published.
When a new package is instrumented, it will import the latest core by the time the instrumentation was done. This means that when new versions of the core module is released, this package will be outdated with latest changes from the core.
We want to keep instrumented packages up to date with the latest core module as much as we can, so a Github Action was created for this.
Every time the core module is released via the Go Tracer Release
action, as a draft or not, it will create a pull request prefixed as update-instrumentations-core
with all the instrumented packages updated to import the new version of the core module.
It is your responsibility to check the success of this pull request and manually fix any potential issues in it. Once the pull request is successful and reviewed by the team, it can be merged into the main branch.
When the pull request is merged into the main branch an action Release all updated instrumentations
will be automatically triggered to release all packages.
It will also update the https://pkg.go.dev website, but it won't post each package into the Slack channel to prevent flooding the channel.