mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-10 00:10:20 +00:00
97 lines
3.1 KiB
Markdown
97 lines
3.1 KiB
Markdown
|
# Release Process
|
||
|
|
||
|
There are two types of release for the `go.opentelemetry.io/contrib` repo
|
||
|
and submodules.
|
||
|
|
||
|
1. **Case 1** A release due to changes independent of the
|
||
|
`go.opentelemetry.io/otel` module, e.g. perhaps a critical bug fix in
|
||
|
one of the contrib modules.
|
||
|
|
||
|
2. **Case 2** A release due to a breaking API change in
|
||
|
`go.opentelemetry.io/otel` which all modules in this repo
|
||
|
depend on.
|
||
|
|
||
|
## Pre-Release
|
||
|
|
||
|
Update go.mod for submodules to depend on the upcoming new release of
|
||
|
the module in this repo, `go.opentelemetry.io/contrib`. Decide on the
|
||
|
next version of the semantic tag to apply to the contrib
|
||
|
module based on whether you fall into Case 1 or Case 2.
|
||
|
|
||
|
### Case 1
|
||
|
|
||
|
If the changes are all internal to this repo, then the new tag will
|
||
|
most often be a patch or minor version upgrade to the existing tag on
|
||
|
this module. Let's call this `<new_contrib_tag>`.
|
||
|
|
||
|
### Case 2
|
||
|
|
||
|
If a new release is required due to breaking changes in
|
||
|
`go.opentelemetry.io/otel`, then the new semantic tag for this repo
|
||
|
should be bumped to match the `go.opentelemetry.io/otel` new tag.
|
||
|
Let's call this `<new_otel_tag>`. The script checks that
|
||
|
`go.opentelemetry.io/otel@v<new_otel_tag>` is a valid tag, so you need
|
||
|
to wait until that tag has been pushed in the main repo.
|
||
|
|
||
|
In nearly all cases, `<new_contrib_tag>` should be the same as
|
||
|
`<new_otel_tag>`.
|
||
|
|
||
|
1. Run `pre_release.sh` script to create a branch `pre_release_<new_contrib_tag>`.
|
||
|
The script will also run `go mod tidy` and `make ci`.
|
||
|
|
||
|
* **Case 1** `./pre_release.sh -t <new_contrib_tag>`
|
||
|
* **Case 2** `./pre_release.sh -o <new_otel_tag> [-t <new_contrib_tag>]`
|
||
|
|
||
|
2. If you used `-o <new_otel_tag>` to rewrite the modules to depend on
|
||
|
a new version of `go.opentelemetry.io/otel`, there will likely be
|
||
|
breaking changes that require fixes to the files in this
|
||
|
`contrib` repo. Make the appropriate fixes to address any API
|
||
|
breaks and run through the
|
||
|
|
||
|
```
|
||
|
git commit -m "fixes due to API changes"
|
||
|
make precommit
|
||
|
```
|
||
|
|
||
|
cycle until everything passes
|
||
|
|
||
|
4. Push the changes to upstream.
|
||
|
|
||
|
```
|
||
|
git diff main
|
||
|
git push
|
||
|
```
|
||
|
|
||
|
5. Create a PR on github and merge the PR once approved.
|
||
|
|
||
|
|
||
|
### Tag
|
||
|
Now create a `<new_contrib_tag>` on the commit hash of the changes made in pre-release step,
|
||
|
|
||
|
1. Run the tag.sh script.
|
||
|
|
||
|
```
|
||
|
./tag.sh <new_contrib_tag> <commit-hash>
|
||
|
```
|
||
|
2. Push tags upstream. Make sure you push upstream for all the sub-module tags as well.
|
||
|
|
||
|
```
|
||
|
git push upstream <new_contrib_tag>
|
||
|
git push upstream <submodules-path/new_contrib_tag>
|
||
|
...
|
||
|
```
|
||
|
|
||
|
## Release
|
||
|
Now create a release for the new `<new_contrib_tag>` on github.
|
||
|
The release body should include all the release notes in the Changelog for this release.
|
||
|
Additionally, the `tag.sh` script generates commit logs since last release which can be used to suppliment the release notes.
|
||
|
|
||
|
<!-- ## Verify Examples -->
|
||
|
<!-- After releasing run following script to verify that examples build outside of the otel repo. -->
|
||
|
<!-- The script copies examples into a different directory and builds them. -->
|
||
|
|
||
|
<!-- ``` -->
|
||
|
<!-- ./verify_examples.sh -->
|
||
|
<!-- ``` -->
|
||
|
|