diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 1ea3f85d..db52d557 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -2,16 +2,24 @@ name: Pre-Release (RC) on: workflow_dispatch: # Allows manual triggering from GitHub UI/API + inputs: + branch: + description: 'Branch to create pre-release from (e.g., next, develop)' + required: false + default: 'next' + type: string -concurrency: pre-release-${{ github.ref }} - +concurrency: pre-release-${{ github.ref_name }} jobs: rc: runs-on: ubuntu-latest + # Only allow pre-releases on non-main branches + if: github.ref != 'refs/heads/main' && inputs.branch != 'main' steps: - uses: actions/checkout@v4 with: fetch-depth: 0 + ref: ${{ inputs.branch || github.ref }} - uses: actions/setup-node@v4 with: @@ -58,5 +66,5 @@ jobs: uses: actions-js/push@master with: github_token: ${{ secrets.GITHUB_TOKEN }} - branch: ${{ github.ref }} + branch: ${{ inputs.branch || github.ref_name }} message: "chore: rc version bump" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ddb07dc..16b90248 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,27 +38,27 @@ jobs: run: npm ci timeout-minutes: 2 - - name: Exit pre-release mode and clean up + - name: Check pre-release mode run: | - echo "๐Ÿ”„ Ensuring we're not in pre-release mode for main branch..." - - # Exit pre-release mode if we're in it - npx changeset pre exit || echo "Not in pre-release mode" - - # Remove pre.json file if it exists (belt and suspenders approach) - if [ -f .changeset/pre.json ]; then - echo "๐Ÿงน Removing pre.json file..." - rm -f .changeset/pre.json - fi - - # Verify the file is gone - if [ ! -f .changeset/pre.json ]; then - echo "โœ… pre.json successfully removed" - else - echo "โŒ Failed to remove pre.json" + set -euo pipefail + echo "๐Ÿ” Checking pre-release mode status..." + if [[ -f .changeset/pre.json ]]; then + echo "โŒ ERROR: Main branch is in pre-release mode!" + echo "" + echo "Pre-release mode should only be used on feature branches, not main." + echo "" + echo "To fix this, run the following commands locally:" + echo " npx changeset pre exit" + echo " git add -u" + echo " git commit -m 'chore: exit pre-release mode'" + echo " git push origin main" + echo "" + echo "Then re-run this workflow." exit 1 fi + echo "โœ… Not in pre-release mode - proceeding with release" + - name: Create Release Pull Request or Publish to npm uses: changesets/action@v1 with: