diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 791974b..84f96b0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,18 +1,20 @@ name: Releases - on: - push: + pull_request_target: branches: - main + types: + - closed jobs: merged-pr: + if: github.event.pull_request.merged == true && !contains(github.event.pull_request.title, '[skip ci]') runs-on: ubuntu-latest permissions: id-token: write contents: read - steps: + - name: Generate GitHub app token id: generate_app_token uses: actions/create-github-app-token@v1 @@ -23,11 +25,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 with: + repository: ${{ github.event.pull_request.head.repo.full_name }} token: ${{ steps.generate_app_token.outputs.token }} - fetch-depth: 0 + fetch-depth: ${{ github.event.pull_request.commits }} - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v3 with: node-version: 24 registry-url: "https://registry.npmjs.org" @@ -40,14 +43,14 @@ jobs: run: | shopt -s nocasematch - COMMITS="$(git log --format=%B ${{ github.event.before }}..${{ github.sha }})" + PR_TITLE='${{ github.event.pull_request.title }}' - if echo "$COMMITS" | grep -Eq '(\[breaking\]|\[major\])'; then - echo "release_type=major" >> "$GITHUB_OUTPUT" - elif echo "$COMMITS" | grep -Eq '\[minor\]'; then - echo "release_type=minor" >> "$GITHUB_OUTPUT" + if [[ "$PR_TITLE" =~ (\[breaking\]|\[major\]) ]]; then + echo "release_type=major" >> $GITHUB_OUTPUT + elif [[ "$PR_TITLE" =~ \[minor\] ]]; then + echo "release_type=minor" >> $GITHUB_OUTPUT else - echo "release_type=patch" >> "$GITHUB_OUTPUT" + echo "release_type=patch" >> $GITHUB_OUTPUT fi shopt -u nocasematch @@ -78,12 +81,14 @@ jobs: id: standard-version run: | npx standard-version --release-as ${{ steps.determine-release.outputs.release_type }} - echo "tag_name=$(git describe --abbrev=0 --tags)" >>"$GITHUB_OUTPUT" + echo "tag_name=$(git describe --abbrev=0 --tags)" >>$GITHUB_OUTPUT - name: Push tags and changelog run: git push --follow-tags origin main + env: + GH_TOKEN: ${{ steps.generate_app_token.outputs.token }} - - name: Create GitHub release + - name: create release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ steps.generate_app_token.outputs.token }} @@ -93,4 +98,4 @@ jobs: body: "${{ steps.changelog.outputs.clean_changelog }}" - name: Publish package on NPM 📦 - run: npm publish --access public + run: npm publish