github.com/instana/go-sensor@v1.62.2-0.20240520081010-4919868049e1/RELEASE.md (about)

     1  Release Steps
     2  =============
     3  
     4  All release steps rely on Github Actions.
     5  If you do not have permission to run Github actions into this repository, please request it so.
     6  
     7  > Make sure to have all your changes merged into the main branch before proceeding to a release.
     8  
     9  ## Release Types
    10  
    11  The Instana Go Tracer consists of three distinguished release types:
    12  
    13  1. Release of the core module, aka `go-sensor`
    14  1. Release of an instrumented package. Eg: `instrumentation/instagin`
    15  1. Release of all instrumented packages updated for using the latest core
    16  
    17  Each of these releases are described below:
    18  
    19  ### Core Module Release
    20  
    21  The core module needs to be released in a couple of cases:
    22  
    23  1. 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.
    24  1. 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.
    25  
    26  Steps to release the core module:
    27  
    28  1. Go to the [repository actions](https://github.com/instana/go-sensor/actions)
    29  1. Click on [Go Tracer Release](https://github.com/instana/go-sensor/actions/workflows/release.yml)
    30  1. On the right side of the page, click on `Run workflow`
    31  1. Keep the default branch `main`
    32  1. Keep the default package as `.`
    33  1. Select `minor` or `patch` according to the version type you want to release
    34  1. If you want to review the release and manually release it, keep the checkbox `Release as a draft?`
    35     * If you keep it as a draft, you will have to go to the [releases page](https://github.com/instana/go-sensor/releases) and publish the release
    36     * If you uncheck the `Release as a draft?` box, the release will take place
    37  
    38  ### Package Release
    39  
    40  An instrumented package needs to be released when a new instrumentation is introduced or if an existing package is updated.
    41  
    42  The steps to release an instrumented package is nearly the same as the core module:
    43  
    44  1. Go to the [repository actions](https://github.com/instana/go-sensor/actions)
    45  1. Click on [Go Tracer Release](https://github.com/instana/go-sensor/actions/workflows/release.yml)
    46  1. On the right side of the page, click on `Run workflow`
    47  1. Keep the default branch `main`
    48  1. 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 write `instaredigo/v2`. If an nonexisting package is provided the workflow will fail.
    49  1. Select `major`, `minor` or `patch` according to the version type you want to release
    50  1. If you want to review the release and manually release it, keep the checkbox `Release as a draft?`
    51     1. If you keep it as a draft, you will have to go to the releases page and publish the release
    52     1. If you uncheck the `Release as a draft?` box, the release will be published automatically
    53  
    54  > 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 packages
    55  >
    56  > For 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.
    57  
    58  ### Updated Packages Release
    59  
    60  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.
    61  
    62  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.
    63  
    64  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.
    65  
    66  It is your responsibility to check the success of this pull request and manually fix any potential issues in it.
    67  Once the pull request is successful and reviewed by the team, it can be merged into the main branch.
    68  
    69  When the pull request is merged into the main branch an action `Release all updated instrumentations` will be automatically triggered to release all packages.
    70  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.