From 427c46dbf95685b0e32bb450198f836580d56d60 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 8 Aug 2024 16:48:39 +0200 Subject: [PATCH 1/2] lib: remove RELEASE_NUMBERS_AND_DEV, use RELEASE_NUMBERS In the lifecycle of vX.Y.Z, all tests are run against vX.Y-test before it is published, including when the tag is pushed because the automated release process now runs end-to-end before pushing the release to forgejo-experimental. Running end-to-end against vX.Y-dev is therefore redundant with at least two other runs with exactly the same SHA (the one before the tag is pushed and the one when the tag is pushed). There would be value in doing that if it allowed to detect race conditions in Forgejo. But such races were not found in the past six months and there is a lot more scrutiny on commits merged in Forgejo which makes it even less likely than it was before. Running the tests on vX.Y instead of also including the built version provide the same coverage and reduces the workload. --- actions/actions.sh | 2 +- federation/federation.sh | 2 +- lib/lib.sh | 1 - packages/alpine-7.0-dev | 1 - .../package-source/forgejo-2173/APKBUILD | 0 .../package-source/forgejo-2173/forgejo_2173 | 0 .../package-source/forgejo-2173/forgejo_2173.init | 0 .../package-source/forgejo-2174/APKBUILD | 0 .../package-source/forgejo-2174/forgejo_2174 | 0 .../package-source/forgejo-2174/forgejo_2174.init | 0 packages/{alpine-7.0-test => alpine-7.0}/test.sh | 0 packages/alpine-9.0 | 1 + packages/alpine-9.0-dev | 1 - storage/storage.sh | 2 +- upgrade/upgrade.sh | 2 +- 15 files changed, 5 insertions(+), 7 deletions(-) delete mode 120000 packages/alpine-7.0-dev rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2173/APKBUILD (100%) rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2173/forgejo_2173 (100%) rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2173/forgejo_2173.init (100%) rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2174/APKBUILD (100%) rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2174/forgejo_2174 (100%) rename packages/{alpine-7.0-test => alpine-7.0}/package-source/forgejo-2174/forgejo_2174.init (100%) rename packages/{alpine-7.0-test => alpine-7.0}/test.sh (100%) create mode 120000 packages/alpine-9.0 delete mode 120000 packages/alpine-9.0-dev diff --git a/actions/actions.sh b/actions/actions.sh index 089efbf..b411778 100755 --- a/actions/actions.sh +++ b/actions/actions.sh @@ -88,7 +88,7 @@ function actions_runner_version() { } function test_actions() { - local versions="${1:-$RELEASE_NUMBERS_AND_DEV}" + local versions="${1:-$RELEASE_NUMBERS}" for version in $versions; do diff --git a/federation/federation.sh b/federation/federation.sh index f0acfcf..e3e7ab7 100755 --- a/federation/federation.sh +++ b/federation/federation.sh @@ -69,7 +69,7 @@ function test_federation() { # start_gitlab octobus/heptapod:1.5.3 federation_setup_variables - local versions="${1:-$RELEASE_NUMBERS_AND_DEV}" + local versions="${1:-$RELEASE_NUMBERS}" for version in $versions; do diff --git a/lib/lib.sh b/lib/lib.sh index b5101ca..9dc8ee3 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -35,7 +35,6 @@ export DOT_FORGEJO_CURL=$DIR/forgejo-curl export DOT=$DOT_FORGEJO_CURL # for backward compatibility with forgejo-curl.sh 1.0.0 : ${FORGEJO_USER:=root} : ${FORGEJO_PASSWORD:=admin1234} -: ${RELEASE_NUMBERS_AND_DEV:="$(for r in $RELEASE_NUMBERS; do echo -n "$r $r-dev "; done)"} ORGANIZATIONS=$(cat $LIB_DIR/ORGANIZATIONS) function log_info() { diff --git a/packages/alpine-7.0-dev b/packages/alpine-7.0-dev deleted file mode 120000 index a2389c0..0000000 --- a/packages/alpine-7.0-dev +++ /dev/null @@ -1 +0,0 @@ -alpine-7.0-test \ No newline at end of file diff --git a/packages/alpine-7.0-test/package-source/forgejo-2173/APKBUILD b/packages/alpine-7.0/package-source/forgejo-2173/APKBUILD similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2173/APKBUILD rename to packages/alpine-7.0/package-source/forgejo-2173/APKBUILD diff --git a/packages/alpine-7.0-test/package-source/forgejo-2173/forgejo_2173 b/packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173 similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2173/forgejo_2173 rename to packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173 diff --git a/packages/alpine-7.0-test/package-source/forgejo-2173/forgejo_2173.init b/packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173.init similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2173/forgejo_2173.init rename to packages/alpine-7.0/package-source/forgejo-2173/forgejo_2173.init diff --git a/packages/alpine-7.0-test/package-source/forgejo-2174/APKBUILD b/packages/alpine-7.0/package-source/forgejo-2174/APKBUILD similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2174/APKBUILD rename to packages/alpine-7.0/package-source/forgejo-2174/APKBUILD diff --git a/packages/alpine-7.0-test/package-source/forgejo-2174/forgejo_2174 b/packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174 similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2174/forgejo_2174 rename to packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174 diff --git a/packages/alpine-7.0-test/package-source/forgejo-2174/forgejo_2174.init b/packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174.init similarity index 100% rename from packages/alpine-7.0-test/package-source/forgejo-2174/forgejo_2174.init rename to packages/alpine-7.0/package-source/forgejo-2174/forgejo_2174.init diff --git a/packages/alpine-7.0-test/test.sh b/packages/alpine-7.0/test.sh similarity index 100% rename from packages/alpine-7.0-test/test.sh rename to packages/alpine-7.0/test.sh diff --git a/packages/alpine-9.0 b/packages/alpine-9.0 new file mode 120000 index 0000000..b34295a --- /dev/null +++ b/packages/alpine-9.0 @@ -0,0 +1 @@ +alpine-7.0 \ No newline at end of file diff --git a/packages/alpine-9.0-dev b/packages/alpine-9.0-dev deleted file mode 120000 index a2389c0..0000000 --- a/packages/alpine-9.0-dev +++ /dev/null @@ -1 +0,0 @@ -alpine-7.0-test \ No newline at end of file diff --git a/storage/storage.sh b/storage/storage.sh index 6ace098..8fdb64f 100755 --- a/storage/storage.sh +++ b/storage/storage.sh @@ -31,7 +31,7 @@ function test_storage_stable_s3() { local work_path=$DIR/forgejo-work-path local s3_backend=${1:-minio} - for version in $RELEASE_NUMBERS_AND_DEV; do + for version in $RELEASE_NUMBERS; do log_info "Forgejo $version & $s3_backend" stop storage_reset stable-s3 diff --git a/upgrade/upgrade.sh b/upgrade/upgrade.sh index 60e6fac..79c65cc 100755 --- a/upgrade/upgrade.sh +++ b/upgrade/upgrade.sh @@ -38,7 +38,7 @@ function test_successful_upgrades() { fixture_assert doctor_run $config - for version in $RELEASE_NUMBERS_AND_DEV; do + for version in $RELEASE_NUMBERS; do stop log_info "run $version" start $version From 149c6a545cf206580c1b50899c4a0e1678ffa136 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Thu, 8 Aug 2024 17:05:42 +0200 Subject: [PATCH 2/2] lib: source build replace the matching release Instead of having an explicit vX.Y-dev version to be referenced explicitly, a binary built from source replaces the matching version. For instance, if forgejo/build-from-sources contains v9.0, * the development branch is compiled from source * the v9.0 artifact is uploaded * prior to running any test, the artificat is downloaded and used * the v9.0 binary is not downloaded from forgejo/experimental/integration because it is already present The vX.Y release is built daily and the end-to-end tests run on it. If a regression is introduced, it will be spotted within 24h. Compiling from source is used when the Forgejo runs the end-to-end suite on a specific pull request. --- .forgejo/workflows/end-to-end.yml | 16 +++++++++++----- lib/lib.sh | 12 ------------ packages/alpine.sh | 2 +- upgrade/test-pprof-upload.sh | 8 ++++---- upgrade/upgrade.sh | 7 +++---- 5 files changed, 19 insertions(+), 26 deletions(-) diff --git a/.forgejo/workflows/end-to-end.yml b/.forgejo/workflows/end-to-end.yml index 83ce388..05d43c5 100644 --- a/.forgejo/workflows/end-to-end.yml +++ b/.forgejo/workflows/end-to-end.yml @@ -31,8 +31,15 @@ jobs: go-version: "1.22" - name: lib/build.sh run: | - set -x + mkdir $d /tmp/forgejo-upload + touch /tmp/forgejo-upload/PLACEHOLDER + if ! test -f forgejo/build-from-sources; then + echo forgejo/build-from-sources is not present, do not build any version from source + exit 0 + fi + + set -x # # SQLite needs gcc to be compiled # @@ -41,13 +48,12 @@ jobs: apt-get -q install -y -qq build-essential d=/tmp/forgejo-binaries - mkdir $d /tmp/forgejo-upload - for version in $(ls forgejo/sources) ; do - forgejo=$d/forgejo-$version-dev + for version in $(cat forgejo/build-from-sources) ; do lib/build.sh $version $d + forgejo=$d/forgejo-$version-dev $forgejo --version - mv $forgejo /tmp/forgejo-upload + mv $forgejo /tmp/forgejo-upload/forgejo-$version done - uses: actions/upload-artifact@v3 with: diff --git a/lib/lib.sh b/lib/lib.sh index 9dc8ee3..a7471b8 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -70,18 +70,6 @@ function dependencies() { fi } -function build_all() { - for dev in $RELEASE_NUMBERS; do - local forgejo=$DIR_BINARIES/forgejo-$dev-dev - if test -f $forgejo; then - log_info $dev already exists - else - $LIB_DIR/build.sh $dev $DIR_BINARIES - log_info $dev built from sources - fi - done -} - function retry() { rm -f $DIR/wait-for.out success=false diff --git a/packages/alpine.sh b/packages/alpine.sh index 3a4ea78..4ae92ae 100644 --- a/packages/alpine.sh +++ b/packages/alpine.sh @@ -17,7 +17,7 @@ function test_packages_alpine_version() { function test_packages_alpine() { for alpine_version in 3.19 3.20; do - for forgejo_version in 7.0-dev 9.0-dev; do + for forgejo_version in 7.0 9.0; do test_packages_alpine_version $alpine_version $forgejo_version done done diff --git a/upgrade/test-pprof-upload.sh b/upgrade/test-pprof-upload.sh index 48e0005..5c67687 100644 --- a/upgrade/test-pprof-upload.sh +++ b/upgrade/test-pprof-upload.sh @@ -28,13 +28,13 @@ function test_forgejo_pprof() { docker run --name test_pyroscope --rm -d -p 4040:4040 docker.io/grafana/pyroscope reset_forgejo $UPGRADE_DIR/default-app.ini - log_info "run 7.0-dev" - start 7.0-dev + log_info "run 7.0" + start 7.0 test_upload_profiles stop - log_info "run 9.0-dev" - start 9.0-dev + log_info "run 9.0" + start 9.0 test_upload_profiles stop diff --git a/upgrade/upgrade.sh b/upgrade/upgrade.sh index 79c65cc..fb2f8c8 100755 --- a/upgrade/upgrade.sh +++ b/upgrade/upgrade.sh @@ -52,9 +52,9 @@ function test_successful_upgrades() { function test_gitea_upgrades() { local config=$UPGRADE_DIR/default-app.ini ( - echo gitea 1.21 forgejo 7.0-dev - echo gitea 1.21 forgejo 9.0-dev - echo gitea 1.22 forgejo 9.0-dev + echo gitea 1.21 forgejo 7.0 + echo gitea 1.21 forgejo 9.0 + echo gitea 1.22 forgejo 9.0 ) | while read gitea gitea_version forgejo forgejo_version; do log_info "upgrading from Gitea $gitea_version to Forgejo $forgejo_version" stop @@ -81,7 +81,6 @@ source $UPGRADE_DIR/test-pprof-upload.sh function test_upgrades() { run dependencies - run build_all run test_successful_upgrades run test_forgejo_pprof