From 67506595acc2c2103b9edcf464f2b1f8ae3d36c1 Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Mon, 27 Oct 2025 15:16:58 +0100 Subject: [PATCH] workflows/test: prefix artifacts 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. --- .github/workflows/build.yml | 5 ++++- .github/workflows/eval.yml | 13 +++++++++---- .github/workflows/merge-group.yml | 4 ++++ .github/workflows/pr.yml | 8 ++++++++ .github/workflows/reviewers.yml | 10 ++++++++-- .github/workflows/test.yml | 3 +++ 6 files changed, 36 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2062ccd7c14a..69bbc48c9099 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,9 @@ name: Build on: workflow_call: inputs: + artifact-prefix: + required: true + type: string baseBranch: required: true type: string @@ -100,5 +103,5 @@ jobs: contains(fromJSON(inputs.baseBranch).type, 'primary') uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: - name: nixos-manual-${{ matrix.name }} + name: ${{ inputs.artifact-prefix }}nixos-manual-${{ matrix.name }} path: nixos-manual diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index d6e6ca7a05ba..4f950b5dffd3 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -3,6 +3,9 @@ name: Eval on: workflow_call: inputs: + artifact-prefix: + required: true + type: string mergedSha: required: true type: string @@ -145,7 +148,7 @@ jobs: if: inputs.targetSha uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: - name: ${{ matrix.version && format('{0}-', matrix.version) || '' }}diff-${{ matrix.system }} + name: ${{ inputs.artifact-prefix }}${{ matrix.version && format('{0}-', matrix.version) || '' }}diff-${{ matrix.system }} path: diff/* compare: @@ -169,7 +172,7 @@ jobs: - name: Download output paths and eval stats for all systems uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: - pattern: diff-* + pattern: ${{ inputs.artifact-prefix }}diff-* path: diff merge-multiple: true @@ -202,7 +205,7 @@ jobs: - name: Upload the comparison results uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: - name: comparison + name: ${{ inputs.artifact-prefix }}comparison path: comparison/* - name: Add eval summary to commit statuses @@ -250,6 +253,7 @@ jobs: - name: Add version comparison table to job summary uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 env: + ARTIFACT_PREFIX: ${{ inputs.artifact-prefix }} SYSTEMS: ${{ inputs.systems }} VERSIONS: ${{ needs.versions.outputs.versions }} with: @@ -257,6 +261,7 @@ jobs: const { readFileSync } = require('node:fs') const path = require('node:path') + const prefix = process.env.ARTIFACT_PREFIX const systems = JSON.parse(process.env.SYSTEMS) const versions = JSON.parse(process.env.VERSIONS) @@ -272,7 +277,7 @@ jobs: [{ data: version }].concat( systems.map((system) => { try { - const artifact = path.join('versions', `${version}-diff-${system}`) + const artifact = path.join('versions', `${prefix}${version}-diff-${system}`) const time = Math.round( parseFloat( readFileSync( diff --git a/.github/workflows/merge-group.yml b/.github/workflows/merge-group.yml index 24ab1095ea7d..32fe9130b835 100644 --- a/.github/workflows/merge-group.yml +++ b/.github/workflows/merge-group.yml @@ -4,6 +4,9 @@ on: merge_group: workflow_call: inputs: + artifact-prefix: + required: true + type: string mergedSha: required: true type: string @@ -54,6 +57,7 @@ jobs: secrets: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} with: + artifact-prefix: ${{ inputs.artifact-prefix }} mergedSha: ${{ inputs.mergedSha || github.event.merge_group.head_sha }} systems: ${{ needs.prepare.outputs.systems }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 1ba548a4c44e..75b9b4be128a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,6 +3,10 @@ name: PR on: pull_request_target: workflow_call: + inputs: + artifact-prefix: + required: true + type: string secrets: CACHIX_AUTH_TOKEN: required: true @@ -85,6 +89,7 @@ jobs: secrets: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} with: + artifact-prefix: ${{ inputs.artifact-prefix }} mergedSha: ${{ needs.prepare.outputs.mergedSha }} targetSha: ${{ needs.prepare.outputs.targetSha }} systems: ${{ needs.prepare.outputs.systems }} @@ -111,6 +116,8 @@ jobs: uses: ./.github/workflows/reviewers.yml secrets: OWNER_APP_PRIVATE_KEY: ${{ secrets.OWNER_APP_PRIVATE_KEY }} + with: + artifact-prefix: ${{ inputs.artifact-prefix }} build: name: Build @@ -119,6 +126,7 @@ jobs: secrets: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} with: + artifact-prefix: ${{ inputs.artifact-prefix }} baseBranch: ${{ needs.prepare.outputs.baseBranch }} mergedSha: ${{ needs.prepare.outputs.mergedSha }} diff --git a/.github/workflows/reviewers.yml b/.github/workflows/reviewers.yml index 6d23e1dde9b7..b5d0ada43b9d 100644 --- a/.github/workflows/reviewers.yml +++ b/.github/workflows/reviewers.yml @@ -7,6 +7,10 @@ on: pull_request_target: types: [ready_for_review] workflow_call: + inputs: + artifact-prefix: + required: true + type: string secrets: OWNER_APP_PRIVATE_KEY: required: true @@ -91,6 +95,8 @@ jobs: - name: Wait for comparison to be done uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 id: eval + env: + ARTIFACT: ${{ inputs.artifact-prefix }}comparison with: script: | const run_id = (await github.rest.actions.listWorkflowRuns({ @@ -111,7 +117,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, run_id, - name: 'comparison' + name: process.env.ARTIFACT, }) if (result.data.total_count > 0) return await new Promise(resolve => setTimeout(resolve, 5000)) @@ -128,7 +134,7 @@ jobs: with: run-id: ${{ steps.eval.outputs.run-id }} github-token: ${{ github.token }} - pattern: comparison + pattern: ${{ inputs.artifact-prefix }}comparison path: comparison merge-multiple: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 67b416a6dfb2..4cac4b3f0bb6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -79,6 +79,7 @@ jobs: secrets: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} with: + artifact-prefix: mg- mergedSha: ${{ needs.prepare.outputs.mergedSha }} targetSha: ${{ needs.prepare.outputs.targetSha }} @@ -95,3 +96,5 @@ jobs: secrets: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }} + with: + artifact-prefix: pr-