Once we start running similar jobs in the PR and Merge Queue workflows, the Test workflow will run into a problem: Both nested workflows will try to upload the same artifacts, which errors out. By providing a prefix to use for artifact names, this will be a non-issue when we later run more of Eval in the merge queue or when we add the build jobs to the queue as well.
101 lines
3.3 KiB
YAML
101 lines
3.3 KiB
YAML
name: Test
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: test-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
prepare:
|
|
runs-on: ubuntu-24.04-arm
|
|
outputs:
|
|
merge-group: ${{ steps.files.outputs.merge-group }}
|
|
mergedSha: ${{ steps.prepare.outputs.mergedSha }}
|
|
pr: ${{ steps.files.outputs.pr }}
|
|
push: ${{ steps.files.outputs.push }}
|
|
targetSha: ${{ steps.prepare.outputs.targetSha }}
|
|
steps:
|
|
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
|
with:
|
|
persist-credentials: false
|
|
sparse-checkout-cone-mode: true # default, for clarity
|
|
sparse-checkout: |
|
|
ci/github-script
|
|
- id: prepare
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
retries: 3
|
|
script: |
|
|
require('./ci/github-script/prepare.js')({
|
|
github,
|
|
context,
|
|
core,
|
|
// Review comments will be posted by the main PR workflow on the pull_request_target event.
|
|
dry: false,
|
|
})
|
|
|
|
- name: Determine changed files
|
|
id: files
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
script: |
|
|
const files = (await github.paginate(github.rest.pulls.listFiles, {
|
|
...context.repo,
|
|
pull_number: context.payload.pull_request.number,
|
|
per_page: 100,
|
|
})).map(file => file.filename)
|
|
|
|
if (files.some(file => [
|
|
'.github/workflows/eval.yml',
|
|
'.github/workflows/lint.yml',
|
|
'.github/workflows/merge-group.yml',
|
|
'.github/workflows/test.yml',
|
|
].includes(file))) core.setOutput('merge-group', true)
|
|
|
|
if (files.some(file => [
|
|
'.github/actions/checkout/action.yml',
|
|
'.github/workflows/build.yml',
|
|
'.github/workflows/check.yml',
|
|
'.github/workflows/eval.yml',
|
|
'.github/workflows/labels.yml',
|
|
'.github/workflows/lint.yml',
|
|
'.github/workflows/pr.yml',
|
|
'.github/workflows/reviewers.yml',
|
|
'.github/workflows/test.yml',
|
|
].includes(file))) core.setOutput('pr', true)
|
|
|
|
merge-group:
|
|
if: needs.prepare.outputs.merge-group
|
|
name: Merge Group
|
|
needs: [prepare]
|
|
uses: ./.github/workflows/merge-group.yml
|
|
# Those are actually only used on the merge_group event, but will throw an error if not set.
|
|
permissions:
|
|
statuses: write
|
|
secrets:
|
|
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
|
|
with:
|
|
artifact-prefix: mg-
|
|
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
|
|
targetSha: ${{ needs.prepare.outputs.targetSha }}
|
|
|
|
pr:
|
|
if: needs.prepare.outputs.pr
|
|
name: PR
|
|
needs: [prepare]
|
|
uses: ./.github/workflows/pr.yml
|
|
# Those are actually only used on the pull_request_target event, but will throw an error if not set.
|
|
permissions:
|
|
issues: write
|
|
pull-requests: write
|
|
statuses: write
|
|
secrets:
|
|
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
|
|
NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
|
|
with:
|
|
artifact-prefix: pr-
|