From 992c7d5a612bf3cd42e02e9b577840d1267033dd Mon Sep 17 00:00:00 2001 From: James Maes Date: Thu, 5 Nov 2026 10:58:26 -0600 Subject: [PATCH 1/2] ci: add the release-candidate channel to the shared SFTP pipeline Declare a release-candidate channel (push to release/*, versioning maven-release, effective version rule rc-from-branch, central completion and the same source write-back policy as the snapshot channel) and publish it to the existing qrun-maven destination alongside the snapshot channel. The snapshot channel, verification pushes, component, build commands (including flattening) and artifact paths are unchanged. The operator enrollment of the destination must also grant the release-candidate channel before anything publishes. Co-Authored-By: Claude Sonnet 5.5 --- .ci.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.ci.yaml b/.ci.yaml index 8939c9c..1776bb8 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -36,9 +36,20 @@ release: rule: develop-next-minor central_completion: true version_write_back: {} + # Release candidates: a push to release/X.Y derives X.Y.0-RC.n with the existing rc-from-branch rule (the first RC of a branch that declares + # X.Y.Z-SNAPSHOT is RC.1); maven-release refuses a SNAPSHOT effective version. Published to the same destination as the snapshot, with the same + # Central completion and source write-back policy. + release-candidate: + trigger: + push_branches: ["release/*"] + versioning: maven-release + effective_version: + rule: rc-from-branch + central_completion: true + version_write_back: {} publications: qbit-sftp-packages: component: library artifact: packages destination: qrun-maven - channels: [snapshot] + channels: [snapshot, release-candidate] -- 2.54.0 From 537e8c79f57abec0b46dba2fea2a2ce816b89e67 Mon Sep 17 00:00:00 2001 From: James Maes Date: Thu, 5 Nov 2026 10:59:36 -0600 Subject: [PATCH 2/2] ci: leave release branches to the shared pipeline in the legacy caller guard The legacy caller already skips develop because the shared pipeline publishes it. A push to release/X.Y would otherwise start the retired producer next to the shared release-candidate channel and publish the same RC twice. Skip release/* the same way. Needs CI-owner review: the file is the standard thin caller (its sha256 is an enrolled workflow identity of the legacy route, which is retired for this repository). Co-Authored-By: Claude Sonnet 5.5 --- .gitea/workflows/qrun-release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/qrun-release.yaml b/.gitea/workflows/qrun-release.yaml index 72d0caf..39860ec 100644 --- a/.gitea/workflows/qrun-release.yaml +++ b/.gitea/workflows/qrun-release.yaml @@ -8,8 +8,8 @@ permissions: actions: read jobs: release: - # Develop uses the repository-owned shared pipeline configuration. - if: ${{ github.ref != 'refs/heads/develop' }} + # Develop and release candidates use the repository-owned shared pipeline configuration. + if: ${{ github.ref != 'refs/heads/develop' && !startsWith(github.ref, 'refs/heads/release/') }} uses: self:KofTwentyTwo/platform-ci/.gitea/workflows/java-maven.yaml@qrun-release-v1 with: runner: linux-small -- 2.54.0