diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a93d0fa99..0759a9864 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,7 @@ name: Main on: + merge_group: push: branches: [main] pull_request: @@ -10,9 +11,26 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/heads/main') }} jobs: + check-skip-merge-queue: + name: Check if pull request can skip merge queue + runs-on: ubuntu-latest + outputs: + skip-merge-queue: ${{ steps.check-skip-merge-queue.outputs.up-to-date }} + steps: + - name: Checkout repository + uses: actions/checkout@v6 + if: github.event_name == 'merge_group' + + - name: Check pull request merge queue status + id: check-skip-merge-queue + if: github.event_name == 'merge_group' + uses: MetaMask/github-tools/.github/actions/check-skip-merge-queue@v1 + check-workflows: name: Check workflows runs-on: ubuntu-latest + needs: check-skip-merge-queue + if: github.event_name != 'merge_group' || needs.check-skip-merge-queue.outputs.skip-merge-queue != 'true' steps: - uses: actions/checkout@v6 - name: Download actionlint @@ -81,11 +99,14 @@ jobs: name: All jobs pass if: ${{ always() }} runs-on: ubuntu-latest - needs: all-jobs-complete + needs: + - all-jobs-complete + - check-skip-merge-queue steps: - name: Check that all jobs have passed + env: + PASSED: ${{ needs.all-jobs-complete.outputs.passed == 'true' || needs.check-skip-merge-queue.outputs.skip-merge-queue == 'true' }} run: | - passed="${{ needs.all-jobs-complete.outputs.passed }}" - if [[ $passed != "true" ]]; then + if [[ "$PASSED" != "true" ]]; then exit 1 fi