From e41aae0fb673f1455bfaef4115f0eb7a9934ed6a Mon Sep 17 00:00:00 2001 From: Charlie Kolb Date: Tue, 4 Aug 2026 11:46:14 +0200 Subject: [PATCH] ci: Show workflow_dispatch inputs in workflow run names (#35496) Co-authored-by: Claude Fable 5 --- .github/workflows/build-base-image.yml | 1 + .github/workflows/ci-cla-check.yml | 1 + .github/workflows/ci-instance-ai-evals.yml | 1 + .github/workflows/ci-mcp-evals.yml | 1 + .github/workflows/clean-stale-branches.yml | 1 + .github/workflows/community-pr-close-stale.yml | 1 + .github/workflows/docker-build-push.yml | 1 + .github/workflows/mutation-health-nightly.yml | 1 + .github/workflows/release-build-daytona-snapshot.yml | 1 + .github/workflows/release-create-experiment.yml | 2 +- .github/workflows/release-create-minor-pr.yml | 1 + .github/workflows/release-create-pr.yml | 1 + .github/workflows/release-publish-new-package.yml | 1 + .github/workflows/release-push-to-channel.yml | 1 + .github/workflows/release-standalone-package.yml | 1 + .github/workflows/sbom-generation-callable.yml | 1 + .github/workflows/sec-sync-public-to-private.yml | 1 + .github/workflows/security-trivy-scan-callable.yml | 1 + .github/workflows/test-bench-reusable.yml | 1 + .github/workflows/test-e2e-helm.yml | 6 +++++- .github/workflows/test-e2e-reusable.yml | 2 +- .github/workflows/test-e2e-vm-expressions-nightly.yml | 1 + .github/workflows/test-evals-ai.yml | 1 + .github/workflows/test-evals-discovery.yml | 1 + .github/workflows/test-evals-instance-ai.yml | 1 + .github/workflows/test-evals-mcp.yml | 1 + .github/workflows/test-workflows-nightly.yml | 1 + .github/workflows/util-claude-task.yml | 4 ++++ 28 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-base-image.yml b/.github/workflows/build-base-image.yml index cb75d4fa301..257edd3af53 100644 --- a/.github/workflows/build-base-image.yml +++ b/.github/workflows/build-base-image.yml @@ -1,4 +1,5 @@ name: 'Build: Base Image' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Build: Base Image (push={0})', inputs.push) || '' }}" on: push: diff --git a/.github/workflows/ci-cla-check.yml b/.github/workflows/ci-cla-check.yml index 747ef7e0383..0d9fa9432fe 100644 --- a/.github/workflows/ci-cla-check.yml +++ b/.github/workflows/ci-cla-check.yml @@ -1,4 +1,5 @@ name: 'CI: CLA Check' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('CI: CLA Check (PR #{0})', inputs.pr_number) || '' }}" # In-house replacement for the GitHub App "CLA Bot". # diff --git a/.github/workflows/ci-instance-ai-evals.yml b/.github/workflows/ci-instance-ai-evals.yml index 0a35dff4aec..94174c1c9b3 100644 --- a/.github/workflows/ci-instance-ai-evals.yml +++ b/.github/workflows/ci-instance-ai-evals.yml @@ -1,4 +1,5 @@ name: 'Instance AI Evals: PR Gate' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Instance AI Evals: PR #{0} (tier={1})', inputs.pr, inputs.tier || 'pr') || '' }}" # The PR gate for Instance AI workflow evals. Auto-runs on PR open/reopen/ready # (non-draft, non-fork, path-filtered); manual dispatch re-runs a specific PR diff --git a/.github/workflows/ci-mcp-evals.yml b/.github/workflows/ci-mcp-evals.yml index 3946bbf2c81..c4b33b20f42 100644 --- a/.github/workflows/ci-mcp-evals.yml +++ b/.github/workflows/ci-mcp-evals.yml @@ -1,4 +1,5 @@ name: 'CI: MCP Workflow Evals' +run-name: "CI: MCP Workflow Evals (tier=${{ inputs.tier }}, iterations=${{ inputs.iterations }}, model=${{ inputs['build-model'] }}, filter=${{ inputs.filter || 'all' }})" # Runs the MCP workflow evals: builds workflows through the instance MCP server # with Claude, then scores them. Manual only (Actions tab → "Run workflow"), diff --git a/.github/workflows/clean-stale-branches.yml b/.github/workflows/clean-stale-branches.yml index 016a8a2a15e..6e4d8167a9f 100644 --- a/.github/workflows/clean-stale-branches.yml +++ b/.github/workflows/clean-stale-branches.yml @@ -1,4 +1,5 @@ name: 'Util: Clean Stale Branches' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Util: Clean Stale Branches (dry-run={0}, days={1}, exclude={2})', inputs['dry-run'], inputs.days, inputs.exclude) || '' }}" on: schedule: diff --git a/.github/workflows/community-pr-close-stale.yml b/.github/workflows/community-pr-close-stale.yml index a064d555596..2b492b5f329 100644 --- a/.github/workflows/community-pr-close-stale.yml +++ b/.github/workflows/community-pr-close-stale.yml @@ -1,4 +1,5 @@ name: 'Community: Close Stale PRs' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Community: Close Stale PRs (dry-run={0})', inputs['dry-run']) || '' }}" # Closes community PRs that were sent back to the contributor # (triage:needs-info / triage:tests-needed / Needs Feedback) and have been diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml index bd1e284c689..13cd3ca04d6 100644 --- a/.github/workflows/docker-build-push.yml +++ b/.github/workflows/docker-build-push.yml @@ -4,6 +4,7 @@ # - Uses docker-tags.mjs for tag generation, this generates the tags for the images name: 'Docker: Build and Push' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Docker: Build and Push {0} (push={1}, arm64={2})', github.ref_name, inputs.push_enabled, inputs.include_arm64) || '' }}" env: NODE_OPTIONS: '--max-old-space-size=7168' diff --git a/.github/workflows/mutation-health-nightly.yml b/.github/workflows/mutation-health-nightly.yml index a097fb2e035..120bb555897 100644 --- a/.github/workflows/mutation-health-nightly.yml +++ b/.github/workflows/mutation-health-nightly.yml @@ -1,4 +1,5 @@ name: 'Mutation Health (nightly)' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Mutation Health (mode={0}, top_n={1}, source_file={2})', inputs.mode, inputs.top_n, inputs.source_file) || '' }}" on: schedule: diff --git a/.github/workflows/release-build-daytona-snapshot.yml b/.github/workflows/release-build-daytona-snapshot.yml index 23499ae8492..4737d2d5df7 100644 --- a/.github/workflows/release-build-daytona-snapshot.yml +++ b/.github/workflows/release-build-daytona-snapshot.yml @@ -1,4 +1,5 @@ name: 'Release: Build Daytona snapshot' +run-name: 'Build Daytona snapshot for n8n@${{ inputs.n8n_version }}' on: workflow_call: diff --git a/.github/workflows/release-create-experiment.yml b/.github/workflows/release-create-experiment.yml index 17326eb0b0e..a8a1ae0f416 100644 --- a/.github/workflows/release-create-experiment.yml +++ b/.github/workflows/release-create-experiment.yml @@ -1,5 +1,5 @@ name: 'Release: Create Experiment PR' -run-name: 'Release: Create Experiment Release PR' +run-name: 'Release: Create Experiment Release PR (${{ inputs.commits }})' on: workflow_dispatch: diff --git a/.github/workflows/release-create-minor-pr.yml b/.github/workflows/release-create-minor-pr.yml index d8530beb537..89f7bea27e5 100644 --- a/.github/workflows/release-create-minor-pr.yml +++ b/.github/workflows/release-create-minor-pr.yml @@ -1,4 +1,5 @@ name: 'Release: Create Minor Release PR' +run-name: 'Release: Create Minor Release PR (force=${{ inputs.force }})' on: workflow_dispatch: diff --git a/.github/workflows/release-create-pr.yml b/.github/workflows/release-create-pr.yml index 9eaf3660f16..28460ae5209 100644 --- a/.github/workflows/release-create-pr.yml +++ b/.github/workflows/release-create-pr.yml @@ -1,4 +1,5 @@ name: 'Release: Create Pull Request' +run-name: "Release: Create ${{ inputs['release-type'] }} PR from ${{ inputs['base-branch'] }}" on: workflow_call: diff --git a/.github/workflows/release-publish-new-package.yml b/.github/workflows/release-publish-new-package.yml index c2f0c28f8a6..39259a3bf97 100644 --- a/.github/workflows/release-publish-new-package.yml +++ b/.github/workflows/release-publish-new-package.yml @@ -1,4 +1,5 @@ name: 'Release: Publish New Package' +run-name: "Release: Publish New Package (${{ inputs['package-path'] }})" on: workflow_dispatch: diff --git a/.github/workflows/release-push-to-channel.yml b/.github/workflows/release-push-to-channel.yml index 66c81e212db..b433aad49c2 100644 --- a/.github/workflows/release-push-to-channel.yml +++ b/.github/workflows/release-push-to-channel.yml @@ -1,4 +1,5 @@ name: 'Release: Push to Channel' +run-name: "Release: Push n8n@${{ inputs.version }} to ${{ inputs['release-channel'] }}" on: workflow_call: diff --git a/.github/workflows/release-standalone-package.yml b/.github/workflows/release-standalone-package.yml index 186575f0db2..a1a53b67919 100644 --- a/.github/workflows/release-standalone-package.yml +++ b/.github/workflows/release-standalone-package.yml @@ -1,4 +1,5 @@ name: 'Release: Standalone Package' +run-name: 'Release: ${{ inputs.package }} (${{ inputs.bump }})' on: workflow_dispatch: diff --git a/.github/workflows/sbom-generation-callable.yml b/.github/workflows/sbom-generation-callable.yml index 2ac911c2c11..0205cdbc5f6 100644 --- a/.github/workflows/sbom-generation-callable.yml +++ b/.github/workflows/sbom-generation-callable.yml @@ -1,4 +1,5 @@ name: 'Release: Attach SBOM' +run-name: 'Release: Attach SBOM for n8n@${{ inputs.n8n_version }}' on: workflow_call: diff --git a/.github/workflows/sec-sync-public-to-private.yml b/.github/workflows/sec-sync-public-to-private.yml index ab66a32c4a7..297d766decd 100644 --- a/.github/workflows/sec-sync-public-to-private.yml +++ b/.github/workflows/sec-sync-public-to-private.yml @@ -7,6 +7,7 @@ # Manual runs always sync (for conflict recovery after failed cherry-pick). name: 'Security: Sync from Public' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Security: Sync from Public (force={0})', inputs.force) || '' }}" on: schedule: diff --git a/.github/workflows/security-trivy-scan-callable.yml b/.github/workflows/security-trivy-scan-callable.yml index 3deab7429cd..396ee5d8231 100644 --- a/.github/workflows/security-trivy-scan-callable.yml +++ b/.github/workflows/security-trivy-scan-callable.yml @@ -1,4 +1,5 @@ name: Security - Scan Docker Image With Trivy +run-name: 'Trivy scan of ${{ inputs.image_ref }}' on: workflow_dispatch: diff --git a/.github/workflows/test-bench-reusable.yml b/.github/workflows/test-bench-reusable.yml index 39e0f78493e..f41628ec0bc 100644 --- a/.github/workflows/test-bench-reusable.yml +++ b/.github/workflows/test-bench-reusable.yml @@ -1,4 +1,5 @@ name: 'Test: Benchmarks' +run-name: "Test: Benchmarks (${{ inputs.ref || github.ref_name }})" on: workflow_call: diff --git a/.github/workflows/test-e2e-helm.yml b/.github/workflows/test-e2e-helm.yml index 1596fe422ae..61bf480aae1 100644 --- a/.github/workflows/test-e2e-helm.yml +++ b/.github/workflows/test-e2e-helm.yml @@ -1,4 +1,5 @@ name: 'Test: E2E Helm Chart' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Test: E2E Helm Chart (mode={0}, branch={1}, chart={2})', inputs.mode, inputs.branch || 'default', inputs['helm-chart-ref']) || '' }}" on: pull_request: @@ -94,7 +95,10 @@ jobs: env: TESTCONTAINERS_RYUK_DISABLED: 'true' run: | - npx tsx packages/testing/containers/helm-start-stack.ts \ + # tsx is a devDependency of n8n-containers, not the repo root, so it + # must run via that package (root `npx tsx` stopped resolving when + # shamefully-hoist was removed). + pnpm --filter n8n-containers exec tsx helm-start-stack.ts \ --env E2E_TESTS=true --env NODE_ENV=development \ --mode "${{ inputs.mode || 'queue' }}" \ --image "${{ env.DOCKER_IMAGE }}" \ diff --git a/.github/workflows/test-e2e-reusable.yml b/.github/workflows/test-e2e-reusable.yml index 8672ebccc1d..9f1ffd53867 100644 --- a/.github/workflows/test-e2e-reusable.yml +++ b/.github/workflows/test-e2e-reusable.yml @@ -108,7 +108,7 @@ jobs: - name: Pre-pull Test Container Images if: ${{ !contains(inputs.test-command, 'test:local') }} - run: npx tsx packages/testing/containers/pull-test-images.ts ${{ matrix.images }} || true + run: pnpm --filter n8n-containers exec tsx pull-test-images.ts ${{ matrix.images }} || true - name: Filter specs to previous-attempt failures if: github.run_attempt > 1 && matrix.specs != '' diff --git a/.github/workflows/test-e2e-vm-expressions-nightly.yml b/.github/workflows/test-e2e-vm-expressions-nightly.yml index 7f48ac612fd..2d0f51c977c 100644 --- a/.github/workflows/test-e2e-vm-expressions-nightly.yml +++ b/.github/workflows/test-e2e-vm-expressions-nightly.yml @@ -1,4 +1,5 @@ name: 'Test: E2E VM Expressions Nightly' +run-name: "Test: E2E VM Expressions (${{ inputs.branch || 'nightly' }})" on: schedule: diff --git a/.github/workflows/test-evals-ai.yml b/.github/workflows/test-evals-ai.yml index c1176dc8529..df13780d35a 100644 --- a/.github/workflows/test-evals-ai.yml +++ b/.github/workflows/test-evals-ai.yml @@ -1,4 +1,5 @@ name: 'Test: Evals AI' +run-name: "${{ github.event_name == 'workflow_dispatch' && format('Test: Evals AI on {0} (eval_type={1}, spec_repetitions={2}, spec_judges={3})', inputs.branch, inputs.eval_type, inputs.spec_repetitions, inputs.spec_judges) || '' }}" on: push: diff --git a/.github/workflows/test-evals-discovery.yml b/.github/workflows/test-evals-discovery.yml index a7fe2a7970b..3d5292bac26 100644 --- a/.github/workflows/test-evals-discovery.yml +++ b/.github/workflows/test-evals-discovery.yml @@ -1,4 +1,5 @@ name: 'Test: Instance AI Discovery Evals' +run-name: "Test: Instance AI Discovery Evals (branch=${{ inputs.branch || 'master' }}, filter=${{ inputs.filter || 'all' }}, trials=${{ inputs.trials }})" on: workflow_call: diff --git a/.github/workflows/test-evals-instance-ai.yml b/.github/workflows/test-evals-instance-ai.yml index 458a672b969..2128aefd043 100644 --- a/.github/workflows/test-evals-instance-ai.yml +++ b/.github/workflows/test-evals-instance-ai.yml @@ -1,4 +1,5 @@ name: 'Instance AI Evals: Experiments' +run-name: "Instance AI Evals: ${{ inputs.branch || 'master' }} (tier=${{ inputs.tier || 'all' }}, iterations=${{ inputs.iterations }}, model=${{ inputs.model || 'default' }}, experiment=${{ inputs['experiment-name'] || '-' }})" on: workflow_call: diff --git a/.github/workflows/test-evals-mcp.yml b/.github/workflows/test-evals-mcp.yml index 058f853e780..4db888c873c 100644 --- a/.github/workflows/test-evals-mcp.yml +++ b/.github/workflows/test-evals-mcp.yml @@ -1,4 +1,5 @@ name: 'Test: MCP Workflow Evals' +run-name: "Test: MCP Workflow Evals (branch=${{ inputs.branch || github.ref_name }}, tier=${{ inputs.tier }}, iterations=${{ inputs.iterations }}, model=${{ inputs['build-model'] }})" # Scores workflows built through the instance MCP server (packages/cli/src/modules/mcp) # with the Instance AI verifier, using the fused `--build-via-mcp` lane model: diff --git a/.github/workflows/test-workflows-nightly.yml b/.github/workflows/test-workflows-nightly.yml index b30dd16fd0c..1292e872341 100644 --- a/.github/workflows/test-workflows-nightly.yml +++ b/.github/workflows/test-workflows-nightly.yml @@ -1,4 +1,5 @@ name: 'Test: Workflows Nightly' +run-name: 'Test: Workflows Nightly (${{ inputs.git_ref_to_test }})' # Nightly schedule disabled (DEVP-544): the "Run Workflow Tests with Snapshots" # job fails the majority of its runs due to host-level port contention on shared diff --git a/.github/workflows/util-claude-task.yml b/.github/workflows/util-claude-task.yml index ee510181400..3f9c67c2305 100644 --- a/.github/workflows/util-claude-task.yml +++ b/.github/workflows/util-claude-task.yml @@ -1,4 +1,8 @@ name: 'Util: Claude Task Runner' +# The `task` input is deliberately not in the run name: dispatchers pass large +# multiline payloads (e.g. a full Linear issue as JSON) that must not appear in +# the publicly visible run list. +run-name: 'Util: Claude Task Runner (model=${{ inputs.model }}, ref=${{ inputs.ref }})' on: workflow_dispatch: