@htekdev/actions-debugger 1.0.23 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/errors/caching-artifacts/artifact-minimum-retention-one-day.yml +153 -0
- package/errors/caching-artifacts/cache-api-propagation-delay-post-save.yml +128 -0
- package/errors/caching-artifacts/cache-backend-internal-error-skipped.yml +75 -0
- package/errors/caching-artifacts/cache-hit-step-id-case-sensitive-mismatch.yml +95 -0
- package/errors/caching-artifacts/cache-save-post-step-skipped-on-failure.yml +114 -0
- package/errors/concurrency-timing/deploy-pages-in-progress-deployment-wedged.yml +70 -0
- package/errors/concurrency-timing/deployment-review-timeout-expired.yml +88 -0
- package/errors/concurrency-timing/job-concurrency-scope-per-run-not-global.yml +81 -0
- package/errors/concurrency-timing/merge-queue-concurrency-cancel-blocks-all.yml +86 -0
- package/errors/concurrency-timing/reusable-workflow-github-workflow-context-cancel.yml +124 -0
- package/errors/concurrency-timing/runner-scale-set-jobs-never-start.yml +123 -0
- package/errors/concurrency-timing/runner-temp-dir-race-concurrent-workers.yml +90 -0
- package/errors/known-unsolved/artifact-download-url-unauthenticated-404.yml +98 -0
- package/errors/known-unsolved/checkout-v6-credentials-docker-run-manual.yml +105 -0
- package/errors/known-unsolved/concurrency-groups-repo-scoped-only.yml +138 -0
- package/errors/known-unsolved/environment-deployment-false-custom-protection.yml +93 -0
- package/errors/known-unsolved/matrix-256-job-limit.yml +142 -0
- package/errors/known-unsolved/merge-group-paths-filter-not-supported.yml +137 -0
- package/errors/known-unsolved/no-job-allow-failure.yml +73 -0
- package/errors/known-unsolved/schedule-cron-hours-long-queue-drift.yml +101 -0
- package/errors/permissions-auth/checkout-persist-credentials-token-write.yml +90 -0
- package/errors/permissions-auth/checkout-v6-cross-repo-token-override.yml +103 -0
- package/errors/permissions-auth/create-github-app-token-cross-job-token-revoked.yml +95 -0
- package/errors/permissions-auth/github-token-contents-write-missing-git-push.yml +117 -0
- package/errors/permissions-auth/org-actions-policy-blocks-unapproved-action.yml +106 -0
- package/errors/runner-environment/codeql-action-v2-deprecated.yml +110 -0
- package/errors/runner-environment/macos-26-openssl-3-system-library-breaking.yml +114 -0
- package/errors/runner-environment/macos-26-ruby-34-default-upgrade.yml +114 -0
- package/errors/runner-environment/macos-26-xcode-default-265-pin-required.yml +99 -0
- package/errors/runner-environment/macos-latest-label-switches-to-macos26.yml +127 -0
- package/errors/runner-environment/maven-gradle-403-cache-backend-outage.yml +116 -0
- package/errors/runner-environment/node20-removed-toolcache-default-node22.yml +104 -0
- package/errors/runner-environment/powershell-74-76-threadjob-module-rename.yml +124 -0
- package/errors/runner-environment/self-hosted-runner-not-found.yml +134 -0
- package/errors/runner-environment/self-hosted-runner-selinux-service-exec-failure.yml +116 -0
- package/errors/runner-environment/service-container-no-healthcheck.yml +158 -0
- package/errors/runner-environment/setup-node-v5-corepack-pnpm-not-found.yml +101 -0
- package/errors/runner-environment/setup-node-yarn-not-installed-self-hosted.yml +76 -0
- package/errors/runner-environment/setup-python-externally-managed-env-error.yml +95 -0
- package/errors/runner-environment/windows-2019-runner-retired-june2025.yml +118 -0
- package/errors/runner-environment/windows-2022-docker-daemon-not-started.yml +108 -0
- package/errors/silent-failures/cache-hit-output-string-not-boolean.yml +96 -0
- package/errors/silent-failures/checkout-lfs-pointer-not-content.yml +105 -0
- package/errors/silent-failures/reusable-workflow-output-skipped-contains-secret.yml +115 -0
- package/errors/silent-failures/setup-node-silent-download-exit-zero.yml +105 -0
- package/errors/silent-failures/setup-python-truncated-manifest-silent-exit.yml +111 -0
- package/errors/silent-failures/undefined-env-expression-empty-string-silent.yml +115 -0
- package/errors/silent-failures/windows-powershell-github-output-bash-syntax.yml +118 -0
- package/errors/triggers/fork-pr-first-time-contributor-approval-required.yml +142 -0
- package/errors/triggers/on-push-branches-glob-star-no-slash-match.yml +78 -0
- package/errors/triggers/pull-request-target-env-protection-default-branch-eval.yml +117 -0
- package/errors/triggers/required-status-check-renamed-never-passes.yml +87 -0
- package/errors/triggers/schedule-cron-self-hosted-runner-not-triggered.yml +107 -0
- package/errors/yaml-syntax/case-function-runner-version-too-old.yml +100 -0
- package/errors/yaml-syntax/composite-action-run-shell-missing.yml +90 -0
- package/errors/yaml-syntax/composite-action-secrets-context-unavailable.yml +99 -0
- package/errors/yaml-syntax/github-script-octokit-renamed-to-github.yml +130 -0
- package/errors/yaml-syntax/labeler-v5-config-format-breaking.yml +67 -0
- package/errors/yaml-syntax/runs-on-expression-array-syntax-error.yml +121 -0
- package/errors/yaml-syntax/setup-go-matrix-version-float-coercion.yml +69 -0
- package/package.json +1 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
id: yaml-syntax-029
|
|
2
|
+
title: "Expression Interpolation in runs-on Array Literal Causes YAML Syntax Error"
|
|
3
|
+
category: yaml-syntax
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- runs-on
|
|
7
|
+
- self-hosted
|
|
8
|
+
- expression
|
|
9
|
+
- dynamic-runner
|
|
10
|
+
- fromjson
|
|
11
|
+
- workflow-dispatch
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: "Invalid workflow file|You have an error in your yaml syntax"
|
|
14
|
+
flags: "i"
|
|
15
|
+
- regex: "Unexpected value.*\\$\\{\\{|yaml.*syntax.*runs.on"
|
|
16
|
+
flags: "i"
|
|
17
|
+
- regex: "Line.*Col.*Unexpected value.*\\{|error.*yaml.*line.*runs.on"
|
|
18
|
+
flags: "i"
|
|
19
|
+
error_messages:
|
|
20
|
+
- "Invalid workflow file: .github/workflows/deploy.yml"
|
|
21
|
+
- "You have an error in your yaml syntax on line N"
|
|
22
|
+
- "Error: The workflow is not valid. .github/workflows/....yml (Line: N, Col: N): Unexpected value '{{'"
|
|
23
|
+
- "Workflow is not valid. (.github/workflows/....yml): There is no event trigger on line N"
|
|
24
|
+
root_cause: |
|
|
25
|
+
GitHub Actions YAML is fully parsed before any expression evaluation occurs. When an
|
|
26
|
+
expression like ${{ inputs.runner-label }} appears as a bare value inside a YAML
|
|
27
|
+
flow sequence (square bracket array), the YAML parser encounters the { character
|
|
28
|
+
as an unquoted scalar — which is invalid in YAML flow sequence context.
|
|
29
|
+
|
|
30
|
+
The error typically surfaces on the job definition line rather than the runs-on
|
|
31
|
+
line itself, which makes it confusing to diagnose. The workflow annotation says
|
|
32
|
+
"invalid workflow file" or "yaml syntax error" pointing at the job name line.
|
|
33
|
+
|
|
34
|
+
Common trigger: Attempting to dynamically select a self-hosted runner label from
|
|
35
|
+
a workflow_dispatch input or matrix variable by writing:
|
|
36
|
+
runs-on: [ self-hosted, ${{ inputs.server-target }} ]
|
|
37
|
+
|
|
38
|
+
This is a YAML parsing error, not a GitHub Actions expression error — the file
|
|
39
|
+
fails validation before any runs even start.
|
|
40
|
+
|
|
41
|
+
The idiomatic fix is to pass the label array as a JSON string and deserialize it
|
|
42
|
+
with fromJSON(), which is supported natively in runs-on since 2021.
|
|
43
|
+
fix: |
|
|
44
|
+
Three approaches depending on your scenario:
|
|
45
|
+
|
|
46
|
+
1. fromJSON() with JSON array input (most flexible, recommended for multi-label):
|
|
47
|
+
Pass the runs-on labels as a JSON array string and use fromJSON() to deserialize.
|
|
48
|
+
This fully supports dynamic multi-label selection with no YAML parsing issues.
|
|
49
|
+
|
|
50
|
+
2. Quoted expression (for simple labels without YAML-special characters):
|
|
51
|
+
Quoting the expression as "${{ inputs.label }}" makes it a valid YAML string.
|
|
52
|
+
Works when the label value is a simple string like "server1" or "linux".
|
|
53
|
+
|
|
54
|
+
3. Single dynamic label (when self-hosted prefix is not required):
|
|
55
|
+
Use runs-on: ${{ inputs.runner_target }} directly without the array syntax.
|
|
56
|
+
Self-hosted runners can be identified by unique label alone.
|
|
57
|
+
fix_code:
|
|
58
|
+
- language: yaml
|
|
59
|
+
label: "fromJSON() — pass full label array as JSON string (recommended)"
|
|
60
|
+
code: |
|
|
61
|
+
on:
|
|
62
|
+
workflow_dispatch:
|
|
63
|
+
inputs:
|
|
64
|
+
runs_on:
|
|
65
|
+
description: 'Runner labels as JSON array (e.g. ["self-hosted","linux"])'
|
|
66
|
+
required: true
|
|
67
|
+
type: string
|
|
68
|
+
default: '["self-hosted", "linux"]'
|
|
69
|
+
|
|
70
|
+
jobs:
|
|
71
|
+
build:
|
|
72
|
+
runs-on: ${{ fromJSON(inputs.runs_on) }}
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
- run: echo "Running on labels ${{ inputs.runs_on }}"
|
|
76
|
+
|
|
77
|
+
- language: yaml
|
|
78
|
+
label: "Quoted expression — for simple label values without YAML-special chars"
|
|
79
|
+
code: |
|
|
80
|
+
on:
|
|
81
|
+
workflow_dispatch:
|
|
82
|
+
inputs:
|
|
83
|
+
environment:
|
|
84
|
+
description: 'Target environment runner label'
|
|
85
|
+
required: true
|
|
86
|
+
default: 'staging'
|
|
87
|
+
|
|
88
|
+
jobs:
|
|
89
|
+
deploy:
|
|
90
|
+
runs-on: [ self-hosted, "${{ inputs.environment }}" ]
|
|
91
|
+
steps:
|
|
92
|
+
- run: echo "Deploying to ${{ inputs.environment }}"
|
|
93
|
+
|
|
94
|
+
- language: yaml
|
|
95
|
+
label: "Single dynamic label without array syntax"
|
|
96
|
+
code: |
|
|
97
|
+
on:
|
|
98
|
+
workflow_dispatch:
|
|
99
|
+
inputs:
|
|
100
|
+
runner_target:
|
|
101
|
+
description: 'Self-hosted runner label (e.g. server1, server2)'
|
|
102
|
+
required: true
|
|
103
|
+
default: 'server1'
|
|
104
|
+
|
|
105
|
+
jobs:
|
|
106
|
+
deploy:
|
|
107
|
+
runs-on: ${{ inputs.runner_target }}
|
|
108
|
+
steps:
|
|
109
|
+
- run: echo "Running on ${{ inputs.runner_target }}"
|
|
110
|
+
prevention:
|
|
111
|
+
- "Never place bare ${{ }} expressions inside YAML flow sequences (square bracket arrays) — always quote or use fromJSON()."
|
|
112
|
+
- "For dynamic multi-label runner selection, use the fromJSON() pattern with a JSON-string workflow input."
|
|
113
|
+
- "Validate workflow YAML before committing with: gh workflow list --repo owner/repo or a local YAML linter."
|
|
114
|
+
- "Document expected input format in the workflow input description: 'JSON array, e.g. [\"self-hosted\",\"linux\"]'."
|
|
115
|
+
docs:
|
|
116
|
+
- url: "https://stackoverflow.com/questions/68732881/how-do-you-use-an-input-variable-to-specify-which-self-hosted-runner-a-github-ac"
|
|
117
|
+
label: "Stack Overflow: Input variable for self-hosted runner in runs-on"
|
|
118
|
+
- url: "https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on"
|
|
119
|
+
label: "GitHub Docs: jobs.<job_id>.runs-on workflow syntax"
|
|
120
|
+
- url: "https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#fromjson"
|
|
121
|
+
label: "GitHub Docs: fromJSON() expression function"
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
id: yaml-syntax-027
|
|
2
|
+
title: "setup-go matrix version YAML float coercion installs wrong Go version"
|
|
3
|
+
category: yaml-syntax
|
|
4
|
+
severity: silent-failure
|
|
5
|
+
tags:
|
|
6
|
+
- setup-go
|
|
7
|
+
- matrix
|
|
8
|
+
- yaml-float
|
|
9
|
+
- version-mismatch
|
|
10
|
+
- go-version
|
|
11
|
+
- silent-failure
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: "Setup go version spec 1\\.2(?!\\d)"
|
|
14
|
+
flags: "i"
|
|
15
|
+
- regex: "Acquiring go1\\.2\\.2 from"
|
|
16
|
+
flags: "i"
|
|
17
|
+
error_messages:
|
|
18
|
+
- "Setup go version spec 1.2"
|
|
19
|
+
- "Acquiring go1.2.2 from https://storage.googleapis.com/golang/go1.2.2.linux-amd64.tar.gz"
|
|
20
|
+
- "Error: The operation was canceled."
|
|
21
|
+
- "Attempting to download 1.2..."
|
|
22
|
+
- "Not found in manifest. Falling back to download directly from Go"
|
|
23
|
+
root_cause: |
|
|
24
|
+
When go-version is specified as a bare number in a matrix (e.g., version: [1.22]),
|
|
25
|
+
YAML parses the value 1.22 as a floating-point number. Due to floating-point precision,
|
|
26
|
+
this gets coerced to the string "1.2" when the action processes it, dropping the trailing
|
|
27
|
+
zero. setup-go then resolves "1.2" to the latest 1.2.x release, which is Go 1.2.2 from 2013.
|
|
28
|
+
This silent failure causes the wrong Go version to be installed, or the action errors out
|
|
29
|
+
when 1.2.2 cannot be downloaded, with no clear indication that the version string was silently
|
|
30
|
+
truncated by YAML parsing.
|
|
31
|
+
fix: |
|
|
32
|
+
Quote the go-version value in the matrix to force YAML to treat it as a string, or append
|
|
33
|
+
.x to make the version unambiguous. Alternatively, use go-version-file: go.mod to derive
|
|
34
|
+
the version from your repository's go.mod file.
|
|
35
|
+
fix_code:
|
|
36
|
+
- language: yaml
|
|
37
|
+
label: "Quote version in matrix (prevents YAML float coercion)"
|
|
38
|
+
code: |
|
|
39
|
+
jobs:
|
|
40
|
+
build:
|
|
41
|
+
strategy:
|
|
42
|
+
matrix:
|
|
43
|
+
go-version: ['1.22', '1.23', '1.24']
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/setup-go@v5
|
|
47
|
+
with:
|
|
48
|
+
go-version: ${{ matrix.go-version }}
|
|
49
|
+
- language: yaml
|
|
50
|
+
label: "Use go-version-file instead (recommended)"
|
|
51
|
+
code: |
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- uses: actions/setup-go@v5
|
|
55
|
+
with:
|
|
56
|
+
go-version-file: 'go.mod'
|
|
57
|
+
prevention:
|
|
58
|
+
- "Always quote go-version values in YAML matrix (e.g., '1.22', not 1.22)"
|
|
59
|
+
- "Use the .x wildcard suffix to explicitly request latest patch: '1.22.x'"
|
|
60
|
+
- "Prefer go-version-file: go.mod to avoid hardcoding versions entirely"
|
|
61
|
+
- "Verify installed version with a 'run: go version' step after setup"
|
|
62
|
+
- "This truncation affects any two-component semver ending in zero: 1.20 -> 1.2, 1.10 -> 1.1"
|
|
63
|
+
docs:
|
|
64
|
+
- url: "https://github.com/actions/setup-go/issues/507"
|
|
65
|
+
label: "actions/setup-go#507: Go version 1.22 gets parsed to 1.2.2"
|
|
66
|
+
- url: "https://github.com/actions/setup-go#supported-version-syntax"
|
|
67
|
+
label: "setup-go: Supported version syntax"
|
|
68
|
+
- url: "https://yaml.org/type/float.html"
|
|
69
|
+
label: "YAML float type specification"
|
package/package.json
CHANGED