Skip to content

Releasing

Tibor Šimko edited this page Dec 1, 2023 · 25 revisions

Contents

  1. Prerequisites
  2. Releasing Python packages
  3. Releasing Docker images
  4. Releasing Helm charts

Prerequisites

1. Make sure that the release branch (e.g. maint-0.7 for bug fixes or master for new versions) has to:

  • have a release commit as the last commit
  • have a tag pointing to the last commit

2. Upgrade the base docker images of REANA components:

$ cd ~/mysrc/
$ find . -name Dockerfile -exec grep 'FROM ' {} \; | awk '{print "docker pull " $2;}' | grep -v BUILDPLATFORM | sort -u | sh

3. Optionally, update all dependencies in cluster components:

Note: Make sure you are using the same version of Python that is used in cluster components when updating dependencies.

$ cd reana-workflow-engine-serial
$ grep 'pip-compile \-' requirements.txt | awk '{print substr($0,3) " -U"}' | sh
$ git commit -a -m 'installation: bump all dependencies'

4. Make sure the site runs well in production mode with all release branches:

$ reana-dev git-status -c CLUSTER -c CLIENT -c reana
$ reana-dev run-ci -m /var/reana:/var/reana \
     --exclude-components=r-a-krb5,r-a-vomsproxy -c r-d-helloworld \
     --admin-email [email protected] --admin-password xxxxxxxxx

Releasing Python packages

1. Release the package(s)

$ cd reana-db
$ reana-dev git-tag -c .
$ reana-dev release-pypi -c .
$ git push upstream maint-0.7
$ git push upstream tag 0.7.1

Releasing Docker images

1. Clean your environment

$ cd ~/mysrc/reana-server
$ reana-dev git-clean -c .

2. Build the image(s)

$ reana-dev docker-build -c .

3. Tag and release the image(s)

$ reana-dev git-tag -c .
$ reana-dev release-docker -c .

4. Push branch, tag to upstream and create GitHub release from tag with the content from CHANGES.rst.

Note. If needed, remember to build and push the REANA-Job-Controller image with HTCondor and Slurm support.

$ reana-dev docker-build -c r-j-controller -b COMPUTE_BACKENDS=kubernetes,slurmcern,htcondorcern
$ docker tag docker.io/reanahub/reana-job-controller:latest docker.io/reanahub/reana-job-controller-htcondorcern-slurmcern:0.9.1-alpha.3
$ docker push docker.io/reanahub/reana-job-controller-htcondorcern-slurmcern:0.9.1-alpha.3

Releasing Helm charts

1. Upgrade to the latest cluster component versions:

$ reana-dev helm-upgrade-components

2. Create new release tag locally, push release branch to GitHub, and clean your local GitHub Pages branch:

$ reana-dev git-tag -c .
$ git clean -d -ff -x
$ git push upstream master
$ (git checkout gh-pages && git fetch upstream && git reset --hard upstream/gh-pages && git checkout -)

3. Bump the chart version and release it (CR_TOKEN should be a GitHub personal token with write:packages permissions):

$ read -s CR_TOKEN
$ export CR_TOKEN=$CR_TOKEN
$ cr upload --help | grep release-name-template # check whether you have cr>1.0.0 version with --r-n-t flag
$ reana-dev release-helm
$ (git checkout gh-pages && git log -1 -p && git push upstream gh-pages && git checkout -)

The new version will be visible in the REANA Helm repository shortly after.

Note. Remember to merge docs.reana.io's next branch if appropriate to have the latest docs, as well as updating blog.reana.io and www.reana.io.