Update Workflow - OpenSlides/OpenSlides GitHub Wiki

Versioning / Deprecation Note

Starting in June 2023 stable updates meant for production are no longer tagged following the scheme

  • 4.0.1-main-YYYYMMDD-<commit_sha>

Instead they will just have tags like

  • 4.0.1
  • 4.0.2
  • ...
  • 4.0.10
  • 4.0.11
  • ...
  • 4.1.1
  • ...

There will also be so-called staging updates, which contain more recent features but are still undergoing tests. Use with caution! These are tagged following the scheme

  • 4.0.1-staging-YYYYMMDD-<commit_sha>

Creating updates

Each of the OpenSlides repository has two branches main and stable. All development PRs go against the main branches. The stable branch is unavailable for normal PRs and should only be pushed by maintainers using the helper script dev/scripts/make-update.sh which accumulates changes into updates. There are make targets encapsulating this script for easier access

  • services-to-main : dev/scripts/make-update.sh fetch-all-changes
  • staging-update : dev/scripts/make-update.sh staging
  • stable-update : dev/scripts/make-update.sh stable

The first stage of this is done by calling make staging-update which fetches a selection of changes and creates a commit in the main repositories main branch with updated submodule pointers. These staging updates will then undergo testing and once they are deemed fine a stable update is created using make stable-update. This will create merge commits in all repositories merging the tested changes into the stable branch.

Every staging update will increment the patch number (i.e. The 3rd in the version string) with respect to the latest stable version.

If the minor version (i.e. The 2nd in the version string) is to be increased this must be done manually when creating the staging update that will become the new minor update. Specifically when running make staging-update before confirming to commit changes, in a second shell edit the VERSION file to the new minor version and git add it. A new stable/4.N.x branch must also be created manually at the tip of stable/4.(N-1).x such that make stable-update can find and push to it.

Hotfixes

Sometimes a stable version contains a problem which must be fixed quickly and cannot wait until the next staging cycle has completed.

In such cases the developer must create a PR that goes against the stable branch of the affected service. After merging make hotfix-update will pick it up and create a new stable release that only contains this change (while the main branches may already contain other changes).

In order to also reflect this change in the main branch, a PR merging stable -> main should be opened.

Building images

Images can be built from the checked out repository using dev/docker/build.sh. They will be automatically tagged depending on the current branch.

  • stable -> 4.x.x
  • main -> 4.x.x-staging-YYYYMMDD-<commit_sha>

The tag is also injected into openslides-client/client/src/assets/version.txt in order for the client to be able to reflect the version (on the /info page).

Builds are also automatically triggered for every commit in the main repository via github action (see .github/workflows/build-images.yml).

⚠️ **GitHub.com Fallback** ⚠️