Release 0.41.0rc1
### Information about the release
#### Relevant series
stable
#### Main reason driving the release
[GitLab 16.3](#1188), which is a landmark version for migrations
### Task list
- py-heptapod: if there are changes to include in the relevant branch
(`default`, `stable` or `oldstable`).
Don't forget changesets from stabler branches.
+ [x] merge stabler branches into the branch to release and run a pipeline
to check them (fast)
+ [x] set the version in `heptapod/VERSION`, commit
+ [x] run `$python setup.py sdist and `push to PyPI with
[twine](https://twine.readthedocs.io/en/latest/)
+ [x] tag accordingly to the pushed version
+ [x] set a new development version in `heptapod/VERSION`, commit
+ [x] push and publish these three changesets
- HGitaly: if there are changes to include in the relevant branch
(`default`, `stable` or `oldstable`).
Don't forget changesets from stabler branches.
+ [x] merge stabler branches into the branch to release and run a pipeline
to check them (fast)
+ [x] set the version in `hgitaly/VERSION`
+ [x] if there are changes in Mercurial-specific protocol, regenerate the
Ruby library (this sets the appropriate version) and publish the resulting
gem. See `ruby/README.md` for details.
+ [x] commit
+ [x] run `$python setup.py sdist and `push to PyPI with
[twine](https://twine.readthedocs.io/en/latest/)
+ [x] tag accordingly to the pushed version (`hg tag 1.2.3`)
+ [x] set a new development version in `hgitaly/VERSION`,
such as `1.2.4dev0` (no dot for proper interpretation by the
Rails app);
commit
+ [x] push and publish these three changesets
+ [ ] check that the tag pipeline passed and pushed the RHGitaly source tarball to
[download.h.n](https://download.heptapod.net/rhgitaly).
- Heptapod Shell: again, if needed which is more than likely of
Heptapod x.y.0 and not so common for further versions of the x.y series.
+ [x] merge stabler branches into the branch to release and run a pipeline
to check them (fast)
+ [x] tag and push, following the convention stated in heptapod#352
- Omnibus
+ [x] merge stabler branches into the relevant branch if needed
+ [x] if new upstream GitLab version, merge the corresponding CE tag,
typically `x+y+z+ce.0` into the relevant branch. Leave as draft but **not
in a topic**, commit and push
- Rails application
The release branch is e.g., `heptapod-0-20` while the development branch
is `heptapod`, `heptapod-stable` or `heptapod-oldstable`.
+ [x] merge stabler development branches into the development branch
(pipelines not really needed).
+ [x] start a topic from the head of the release branch (e.g, `heptapod-0-20`)
+ [x] Merge the development branch into the release branch if needed. Commit.
+ [x] Merge new upstream GitLab version if needed. Commit.
+ [x] fill in [HEPTAPOD_CHANGELOG](HEPTAPOD_CHANGELOG.md)
Be sure to include the changes related to the stabler branches. If needed
copy them from the stabler *release* branches, as these won't get merged.
+ [x] set [HEPTAPOD_VERSION](HEPTAPOD_VERSION)
+ [x] update [HEPTAPOD_SHELL_VERSION](HEPTAPOD_SHELL_VERSION) if needed
+ [x] update [RHGITALY_SERVER_VERSION](RHGITALY_SERVER_VERSION) if needed
+ [x] update the requirements files in the [python](python) subdirectory
if needed. In particular, update the HGitaly version in
[common.req](python/common.req)
+ [x] if there is a new version of the `hgitaly` Ruby gem, update `Gemfile`
and run `bundle install`
+ [ ] review and commit the changes, push the topic and create a Merge
Request targeting the release branch, with automatic merge upon
pipeline completion (estimated time between 40 and 90 minutes
depending on whether there is a GitLab upstream update)
+ [ ] In case of GitLab upstream update, check that the pipeline
contains the `gitlab-prebuilds` job.
+ [ ] once the topic is published by CI, pull
+ [ ] create a tag on the release branch head **without a topic** (run
`hg topic --clear if needed` before)
+ [ ] push the tag, don't publish it yet. The tag pipeline will push the
source tarball to download.h.n and push a commit to reference it and
a tag in Omnibus. The resulting pipeline in Omnibus will build the
package for Ubuntu, then the Docker image, then trigger a full run
of the functional tests on it, as a pipeline on heptapod-tests.
+ Docker image:
- [ ] take note of the Docker image ID that the heptapod-tests CI jobs
ran for
- [ ] retrieve the image built in the Omnibus pipeline, checking the
Mercurial tag and the Docker image ID, and push it to Docker Hub,
using the utility in heptapod/heptapod-docker>. Example:
```
~/heptapod/docker $ ./registry-pull-heptapod-push-docker \
--push \
--verify-hg-tag heptapod-0.32.1-1 \
--expected-image-id sha256:0e976fdfa6733d4298025cd0b98ae36384863c8dd8d60ac7f9f979bb5d05b259
```
- [ ] retag the image as as `octobus/heptapod:x.y.z` and
`octobus/heptapod:latest` or `octobus/heptapod:x-y-latest`, and
push the tags to Docker Hub, using
the `push-release` script from heptapod/heptapod-docker>.
### Finalisations
- [ ] announce the release at least on Twitter and Mastodon
- [ ] publish the changesets in all repositories made during the process (don't
forget Omnibus)
- [ ] Create group milestone for next point release, move all remaining issues
bearing the milestone of this release to it.
- [ ] Close milestone for this release.
issue