From efee65079d02cc63c4ed4eb617711978701d4af5 Mon Sep 17 00:00:00 2001 From: The0Mikkel Date: Sun, 16 Nov 2025 16:08:16 +0100 Subject: [PATCH 1/5] fix(release): move to local version of release system --- .github/workflows/release.yml | 98 ++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7850162..e20aeec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,17 +24,99 @@ on: outputs: version: description: "The version of the release. Will be null if no release was made." - value: ${{ jobs.release.outputs.version }} + value: ${{ jobs.semantic-realease.outputs.version }} jobs: - release: + semantic-realease: + name: Semantic release + runs-on: ubuntu-latest + environment: ${{ inputs.ENVIRONMENT || '' }} permissions: contents: write packages: write id-token: write - name: Release - if: github.repository == ( inputs.repository || 'ctfpilot/ci') - uses: the0mikkel/ci/.github/workflows/semver-release-standalone.yml@v1.4.1 - secrets: inherit - with: - ENVIRONMENT: ${{ inputs.ENVIRONMENT }} + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: "lts/*" + - name: Install dependencies + run: npm install @semantic-release/exec @semantic-release/commit-analyzer @semantic-release/git @semantic-release/github @semantic-release/release-notes-generator conventional-changelog-conventionalcommits -D + - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies + run: npm audit signatures + - name: Detect if configuration file is available for semantic-release + id: check-config + run: | + if [ -f .releaserc.json ] || [ -f .releaserc ] || [ -f release.config.js ]; then + echo "config_exists=true" >> $GITHUB_OUTPUT + else + echo "config_exists=false" >> $GITHUB_OUTPUT + fi + - name: Set default configuration file for semantic-release + if: steps.check-config.outputs.config_exists == 'false' + run: | + cat << 'EOF' > .releaserc.json + { + "branches": [ + "main", + { + "name": "develop", + "prerelease": "r" + } + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/github", + { + "successComment": false + } + ], + [ + "@semantic-release/exec", + { + "prepareCmd": "echo ${nextRelease.version} > version.txt", + "publishCmd": "echo 'Published version ${nextRelease.version}'" + } + ], + [ + "@semantic-release/git", + { + "assets": [], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ] + ] + } + EOF + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.RELEASE_GH_TOKEN || secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.RELEASE_GH_TOKEN || secrets.GITHUB_TOKEN }} + run: npx semantic-release 2>&1 semantic-release.log + - name: Archive release log + uses: actions/upload-artifact@v5 + with: + name: semantic-release.log + path: semantic-release.log + - name: Get version + id: version + run: echo version=$(cat semantic-release.log | grep -oP "next release version is \K.*") >> $GITHUB_OUTPUT From 06fe5f1c37fda228d4aed2c60f1c85a069b02b7f Mon Sep 17 00:00:00 2001 From: The0Mikkel Date: Sun, 16 Nov 2025 16:20:06 +0100 Subject: [PATCH 2/5] fix(release): improve logging and error handling in semantic-release step --- .github/workflows/release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e20aeec..80ba57c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -111,7 +111,10 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.RELEASE_GH_TOKEN || secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.RELEASE_GH_TOKEN || secrets.GITHUB_TOKEN }} - run: npx semantic-release 2>&1 semantic-release.log + run: | + npx semantic-release 2>&1 | tee semantic-release.log + status=${PIPESTATUS[0]} + exit $status - name: Archive release log uses: actions/upload-artifact@v5 with: From 3b9869e2e2e1910f22059b300f0d12e2eee719d1 Mon Sep 17 00:00:00 2001 From: The0Mikkel Date: Sun, 16 Nov 2025 16:21:53 +0100 Subject: [PATCH 3/5] Correct typo in job name for semantic-release --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80ba57c..ce6bb79 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ on: value: ${{ jobs.semantic-realease.outputs.version }} jobs: - semantic-realease: + semantic-release: name: Semantic release runs-on: ubuntu-latest environment: ${{ inputs.ENVIRONMENT || '' }} From cf30e17f5a054c20739a613bf0fc11d6d2f96c53 Mon Sep 17 00:00:00 2001 From: The0Mikkel Date: Sun, 16 Nov 2025 16:26:22 +0100 Subject: [PATCH 4/5] Correct output description and fix semantic-release typo in dependencies --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce6bb79..a349892 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,8 +23,8 @@ on: description: "GitHub Token. Used to authenticate with GitHub at build step. This will overwrite the use of the default GitHub token." outputs: version: - description: "The version of the release. Will be null if no release was made." - value: ${{ jobs.semantic-realease.outputs.version }} + description: "The version of the release. Will be empty if no release was made." + value: ${{ jobs.semantic-release.outputs.version }} jobs: semantic-release: @@ -48,7 +48,7 @@ jobs: with: node-version: "lts/*" - name: Install dependencies - run: npm install @semantic-release/exec @semantic-release/commit-analyzer @semantic-release/git @semantic-release/github @semantic-release/release-notes-generator conventional-changelog-conventionalcommits -D + run: npm install semantic-release @semantic-release/exec @semantic-release/commit-analyzer @semantic-release/git @semantic-release/github @semantic-release/release-notes-generator conventional-changelog-conventionalcommits -D - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies run: npm audit signatures - name: Detect if configuration file is available for semantic-release From 0370074fff6637303a3e29c95f1461b073ac9b4e Mon Sep 17 00:00:00 2001 From: Mikkel Albrechtsen Date: Sun, 16 Nov 2025 16:29:06 +0100 Subject: [PATCH 5/5] Update .github/workflows/release.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a349892..591cc65 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -122,4 +122,4 @@ jobs: path: semantic-release.log - name: Get version id: version - run: echo version=$(cat semantic-release.log | grep -oP "next release version is \K.*") >> $GITHUB_OUTPUT + run: echo version=$(grep -oP "next release version is \K.*" semantic-release.log || echo "") >> $GITHUB_OUTPUT