From 1f8e6b6e319d3eea6e1b824573471954bc298227 Mon Sep 17 00:00:00 2001
From: Earl Warren <contact@earl-warren.org>
Date: Thu, 8 Aug 2024 17:53:12 +0200
Subject: [PATCH] chore(ci): optimize end-to-end runs

* specify the version targeted by the pull request. The end-to-end
  tests previously compiled all known branches which was a waste. The
  pull request now must specify which version it is targeting so that
  only this version is recompiled and used for testing.
* when building the daily releases, use the release from the
  integration organization to ensure the tests are run against the
  latest build. Clarify in a comment why the lookup order of
  organizations is reversed in this particular case.

Refs: https://code.forgejo.org/forgejo/end-to-end/pulls/239
---
 .forgejo/cascading-pr-end-to-end      | 27 ++++++++++++++-------------
 .forgejo/cascading-release-end-to-end | 16 ++++++++--------
 2 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/.forgejo/cascading-pr-end-to-end b/.forgejo/cascading-pr-end-to-end
index d7a6b46b48..8013fde06a 100755
--- a/.forgejo/cascading-pr-end-to-end
+++ b/.forgejo/cascading-pr-end-to-end
@@ -13,21 +13,22 @@ minor_version=$(make show-version-minor)
 
 cd $end_to_end
 
-if ! test -f forgejo/sources/$minor_version ; then
-    echo "FAIL: forgejo/sources/$minor_version does not exist in the end-to-end repository"
-    false
+if ! test -f forgejo/sources/$minor_version; then
+  echo "FAIL: forgejo/sources/$minor_version does not exist in the end-to-end repository"
+  false
 fi
 
-date > last-upgrade
+echo -n $minor_version >forgejo/build-from-sources
+date >last-upgrade
 
-if test -f "$forgejo_pr_or_ref" ; then
-    forgejo_pr=$forgejo_pr_or_ref
-    head_url=$(jq --raw-output .head.repo.html_url < $forgejo_pr)
-    test "$head_url" != null
-    branch=$(jq --raw-output .head.ref < $forgejo_pr)
-    test "$branch" != null
-    echo $head_url $branch $full_version > forgejo/sources/$minor_version
+if test -f "$forgejo_pr_or_ref"; then
+  forgejo_pr=$forgejo_pr_or_ref
+  head_url=$(jq --raw-output .head.repo.html_url <$forgejo_pr)
+  test "$head_url" != null
+  branch=$(jq --raw-output .head.ref <$forgejo_pr)
+  test "$branch" != null
+  echo $head_url $branch $full_version >forgejo/sources/$minor_version
 else
-    forgejo_ref=$forgejo_pr_or_ref
-    echo $GITHUB_SERVER_URL/$GITHUB_REPOSITORY ${forgejo_ref#refs/heads/} $full_version > forgejo/sources/$minor_version
+  forgejo_ref=$forgejo_pr_or_ref
+  echo $GITHUB_SERVER_URL/$GITHUB_REPOSITORY ${forgejo_ref#refs/heads/} $full_version >forgejo/sources/$minor_version
 fi
diff --git a/.forgejo/cascading-release-end-to-end b/.forgejo/cascading-release-end-to-end
index 08ad8a4431..9be0737b0f 100755
--- a/.forgejo/cascading-release-end-to-end
+++ b/.forgejo/cascading-release-end-to-end
@@ -8,15 +8,15 @@ forgejo=$3
 forgejo_ref=$4
 
 cd $end_to_end
-date > last-upgrade
+date >last-upgrade
 organizations=lib/ORGANIZATIONS
-if ! test -f $organizations ; then
-    echo "$organizations file not found"
-    false
+if ! test -f $organizations; then
+  echo "$organizations file not found"
+  false
 fi
 #
-# do not include forgejo-experimental so that 7.0-test is found
-# in forgejo-integration where it was just built instead of
-# forgejo-experimental which was published by the previous build
+# Inverse the order of lookup because the goal in the release built
+# pipeline is to test the latest build, if available, instead of the
+# stable version by the same version.
 #
-echo forgejo forgejo-integration > $organizations
+echo forgejo-integration forgejo-experimental forgejo >$organizations