diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 214cf8f..9203f88 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -5,6 +5,17 @@ on: branches: - main workflow_dispatch: + inputs: + release-candidate: + description: 'Cut a release-candidate (prerelease) instead of a normal release.' + type: boolean + required: false + default: false + graduate: + description: 'Graduate the current RC to its final version (drops the -rc.N suffix).' + type: boolean + required: false + default: false env: RELEASE_BRANCH: release-please--branches--main--components--github-actions-magento2 @@ -17,10 +28,34 @@ jobs: outputs: releases_created: ${{ steps.release.outputs.releases_created }} steps: + - name: Reject conflicting inputs + if: inputs.release-candidate && inputs.graduate + run: | + echo "::error::release-candidate and graduate are mutually exclusive — pick one." + exit 1 + + - uses: actions/checkout@v6 + if: inputs.graduate + + - name: Compute graduate version + id: graduate + if: inputs.graduate + run: | + CURRENT=$(jq -r '."."' .release-please-manifest.json) + if [[ "$CURRENT" != *-* ]]; then + echo "::error::Manifest version $CURRENT has no prerelease suffix to graduate from." + exit 1 + fi + GRADUATED="${CURRENT%%-*}" + echo "Graduating $CURRENT -> $GRADUATED" + echo "VERSION=${GRADUATED}" >> $GITHUB_OUTPUT + - id: release uses: googleapis/release-please-action@v4 with: token: ${{ secrets.GRAYCORE_GITHUB_TOKEN }} + versioning-strategy: ${{ inputs.release-candidate && 'prerelease' || '' }} + release-as: ${{ steps.graduate.outputs.VERSION || '' }} - name: Check if release branch exists id: branch-check diff --git a/release-please-config.json b/release-please-config.json index a584b6f..600c3c9 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -3,6 +3,7 @@ "bump-patch-for-minor-pre-major": true, "draft-pull-request": true, "prerelease": true, + "prerelease-type": "rc", "include-component-in-tag": false, "include-v-in-tag": true, "pull-request-title-pattern": "chore: release ${version}",