1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- name: Check mergeability
- on: pull_request
- permissions:
- pull-requests: write
- checks: write
- statuses: write
- jobs:
- check:
- runs-on: ubuntu-latest
- steps:
- - name: Check if there is already a block on this PR
- id: blocked
- uses: actions/github-script@v7
- env:
- issue_number: ${{ github.event.number }}
- with:
- script: |
- const { data: reviews } = await github.rest.pulls.listReviews({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: process.env.issue_number,
- });
- for (const review of reviews) {
- if (review.user.login === 'github-actions[bot]' && review.state === 'CHANGES_REQUESTED') {
- return 'true'
- }
- }
- return 'false'
- result-encoding: string
- - uses: actions/checkout@v4
- if: steps.blocked.outputs.result != 'true'
- with:
- fetch-depth: 0
- - name: Get changed files in the .changeset folder
- id: changed-files
- uses: tj-actions/changed-files@v42
- if: steps.blocked.outputs.result != 'true'
- with:
- files: |
- .changeset/**/*.md
- - name: Check if any changesets contain minor or major changes
- id: check
- if: steps.blocked.outputs.result != 'true'
- run: |
- echo "Checking for changesets marked as minor or major"
- echo "found=false" >> $GITHUB_OUTPUT
- regex="[\"']astro[\"']: (minor|major)"
- for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
- if [[ $(cat $file) =~ $regex ]]; then
- version="${BASH_REMATCH[1]}"
- echo "version=$version" >> $GITHUB_OUTPUT
- echo "found=true" >> $GITHUB_OUTPUT
- echo "$file has a $version release tag"
- fi
- done
- - name: Add label
- uses: actions/github-script@v7
- if: steps.check.outputs.found == 'true'
- env:
- issue_number: ${{ github.event.number }}
- with:
- script: |
- github.rest.issues.addLabels({
- issue_number: process.env.issue_number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['semver: ${{ steps.check.outputs.version }}']
- });
- - name: Change PR Status
- uses: actions/github-script@v7
- if: steps.check.outputs.found == 'true'
- env:
- issue_number: ${{ github.event.number }}
- with:
- script: |
- github.rest.pulls.createReview({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: process.env.issue_number,
- event: 'REQUEST_CHANGES',
- body: 'This PR is blocked because it contains a `${{ steps.check.outputs.version }}` changeset. A reviewer will merge this at the next release if approved.'
- });
|