name: Check mergeability on: pull_request # run on pull request events permissions: # grant write permission on the pull-requests endpoint pull-requests: write jobs: check: runs-on: ubuntu-latest steps: - name: Retrieve existing PR reviews id: set-reviews run: | echo ::set-output name=reviews::$(curl --request GET \ --url https://api.github.com/repos/${{github.repository}}/pulls/${{github.event.number}}/reviews \ --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}') - name: Check if there is already a block on this PR id: set-blocks run: | echo ::set-output name=blocks::$(echo '${{ steps.set-reviews.outputs.reviews }}' \ | jq '.[] | select(.user.id == 41898282 and .state == "CHANGES_REQUESTED") | length' \ | uniq) - uses: actions/checkout@v3 if: steps.set-blocks.outputs.blocks == '' with: fetch-depth: 0 - name: Get changed files in the .changeset folder id: changed-files uses: tj-actions/changed-files@v29 if: steps.set-blocks.outputs.blocks == '' with: files: | .changeset/**/*.md - name: Check if any changesets contain minor changes id: find-blockers if: steps.set-blocks.outputs.blocks == '' run: | echo "Checking for changesets marked as minor" echo '::set-output name=found::false' for file in ${{ steps.changed-files.outputs.all_changed_files }}; do if grep -q "'astro': minor" "$file"; then echo '::set-output name=found::true' echo "$file has a minor release tag" fi done - name: Add label if: steps.find-blockers.outputs.found == 'true' run: | curl --request POST \ --url https://api.github.com/repos/${{github.repository}}/issues/${{github.event.number}}/labels \ --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ --header 'content-type: application/json' \ -d '["semver minor"]' - name: Send PR review if: steps.find-blockers.outputs.found == 'true' run: | # approve the pull request curl --request POST \ --url https://api.github.com/repos/${{github.repository}}/pulls/${{github.event.number}}/reviews \ --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ --header 'content-type: application/json' \ -d '{"event":"REQUEST_CHANGES","body":"This PR is blocked because it contains a `minor` changeset. A reviewer will merge this at the next release if approved."}'