1name: Test 2 3on: 4 pull_request: 5 6concurrency: 7 group: test-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }} 8 cancel-in-progress: true 9 10permissions: {} 11 12jobs: 13 prepare: 14 runs-on: ubuntu-24.04-arm 15 outputs: 16 merge-group: ${{ steps.files.outputs.merge-group }} 17 mergedSha: ${{ steps.prepare.outputs.mergedSha }} 18 pr: ${{ steps.files.outputs.pr }} 19 push: ${{ steps.files.outputs.push }} 20 targetSha: ${{ steps.prepare.outputs.targetSha }} 21 steps: 22 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 23 with: 24 sparse-checkout-cone-mode: true # default, for clarity 25 sparse-checkout: | 26 ci/github-script 27 - id: prepare 28 uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 29 with: 30 script: | 31 require('./ci/github-script/prepare.js')({ 32 github, 33 context, 34 core, 35 // Review comments will be posted by the main PR workflow on the pull_request_target event. 36 dry: false, 37 }) 38 39 - name: Determine changed files 40 id: files 41 uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 42 with: 43 script: | 44 const files = (await github.paginate(github.rest.pulls.listFiles, { 45 ...context.repo, 46 pull_number: context.payload.pull_request.number, 47 per_page: 100, 48 })).map(file => file.filename) 49 50 if (files.some(file => [ 51 '.github/workflows/lint.yml', 52 '.github/workflows/merge-group.yml', 53 '.github/workflows/test.yml', 54 ].includes(file))) core.setOutput('merge-group', true) 55 56 if (files.some(file => [ 57 '.github/actions/checkout/action.yml', 58 '.github/workflows/build.yml', 59 '.github/workflows/check.yml', 60 '.github/workflows/eval.yml', 61 '.github/workflows/labels.yml', 62 '.github/workflows/lint.yml', 63 '.github/workflows/pr.yml', 64 '.github/workflows/reviewers.yml', 65 '.github/workflows/test.yml', 66 ].includes(file))) core.setOutput('pr', true) 67 68 if (files.some(file => [ 69 '.github/workflows/eval.yml', 70 '.github/workflows/push.yml', 71 '.github/workflows/test.yml', 72 ].includes(file))) core.setOutput('push', true) 73 74 merge-group: 75 if: needs.prepare.outputs.merge-group 76 name: Merge Group 77 needs: [prepare] 78 uses: ./.github/workflows/merge-group.yml 79 # Those are actually only used on the merge_group event, but will throw an error if not set. 80 permissions: 81 statuses: write 82 secrets: 83 CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} 84 with: 85 mergedSha: ${{ needs.prepare.outputs.mergedSha }} 86 targetSha: ${{ needs.prepare.outputs.targetSha }} 87 88 pr: 89 if: needs.prepare.outputs.pr 90 name: PR 91 needs: [prepare] 92 uses: ./.github/workflows/pr.yml 93 # Those are actually only used on the pull_request_target event, but will throw an error if not set. 94 permissions: 95 issues: write 96 pull-requests: write 97 statuses: write 98 secrets: 99 CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} 100 NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }} 101 102 push: 103 if: needs.prepare.outputs.push 104 name: Push 105 needs: [prepare] 106 uses: ./.github/workflows/push.yml 107 # Those are not actually used on the push or pull_request events, but will throw an error if not set. 108 permissions: 109 statuses: write 110 secrets: 111 CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} 112 with: 113 mergedSha: ${{ needs.prepare.outputs.mergedSha }}