Преглед изворни кода

CI: Prevent hotfixes from overwriting Flathub beta

When 31.0.4 was published, it published to the Flathub beta channel,
which overwrote the running 31.1.0 beta/rc. This was due to an
assumption that we would not publish an out-of-band hotfix release once
we had moved to a new beta release cycle. To prevent this in the future,
we can check the last two releases to see if they are different tag
series and if one is a prerelease.
Ryan Foster пре 3 месеци
родитељ
комит
c88a364d90
1 измењених фајлова са 18 додато и 1 уклоњено
  1. 18 1
      .github/workflows/publish.yaml

+ 18 - 1
.github/workflows/publish.yaml

@@ -31,8 +31,25 @@ jobs:
 
           case "${GITHUB_REF_NAME}" in
             +([0-9]).+([0-9]).+([0-9]) )
+              lastPreRelease="$(gh release list --exclude-drafts --limit 10 --json "publishedAt,tagName,isPrerelease" \
+                --jq '[.[] | select(.isPrerelease == true)] | first | .tagName')"
+              currentRelease="${GITHUB_REF_NAME}"
+              isPreReleaseAhead=false
+
+              printf '%s\n%s\n' "${currentRelease}" "${lastPreRelease}" | sort --version-sort --reverse --check=quiet &&
+                isPreReleaseAhead=false || isPreReleaseAhead=true
+
+              # Edge case: Sort considers the non-suffixed version older than a suffixed one
+              if ${isPreReleaseAhead} && [[ "${currentRelease}" == "${lastPreRelease//-*}" ]]; then
+                isPreReleaseAhead=false
+              fi
+
               echo 'validTag=true' >> $GITHUB_OUTPUT
-              echo 'flatpakMatrix=["beta", "stable"]' >> $GITHUB_OUTPUT
+              if ! ${isPreReleaseAhead}; then
+                echo 'flatpakMatrix=["beta", "stable"]' >> $GITHUB_OUTPUT
+              else
+                echo 'flatpakMatrix=["stable"]' >> $GITHUB_OUTPUT
+              fi
               echo 'updateChannel=stable' >> $GITHUB_OUTPUT
               ;;
             +([0-9]).+([0-9]).+([0-9])-@(beta|rc)*([0-9]) )