<!-- This is a task list for when an Heptapod version changes status.

Usually needed after an older version dropped out of support and we need
the current development branch to move to the next release, hence current
version has to become `stable` and older version has to become `oldstable`.

This task list applies to a single one of these two shifts.

-->


### Description

<!--

Fill in here also the ultimate goal, e.g., open up Heptapod 0.23 (GitLab 13.12)
development cycle

-->

Bumped series: <!-- oldstable or stable -->
Shifted series: <!-- stable or default -->

### Merging

Most tasks The goal is to merge the shifted branch into the bumped branch.

Unless explicitely stated, the branch names coincide with the series name as
defined above, hence for example a simple merge/commit with the bumped series
being `oldstable` (and the shifted series being `stable`) would be done with:

```
hg update oldstable
hg merge stable
hg commit
```

### CI Images

- [heptapod-base](https://foss.heptapod.net/heptapod/ci-images/heptapod-base)
  + [ ] merge, check/fix `assets/install_pythonlibs`
  + [ ] commit, push
  + [ ] pipeline ok
- [heptapod-gitaly](https://foss.heptapod.net/heptapod/ci-images/heptapod-gitaly)
  + [ ] merge, commit, push
  + [ ] pipeline ok
- [mercurial/hg-current](https://foss.heptapod.net/heptapod/ci-images/mercurial)
  + [ ] merge, check Mercurial version as expected in `kaniko.sh` for
    `HG_VERSION==current`.
  + [ ] merge, commit, push
  + [ ] pipeline ok (check resulting Mercurial version)

### Components that are forked from upstream GitLab

For these ones, the mapping from series to branch names is:

```
default: heptapod
stable: heptapod-stable
oldstable: heptapod-oldstable
```

- [Heptapod Shell](https://foss.heptapod.net/heptapod/heptapod-shell)
  + [ ] merge, commit, push
  + [ ] pipeline ok
- [Heptapod Rails]:
  + [ ] merge, don't commit
  + [ ] **Important** check general base image in `heptapod-ci.yml`, it should
    match the bumped series. Release scripts will read this to know for which
    series they are working. A wrong value hear gives rise to wildly
    inconsistent binary builds (Omnibus etc.).
  + [ ] check cache keys in `heptapod-ci.yml`. Should be consistent with
    the relevant Heptapod and GitLab versions in the bumped branch
  + [ ] commit in a topic, push, open MR
  + [ ] pipeline ok

### Python components

- [py-heptapod](https://foss.heptapod.net/heptapod/py-heptapod)
  + [ ] merge, commit, push
  + [ ] pipeline ok (check it's been running on the expected "current"
    Mercurial version for the bumped branch)
- [HGitaly](https://foss.heptapod.net/heptapod/hgitaly)
  + [ ] merge, check that the `heptapod-gitaly` image is as expected for
    the bumped branch in `.gitlab-ci.yml`
  + [ ] commit, push
  + [ ] pipeline ok

### Development, build and release tooling

- [heptapod-tests](https://foss.heptapod.net/heptapod/heptapod-tests):
  - [ ] merge and check the base image name in `.gitlab-ci.yml`: it should
    be the target Heptapod version, e.g, `0-21-testing`.
  - [ ] push and watch the pipeline use the appropriate image.
- [ ] [HDK](https://foss.heptapod.net/heptapod/py-heptapod): update the
  `release-stable` or `release-oldstable` entry in `lib/gdk/config.rb`
  on the `heptapod` branch (we have one single branch to rule all
  series as of this writing but that can change in face of big future
  structural changes).
- [Heptapod Rails]:
  + [ ] merge the bumped branch into the release branch (e.g.,
  'heptapod-0-21', 'heptapod-0-22' etc). The diff should be almost empty,
  especially if the shifted branch was fully merged in the release branch.
  + [ ] commit/push
  + [ ] trigger the `tarball` job related to previous push on the release
    branch.
  + [ ] in the job log, check that target Omnibus branch for automatic
    release is the bumped branch of Omnibus, take note of changeset node ID
    (part of tarball name) and SHA256 of the tarball.

- [Omnibus Heptapod]
  (branch naming is like all forks, `heptapod`, `heptapod-stable` etc.)
  + [ ] start a topic on the bumped branch, merge the shifted branch, commit
  + [ ] create a changeset with
    - `HEPTAPOD_VERSION`: `x.y-NODE` where `NODE` is the node ID just noted
      (past example `0.21-a99e86a76ee462e720bcb80c7feb080f06bb9b7d`)
    - `HEPTAPOD_RAILS_SHA256`: the SHA256 of the tarball
  + [ ] push, create a MR
  + [ ] pipeline passes and creates the proper `x-y-testing` image
  + [ ] downstream pipeline in heptapod-tests passes on the created image
    (addressed by its hash-based tag)


[Heptapod Rails]: https://foss.heptapod.net/heptapod/heptapod
[Omnibus Heptapod]: https://foss.heptapod.net/heptapod/omnibus-heptapod



