From 4df8920f203905932006ab433ab23cd4759aab2a Mon Sep 17 00:00:00 2001 From: Joel Colledge Date: Wed, 26 Jul 2023 12:11:58 +0200 Subject: [PATCH] ci: allow release preparation magic to also be used for real releases --- .gitlab-ci.yml | 6 +++--- .gitlab/changelog.awk | 25 +++++++++++++++++++++++++ .gitlab/drbd-prepare-release.sh | 30 ++++++++++++++++++++++++++++++ .gitlab/gitlab-utils.sh | 25 ------------------------- 4 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 .gitlab/changelog.awk create mode 100755 .gitlab/drbd-prepare-release.sh delete mode 100644 .gitlab/gitlab-utils.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab779ba2f..6da67fda6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ variables: RELEASE_BRANCH: drbd-9.1 DRBD_VERSION_BASE: 9.1.0 DRBD9_TESTS_REF: master - BUILD_HELPERS_VERSION: 4847343a16f5f9500f7c53ed7aa681962706d8ba + BUILD_HELPERS_VERSION: cad23b57db14b7676808fa645c4561bc66c3e204 # we have to change the way GitLab CI clones the repository. # by default, it is shallow, which gives us a wrong commit count when # we do `git rev-list --count origin/master` below. @@ -17,7 +17,7 @@ stages: .setup-lbbuild: before_script: - - . gitlab-utils.sh && . .gitlab/gitlab-utils.sh + - . gitlab-utils.sh - ci_prepare_tools - ci_fetch_rq - ci_fetch_lbbuildctl @@ -48,7 +48,7 @@ stages: set -x - drbd_dummy_release "$version" "$release" "$rel_version" + ./.gitlab/drbd-prepare-release.sh "$version" "$release" "$rel_version" make FORCE=1 PRESERVE_DEBIAN=1 REL_VERSION="$rel_version" tarball curl -isSf -u $LINBIT_REGISTRY_USER:$LINBIT_REGISTRY_PASSWORD \ --upload-file drbd-*.tar.gz \ diff --git a/.gitlab/changelog.awk b/.gitlab/changelog.awk new file mode 100644 index 000000000..92d00ac1f --- /dev/null +++ b/.gitlab/changelog.awk @@ -0,0 +1,25 @@ +# Can be used to add a release to the ChangeLog +# +# Example: +# awk -f changelog.awk -v REL_VERSION=9.9.9 ChangeLog > ChangeLog.ci + +BEGIN { + if (REL_VERSION == "") + die("REL_VERSION is not set") +} + +!added && /api:/ { + print REL_VERSION " " $2 + print "--------" + print "" + print " * bug fixes" + print "" + added = 1 +} + +{print} + +function die(msg) { + print(msg) > "/dev/stderr" + exit 1 +} diff --git a/.gitlab/drbd-prepare-release.sh b/.gitlab/drbd-prepare-release.sh new file mode 100755 index 000000000..5aecb772e --- /dev/null +++ b/.gitlab/drbd-prepare-release.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Replace the drbd version number in all necessary places +# +# Example: +# version=9.1.15+ptf.16.g0a58e61fcd09 +# PATH=~/work/projects/build-helpers/build-helpers:"$PATH" ./.gitlab/drbd-prepare-release.sh "$version" 1 "$version" +# +# Example of a real release: +# version=9.1.16 +# PATH=~/work/projects/build-helpers/build-helpers:"$PATH" DRBD_SOURCE_ONLINE=yes ./.gitlab/drbd-prepare-release.sh "$version" 1 "$version" + +version="$1" +release="$2" +rel_version="$3" + +DIR="$(dirname "$(readlink -f "$0")")" + +dummy-release.sh drbd "$version" "$release" drbd-kernel.spec --source-online ${DRBD_SOURCE_ONLINE:-no} + +sed -re "s/(#define REL_VERSION) .*/\1 \"$rel_version\"/g" drbd/linux/drbd_config.h > drbd/linux/drbd_config.h.tmp +mv drbd/linux/drbd_config.h{.tmp,} + +for i in 7 8 9; do + sed -re "s/(ENV DRBD_VERSION) .*/\1 $rel_version/g" docker/Dockerfile.rhel${i} > docker/Dockerfile.rhel${i}.tmp + mv docker/Dockerfile.rhel${i}{.tmp,} +done + +awk -f "$DIR/changelog.awk" -v REL_VERSION="$rel_version" ChangeLog > ChangeLog.tmp +mv ChangeLog{.tmp,} diff --git a/.gitlab/gitlab-utils.sh b/.gitlab/gitlab-utils.sh deleted file mode 100644 index 12150c7a9..000000000 --- a/.gitlab/gitlab-utils.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Helper functions for CI - -# Replace the drbd version number in all necessary places -drbd_dummy_release() { - local version="$1" - local release="$2" - local rel_version="$3" - - dummy-release.sh drbd "$version" "$release" drbd-kernel.spec - - sed -re "s/(#define REL_VERSION) .*/\1 \"$rel_version\"/g" drbd/linux/drbd_config.h > drbd/linux/drbd_config.h.tmp - mv drbd/linux/drbd_config.h{.tmp,} - - for i in 7 8 9; do - sed -re "s/(ENV DRBD_VERSION) .*/\1 $rel_version/g" docker/Dockerfile.rhel${i} > docker/Dockerfile.rhel${i}.tmp - mv docker/Dockerfile.rhel${i}{.tmp,} - done - - cat > ChangeLog << EOF -$rel_version (api:genl2/proto:86-117/transport:14) --------- - - * Dummy release -EOF -}