@htekdev/actions-debugger 1.0.117 → 1.0.119
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/caching-artifacts-069.yml +133 -0
- package/errors/caching-artifacts/caching-artifacts-070.yml +94 -0
- package/errors/concurrency-timing/concurrency-timing-056.yml +127 -0
- package/errors/concurrency-timing/concurrency-timing-057.yml +115 -0
- package/errors/concurrency-timing/workflow-run-head-branch-null-schedule-dispatch-concurrency.yml +135 -0
- package/errors/known-unsolved/known-unsolved-067.yml +117 -0
- package/errors/known-unsolved/known-unsolved-068.yml +124 -0
- package/errors/known-unsolved/node-action-post-step-wrong-inputs-nested-composite.yml +133 -0
- package/errors/known-unsolved/ubuntu-24-04-arm64-missing-binder-ashmem-kernel-modules.yml +149 -0
- package/errors/permissions-auth/permissions-auth-069.yml +161 -0
- package/errors/runner-environment/arc-autoscalinglistener-ephemeralrunnerset-stale-after-upgrade.yml +134 -0
- package/errors/runner-environment/broker-server-socket-exception-nat-timeout-linux.yml +114 -0
- package/errors/runner-environment/runner-environment-210.yml +105 -0
- package/errors/runner-environment/runner-environment-213.yml +142 -0
- package/errors/runner-environment/runner-environment-214.yml +107 -0
- package/errors/runner-environment/runner-environment-215.yml +93 -0
- package/errors/runner-environment/runner-environment-216.yml +82 -0
- package/errors/runner-environment/runner-environment-217.yml +99 -0
- package/errors/runner-environment/runner-environment-218.yml +111 -0
- package/errors/runner-environment/ubuntu-24-man-db-dpkg-trigger-apt-install-stall.yml +94 -0
- package/errors/runner-environment/ubuntu-26-04-missing-preinstalled-tools.yml +178 -0
- package/errors/runner-environment/upload-artifact-v6-proxy-headers-leak-strict-proxy-fail.yml +101 -0
- package/errors/silent-failures/silent-failures-108.yml +108 -0
- package/errors/silent-failures/silent-failures-109.yml +119 -0
- package/errors/silent-failures/silent-failures-110.yml +91 -0
- package/errors/silent-failures/silent-failures-111.yml +107 -0
- package/errors/triggers/pull-request-labeled-fires-all-labels-no-name-filter.yml +110 -0
- package/errors/yaml-syntax/duplicate-step-id-within-job-scope-validation-error.yml +130 -0
- package/errors/yaml-syntax/yaml-syntax-072.yml +93 -0
- package/errors/yaml-syntax/yaml-syntax-073.yml +103 -0
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
id: runner-environment-214
|
|
2
|
+
title: 'setup-java Fails with "Invalid Version" for JetBrains Runtime 4-Part Semver (e.g. 17.0.8.1+1080.1)'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- setup-java
|
|
7
|
+
- jbr
|
|
8
|
+
- jetbrains-runtime
|
|
9
|
+
- java
|
|
10
|
+
- semver
|
|
11
|
+
- version-parsing
|
|
12
|
+
- windows
|
|
13
|
+
- ubuntu
|
|
14
|
+
patterns:
|
|
15
|
+
- regex: 'Java setup process failed due to:\s*Invalid Version:\s*\d+\.\d+\.\d+\.\d+\+'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: 'Invalid Version:\s*\d+\.\d+\.\d+\.\d+'
|
|
18
|
+
flags: 'i'
|
|
19
|
+
- regex: 'java setup.*failed.*Invalid Version'
|
|
20
|
+
flags: 'i'
|
|
21
|
+
error_messages:
|
|
22
|
+
- 'Error: Java setup process failed due to: Invalid Version: 17.0.8.1+1080.1'
|
|
23
|
+
- 'Error: Java setup process failed due to: Invalid Version: 25.0.3+480.61'
|
|
24
|
+
- 'Error: Java setup process failed due to: Invalid Version: 21.0.5.1+1100.2'
|
|
25
|
+
root_cause: |
|
|
26
|
+
JetBrains Runtime (JBR) version strings use a 4-part numeric format:
|
|
27
|
+
`major.minor.patch.update+build.sub-build` (e.g. `17.0.8.1+1080.1`).
|
|
28
|
+
This does NOT conform to standard semantic versioning (3-part numeric).
|
|
29
|
+
|
|
30
|
+
The `actions/setup-java` version resolver uses a semver parser internally.
|
|
31
|
+
When the user passes a full pinned JBR version string containing a 4-part
|
|
32
|
+
numeric prefix (the `.1` after the patch component), the parser throws:
|
|
33
|
+
|
|
34
|
+
"Invalid Version: 17.0.8.1+1080.1"
|
|
35
|
+
|
|
36
|
+
Affected distributions: `jetbrains` (JBR) distribution only.
|
|
37
|
+
Affected platforms: Ubuntu and Windows (both throw the same error).
|
|
38
|
+
Unaffected: Oracle, Temurin, Adopt, Corretto and other distributions whose
|
|
39
|
+
version strings use standard 3-part semver (e.g. `21.0.3+9`).
|
|
40
|
+
|
|
41
|
+
The root cause is that JBR independently versions patch updates
|
|
42
|
+
(the `.1` suffix), meaning a JBR patch release version is 4 integers deep,
|
|
43
|
+
which the bundled semver parser does not accept.
|
|
44
|
+
|
|
45
|
+
Tracked upstream: https://github.com/actions/setup-java/issues/1008 (open May 2026)
|
|
46
|
+
Fix PR: https://github.com/actions/setup-java/pull/1009 (isVersionSatisfies patch — pending merge)
|
|
47
|
+
fix: |
|
|
48
|
+
Until https://github.com/actions/setup-java/pull/1009 is merged and released,
|
|
49
|
+
do NOT pin the full 4-part JBR version string. Use either:
|
|
50
|
+
|
|
51
|
+
1. The 3-part version prefix (major.minor.patch) — setup-java will resolve the
|
|
52
|
+
latest available JBR sub-build for that patch:
|
|
53
|
+
|
|
54
|
+
- uses: actions/setup-java@v5
|
|
55
|
+
with:
|
|
56
|
+
distribution: 'jetbrains'
|
|
57
|
+
java-version: '17.0.8' # omit the .1 suffix
|
|
58
|
+
|
|
59
|
+
2. Just the major version for the latest JBR:
|
|
60
|
+
|
|
61
|
+
- uses: actions/setup-java@v5
|
|
62
|
+
with:
|
|
63
|
+
distribution: 'jetbrains'
|
|
64
|
+
java-version: '17'
|
|
65
|
+
|
|
66
|
+
3. The pre-release format accepted by the current parser (major.minor.patch
|
|
67
|
+
with the build metadata only, omitting the update digit):
|
|
68
|
+
|
|
69
|
+
- uses: actions/setup-java@v5
|
|
70
|
+
with:
|
|
71
|
+
distribution: 'jetbrains'
|
|
72
|
+
java-version: '17.0.8+1080.1' # skip the 4th integer; use build metadata
|
|
73
|
+
fix_code:
|
|
74
|
+
- language: yaml
|
|
75
|
+
label: 'Use 3-part version prefix to avoid "Invalid Version" on JBR'
|
|
76
|
+
code: |
|
|
77
|
+
- name: Set up JBR 17 (JetBrains Runtime)
|
|
78
|
+
uses: actions/setup-java@v5
|
|
79
|
+
with:
|
|
80
|
+
distribution: 'jetbrains'
|
|
81
|
+
java-version: '17.0.8' # NOT '17.0.8.1+1080.1' — 4-part fails the parser
|
|
82
|
+
- language: yaml
|
|
83
|
+
label: 'Major-version pin (simplest, always resolves latest JBR for that major)'
|
|
84
|
+
code: |
|
|
85
|
+
- name: Set up JBR 25
|
|
86
|
+
uses: actions/setup-java@v5
|
|
87
|
+
with:
|
|
88
|
+
distribution: 'jetbrains'
|
|
89
|
+
java-version: '25'
|
|
90
|
+
prevention:
|
|
91
|
+
- 'Check the JBR releases page to understand the version format before pinning.
|
|
92
|
+
JBR versions are `major.minor.patch.update+build.sub-build`; only use the
|
|
93
|
+
3-part prefix (major.minor.patch) or major-version-only with setup-java.'
|
|
94
|
+
- 'Watch https://github.com/actions/setup-java/pull/1009 for when the fix merges
|
|
95
|
+
so full 4-part JBR version strings become accepted.'
|
|
96
|
+
- 'For reproducibility without pinning the exact JBR sub-build, consider
|
|
97
|
+
using a `.java-version` file with a 3-part version string and referencing it
|
|
98
|
+
via `java-version-file:` in setup-java.'
|
|
99
|
+
docs:
|
|
100
|
+
- url: 'https://github.com/actions/setup-java/issues/1008'
|
|
101
|
+
label: 'setup-java #1008 — Error parsing JBR version 17.0.8.1+1080.1 (open, May 2026)'
|
|
102
|
+
- url: 'https://github.com/actions/setup-java/pull/1009'
|
|
103
|
+
label: 'setup-java PR #1009 — fix: reject non-semver candidate versions in isVersionSatisfies (pending)'
|
|
104
|
+
- url: 'https://github.com/actions/setup-java?tab=readme-ov-file#supported-distributions'
|
|
105
|
+
label: 'setup-java README — Supported distributions (JetBrains / JBR)'
|
|
106
|
+
- url: 'https://github.com/JetBrains/JetBrainsRuntime/releases'
|
|
107
|
+
label: 'JetBrains Runtime releases — version format reference'
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
id: runner-environment-215
|
|
2
|
+
title: 'setup-node fails with EBADDEVENGINES when devEngines.packageManager.version does not match initial npm'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- setup-node
|
|
7
|
+
- npm
|
|
8
|
+
- devEngines
|
|
9
|
+
- EBADDEVENGINES
|
|
10
|
+
- package-manager
|
|
11
|
+
- npm-version
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'npm error code EBADDEVENGINES'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'npm error EBADDEVENGINES.*Invalid devEngines\.packageManager'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
- regex: 'npm error EBADDEVENGINES.*Invalid semver version.*does not match.*for "packageManager"'
|
|
18
|
+
flags: 'i'
|
|
19
|
+
- regex: '/npm config get cache\s*npm error code EBADDEVENGINES'
|
|
20
|
+
flags: 'is'
|
|
21
|
+
error_messages:
|
|
22
|
+
- 'npm error code EBADDEVENGINES'
|
|
23
|
+
- 'npm error EBADDEVENGINES The developer of this package has specified the following through devEngines'
|
|
24
|
+
- 'npm error EBADDEVENGINES Invalid devEngines.packageManager'
|
|
25
|
+
- 'npm error EBADDEVENGINES Invalid semver version "^11.10.0" does not match "10.9.7" for "packageManager"'
|
|
26
|
+
root_cause: |
|
|
27
|
+
actions/setup-node@v6 runs `npm config get cache` immediately after installing Node.js to
|
|
28
|
+
determine the npm cache path before activating the package-manager-cache feature. If
|
|
29
|
+
package.json declares a `devEngines.packageManager.version` constraint (Node.js 22.6+
|
|
30
|
+
feature) that the bundled npm does NOT satisfy, npm exits with EBADDEVENGINES before
|
|
31
|
+
returning the cache path.
|
|
32
|
+
|
|
33
|
+
The failure happens before setup-node has a chance to upgrade npm to the required version,
|
|
34
|
+
creating a catch-22: the action needs the cache path to set up, but npm won't answer
|
|
35
|
+
because the version constraint is not yet met.
|
|
36
|
+
|
|
37
|
+
Common scenario: project requires `npm@^11.10.0` (for `min-release-age` or other features
|
|
38
|
+
added in npm 11.x), but Node 22 ships with npm 10.x. The first `npm` invocation fails
|
|
39
|
+
immediately when devEngines enforcement is active.
|
|
40
|
+
fix: |
|
|
41
|
+
Option 1 (recommended) — add `"onFail": "warn"` to the devEngines.packageManager block.
|
|
42
|
+
This downgrades version mismatches to warnings so npm commands still complete, letting
|
|
43
|
+
setup-node finish. Install the required npm version in a subsequent step.
|
|
44
|
+
|
|
45
|
+
Option 2 — pin Node.js to a version whose bundled npm satisfies devEngines (often
|
|
46
|
+
impractical).
|
|
47
|
+
|
|
48
|
+
Option 3 — set `package-manager-cache: false` in setup-node to skip the cache-path probe
|
|
49
|
+
entirely and manage npm caching separately.
|
|
50
|
+
fix_code:
|
|
51
|
+
- language: yaml
|
|
52
|
+
label: 'Option 1 — add onFail: warn to package.json (fix the root cause)'
|
|
53
|
+
code: |
|
|
54
|
+
# In package.json:
|
|
55
|
+
# {
|
|
56
|
+
# "devEngines": {
|
|
57
|
+
# "packageManager": {
|
|
58
|
+
# "name": "npm",
|
|
59
|
+
# "version": "^11.10.0",
|
|
60
|
+
# "onFail": "warn" <-- add this
|
|
61
|
+
# }
|
|
62
|
+
# }
|
|
63
|
+
# }
|
|
64
|
+
|
|
65
|
+
# In workflow — install the required npm version after setup-node succeeds:
|
|
66
|
+
- uses: actions/setup-node@v6
|
|
67
|
+
with:
|
|
68
|
+
node-version-file: package.json
|
|
69
|
+
- run: npm install -g npm@^11.10.0
|
|
70
|
+
- language: yaml
|
|
71
|
+
label: 'Option 3 — disable package-manager-cache in setup-node'
|
|
72
|
+
code: |
|
|
73
|
+
- uses: actions/setup-node@v6
|
|
74
|
+
with:
|
|
75
|
+
node-version: '22'
|
|
76
|
+
package-manager-cache: false # skip npm config get cache probe
|
|
77
|
+
- run: npm install -g npm@^11.10.0
|
|
78
|
+
- uses: actions/cache@v4
|
|
79
|
+
with:
|
|
80
|
+
path: ~/.npm
|
|
81
|
+
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
82
|
+
prevention:
|
|
83
|
+
- 'Always pair devEngines.packageManager.version with "onFail": "warn" unless the project must hard-fail on CI for version mismatches.'
|
|
84
|
+
- 'Use package-manager-cache: false in setup-node and handle npm caching manually when devEngines constraints are strict.'
|
|
85
|
+
- 'Track the Node.js release schedule to choose a version that ships with an npm satisfying devEngines requirements from day one.'
|
|
86
|
+
- 'Pin action version in workflow (e.g., actions/setup-node@v6.4.0) and test upgrades in a branch before rolling out.'
|
|
87
|
+
docs:
|
|
88
|
+
- url: 'https://github.com/actions/setup-node/issues/1553'
|
|
89
|
+
label: 'setup-node#1553 — EBADDEVENGINES blocks cache-path probe (May 2026)'
|
|
90
|
+
- url: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#devengines'
|
|
91
|
+
label: 'npm docs — devEngines field and onFail option'
|
|
92
|
+
- url: 'https://github.com/nodejs/node/issues/62425'
|
|
93
|
+
label: 'Node.js#62425 — npm installation behavior on Node v22.22.2 with devEngines'
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
id: runner-environment-216
|
|
2
|
+
title: 'ubuntu-26.04 ships Helm 4 — `helm repo add --no-update` removed, causes unknown flag error'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- helm
|
|
7
|
+
- helm-4
|
|
8
|
+
- ubuntu-26
|
|
9
|
+
- tool-upgrade
|
|
10
|
+
- flag-removed
|
|
11
|
+
patterns:
|
|
12
|
+
- regex: 'Error: unknown flag: --no-update'
|
|
13
|
+
flags: 'i'
|
|
14
|
+
- regex: 'unknown flag.*--no-update'
|
|
15
|
+
flags: 'i'
|
|
16
|
+
error_messages:
|
|
17
|
+
- 'Error: unknown flag: --no-update'
|
|
18
|
+
- 'Error: flag provided but not defined: --no-update'
|
|
19
|
+
root_cause: |
|
|
20
|
+
ubuntu-26.04 runner images install Helm 4 (via the `get-helm-4` installer script)
|
|
21
|
+
instead of Helm 3 used on ubuntu-22.04 and ubuntu-24.04. In Helm 4, the
|
|
22
|
+
`--no-update` flag was permanently removed from `helm repo add`
|
|
23
|
+
(breaking change: helm/helm#13614, released in Helm v4.0.0, November 2025).
|
|
24
|
+
|
|
25
|
+
In Helm 3, `helm repo add <name> <url> --no-update` was used to add a repo
|
|
26
|
+
without triggering a refresh of all configured repos. This was common in CI
|
|
27
|
+
pipelines to speed up `helm repo add` when many repos are configured. The
|
|
28
|
+
flag was first deprecated in Helm 3.7 and has been removed entirely in Helm 4
|
|
29
|
+
with no deprecated alias retained.
|
|
30
|
+
|
|
31
|
+
The runner-images commit 9e3319d (May 2026) introduced Helm 4 for ubuntu-26.04.
|
|
32
|
+
Any workflow using `runs-on: ubuntu-26.04` (or eventually `ubuntu-latest` when
|
|
33
|
+
it migrates to 26.04) that calls `helm repo add --no-update` will fail
|
|
34
|
+
immediately with `Error: unknown flag: --no-update`.
|
|
35
|
+
fix: |
|
|
36
|
+
Remove the `--no-update` flag entirely. In Helm 4, `helm repo add` does not
|
|
37
|
+
update existing repos by default — the behavior the flag used to enforce is
|
|
38
|
+
now the default behavior.
|
|
39
|
+
|
|
40
|
+
If you need to force-update all repos after adding, use `helm repo update`.
|
|
41
|
+
|
|
42
|
+
To avoid Helm version surprises on ubuntu-26.04, pin a specific Helm version
|
|
43
|
+
using `azure/setup-helm` and pass the version explicitly.
|
|
44
|
+
fix_code:
|
|
45
|
+
- language: yaml
|
|
46
|
+
label: 'Remove --no-update flag (Helm 4 default behavior)'
|
|
47
|
+
code: |
|
|
48
|
+
- name: Add Helm repo
|
|
49
|
+
run: |
|
|
50
|
+
# Helm 4 on ubuntu-26.04: --no-update flag has been removed.
|
|
51
|
+
# Helm 4 does not update existing repos by default (old --no-update behavior).
|
|
52
|
+
# Simply omit the flag:
|
|
53
|
+
helm repo add bitnami https://charts.bitnami.com/bitnami
|
|
54
|
+
# If you still need to update all repos afterwards:
|
|
55
|
+
# helm repo update
|
|
56
|
+
|
|
57
|
+
- language: yaml
|
|
58
|
+
label: 'Pin Helm version with azure/setup-helm to avoid version surprises'
|
|
59
|
+
code: |
|
|
60
|
+
- name: Set up Helm
|
|
61
|
+
uses: azure/setup-helm@v5
|
|
62
|
+
with:
|
|
63
|
+
version: '3.17.x' # Pin to Helm 3 if your workflow isn't Helm 4 ready
|
|
64
|
+
# Or pin to a specific Helm 4 version:
|
|
65
|
+
# version: '4.2.x'
|
|
66
|
+
|
|
67
|
+
- name: Add Helm repo
|
|
68
|
+
run: helm repo add bitnami https://charts.bitnami.com/bitnami
|
|
69
|
+
prevention:
|
|
70
|
+
- "Pin your Helm version with `azure/setup-helm` rather than relying on the pre-installed Helm on the runner."
|
|
71
|
+
- "When migrating to ubuntu-26.04, audit all `helm repo add` calls and remove any `--no-update` flags."
|
|
72
|
+
- "Check the Helm 4 migration guide at https://helm.sh/docs/topics/v4_migration/ before adopting ubuntu-26.04."
|
|
73
|
+
- "Add a CI step that prints `helm version` so version surprises are immediately visible in logs."
|
|
74
|
+
docs:
|
|
75
|
+
- url: 'https://github.com/helm/helm/blob/main/CHANGELOG.md'
|
|
76
|
+
label: 'Helm 4 Changelog — breaking changes'
|
|
77
|
+
- url: 'https://helm.sh/docs/topics/v4_migration/'
|
|
78
|
+
label: 'Helm v4 Migration Guide'
|
|
79
|
+
- url: 'https://github.com/actions/runner-images/commit/9e3319d6b4acc306925295853d0ff41ddd5c40f0'
|
|
80
|
+
label: 'runner-images commit: ubuntu-26 ships Helm 4 (get-helm-4)'
|
|
81
|
+
- url: 'https://github.com/Azure/setup-helm'
|
|
82
|
+
label: 'azure/setup-helm action — pin Helm version'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
id: runner-environment-217
|
|
2
|
+
title: 'ubuntu-26.04 Helm 4 — `helm install --atomic` fails with unknown flag error on Helm 4.0.x–4.1.0'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- helm
|
|
7
|
+
- helm-4
|
|
8
|
+
- ubuntu-26
|
|
9
|
+
- tool-upgrade
|
|
10
|
+
- flag-renamed
|
|
11
|
+
- atomic
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'Error: unknown flag: --atomic'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'helm install.*Error.*unknown flag.*atomic'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
error_messages:
|
|
18
|
+
- 'Error: unknown flag: --atomic'
|
|
19
|
+
- 'Error: flag provided but not defined: --atomic'
|
|
20
|
+
root_cause: |
|
|
21
|
+
ubuntu-26.04 runner images install Helm 4. In Helm 4, the `--atomic` flag was
|
|
22
|
+
renamed to `--rollback-on-failure`. On `helm upgrade`, the old `--atomic` flag
|
|
23
|
+
was retained as a deprecated alias that emits a warning. However, on
|
|
24
|
+
`helm install`, the `--atomic` binding was accidentally omitted in Helm 4.0.0,
|
|
25
|
+
so `helm install --atomic` fails with `Error: unknown flag: --atomic` on Helm
|
|
26
|
+
versions 4.0.0 through 4.1.0.
|
|
27
|
+
|
|
28
|
+
This was reported in helm/helm#31900 and fixed in Helm 4.1.1 via PR #31901
|
|
29
|
+
(March 4, 2026), which restored `--atomic` as a deprecated alias on
|
|
30
|
+
`helm install`. However, workflows that pin specific Helm 4 versions via
|
|
31
|
+
`azure/setup-helm` at versions 4.0.0–4.1.0, or any ubuntu-26.04 image built
|
|
32
|
+
before the Helm 4.1.1+ update, will still hit this error.
|
|
33
|
+
|
|
34
|
+
`--atomic` is extremely common in Kubernetes deployment workflows because it
|
|
35
|
+
auto-rolls back failed installs and waits for all pods to be Ready.
|
|
36
|
+
fix: |
|
|
37
|
+
Replace `--atomic` with `--rollback-on-failure` in your `helm install`
|
|
38
|
+
command. The semantics are identical: on failure, Helm rolls back (uninstalls)
|
|
39
|
+
the release and returns a non-zero exit code.
|
|
40
|
+
|
|
41
|
+
Note: `--wait` is implicitly enabled when `--rollback-on-failure` is set.
|
|
42
|
+
|
|
43
|
+
If you must use `--atomic` (e.g., shared scripts that support both Helm 3 and 4),
|
|
44
|
+
pin Helm 3 with `azure/setup-helm` or ensure Helm 4.1.1+ is installed.
|
|
45
|
+
fix_code:
|
|
46
|
+
- language: yaml
|
|
47
|
+
label: 'Replace --atomic with --rollback-on-failure (Helm 4 syntax)'
|
|
48
|
+
code: |
|
|
49
|
+
- name: Deploy chart
|
|
50
|
+
run: |
|
|
51
|
+
# Helm 4 on ubuntu-26.04: --atomic is removed from helm install (4.0.x-4.1.0).
|
|
52
|
+
# Use --rollback-on-failure instead (semantically identical):
|
|
53
|
+
helm install my-release ./chart \
|
|
54
|
+
--namespace production \
|
|
55
|
+
--rollback-on-failure \
|
|
56
|
+
--timeout 5m0s
|
|
57
|
+
|
|
58
|
+
- language: yaml
|
|
59
|
+
label: 'Pin Helm version to avoid flag compatibility issues'
|
|
60
|
+
code: |
|
|
61
|
+
- name: Set up Helm
|
|
62
|
+
uses: azure/setup-helm@v5
|
|
63
|
+
with:
|
|
64
|
+
version: '3.17.x' # Use Helm 3 if --atomic is required and not yet migrated
|
|
65
|
+
# Or use Helm 4.1.1+ which restores --atomic as a deprecated alias:
|
|
66
|
+
# version: '4.1.1'
|
|
67
|
+
|
|
68
|
+
- name: Deploy chart
|
|
69
|
+
run: |
|
|
70
|
+
helm install my-release ./chart \
|
|
71
|
+
--namespace production \
|
|
72
|
+
--atomic \
|
|
73
|
+
--timeout 5m0s
|
|
74
|
+
|
|
75
|
+
- language: yaml
|
|
76
|
+
label: 'Upgrade and install combined (helm upgrade --install)'
|
|
77
|
+
code: |
|
|
78
|
+
- name: Deploy chart
|
|
79
|
+
run: |
|
|
80
|
+
# helm upgrade retains --atomic as deprecated in all Helm 4 versions.
|
|
81
|
+
# Use upgrade --install as an alternative that works across Helm 3 and 4:
|
|
82
|
+
helm upgrade --install my-release ./chart \
|
|
83
|
+
--namespace production \
|
|
84
|
+
--atomic \
|
|
85
|
+
--timeout 5m0s
|
|
86
|
+
prevention:
|
|
87
|
+
- "Use `helm upgrade --install` instead of `helm install` when possible — `--atomic` was retained on upgrade in all Helm 4 versions."
|
|
88
|
+
- "Pin Helm versions with `azure/setup-helm` to avoid silent tool version changes when ubuntu-latest migrates to ubuntu-26.04."
|
|
89
|
+
- "Replace `--atomic` with `--rollback-on-failure` in new workflows — this is the Helm 4 canonical flag name."
|
|
90
|
+
- "Run `helm version` as an early step to catch unexpected version jumps before the deployment step."
|
|
91
|
+
docs:
|
|
92
|
+
- url: 'https://github.com/helm/helm/issues/31900'
|
|
93
|
+
label: 'helm/helm#31900 — helm install --atomic no longer works in Helm 4'
|
|
94
|
+
- url: 'https://github.com/helm/helm/pull/31901'
|
|
95
|
+
label: 'helm/helm#31901 — fix: restore deprecated --atomic flag on install for backwards compatibility'
|
|
96
|
+
- url: 'https://helm.sh/docs/topics/v4_migration/'
|
|
97
|
+
label: 'Helm v4 Migration Guide — CLI flag renames'
|
|
98
|
+
- url: 'https://github.com/actions/runner-images/commit/9e3319d6b4acc306925295853d0ff41ddd5c40f0'
|
|
99
|
+
label: 'runner-images commit: ubuntu-26.04 installs Helm 4'
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
id: runner-environment-218
|
|
2
|
+
title: "docker/build-push-action 'load: true' and 'push: true' Are Mutually Exclusive"
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: error
|
|
5
|
+
tags:
|
|
6
|
+
- docker
|
|
7
|
+
- build-push-action
|
|
8
|
+
- buildx
|
|
9
|
+
- buildkit
|
|
10
|
+
- load
|
|
11
|
+
- push
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'load.{0,20}push cannot be both set|cannot use both --load and --push|load.*push.*incompatible|--load.*--push.*incompatible'
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: "contradictory options given: load and push"
|
|
16
|
+
flags: 'i'
|
|
17
|
+
error_messages:
|
|
18
|
+
- "contradictory options given: load and push cannot be both set at the same time"
|
|
19
|
+
- "ERROR: cannot use both --load and --push flags"
|
|
20
|
+
- "error: '--load' and '--push' cannot be used together"
|
|
21
|
+
- "Error: buildx failed with: error: failed to solve: load and push cannot be both set"
|
|
22
|
+
root_cause: |
|
|
23
|
+
docker/build-push-action (and the underlying docker buildx) does not support
|
|
24
|
+
setting both 'load: true' and 'push: true' in the same build step. These two
|
|
25
|
+
options are mutually exclusive:
|
|
26
|
+
|
|
27
|
+
- 'load: true' exports the built image into the local Docker daemon
|
|
28
|
+
(equivalent to --load / --output type=docker).
|
|
29
|
+
- 'push: true' pushes the image to a remote registry
|
|
30
|
+
(equivalent to --push / --output type=registry).
|
|
31
|
+
|
|
32
|
+
Both flags specify different output targets, and docker buildx cannot satisfy
|
|
33
|
+
both simultaneously with most drivers. The docker-container and kubernetes
|
|
34
|
+
drivers explicitly reject the combination. The docker driver (used without
|
|
35
|
+
explicit driver setup) may silently ignore 'push' in some versions.
|
|
36
|
+
|
|
37
|
+
Common triggers:
|
|
38
|
+
- Copying a workflow snippet that has 'push: true' and adding 'load: true'
|
|
39
|
+
for local testing without removing 'push: true'.
|
|
40
|
+
- Conditional 'push' logic using expressions that evaluate to true at the
|
|
41
|
+
same time as unconditional 'load: true'.
|
|
42
|
+
fix: |
|
|
43
|
+
Use only one of 'load' or 'push' in a single step. To both test locally and
|
|
44
|
+
push to a registry, split the build into two separate steps, or use
|
|
45
|
+
conditional logic so only one output target is active at a time.
|
|
46
|
+
|
|
47
|
+
The idiomatic pattern is:
|
|
48
|
+
- Set 'push: ${{ github.ref == 'refs/heads/main' }}' to push only on
|
|
49
|
+
default branch, and omit 'load:' entirely (or use a separate step for
|
|
50
|
+
local testing).
|
|
51
|
+
- To load the image for integration tests AND push on main, build twice:
|
|
52
|
+
once with 'load: true' for tests, once with 'push: true' for release.
|
|
53
|
+
- Use build outputs caching (cache-from/cache-to) so the second build
|
|
54
|
+
is fast.
|
|
55
|
+
fix_code:
|
|
56
|
+
- language: yaml
|
|
57
|
+
label: "Wrong — load and push both true (fails)"
|
|
58
|
+
code: |
|
|
59
|
+
- name: Build and push
|
|
60
|
+
uses: docker/build-push-action@v6
|
|
61
|
+
with:
|
|
62
|
+
context: .
|
|
63
|
+
load: true # ❌ Incompatible with push: true
|
|
64
|
+
push: true # ❌ Incompatible with load: true
|
|
65
|
+
tags: myrepo/myimage:latest
|
|
66
|
+
|
|
67
|
+
- language: yaml
|
|
68
|
+
label: "Fixed — push conditionally, no load"
|
|
69
|
+
code: |
|
|
70
|
+
- name: Build and push
|
|
71
|
+
uses: docker/build-push-action@v6
|
|
72
|
+
with:
|
|
73
|
+
context: .
|
|
74
|
+
push: ${{ github.ref == 'refs/heads/main' }}
|
|
75
|
+
tags: myrepo/myimage:latest
|
|
76
|
+
|
|
77
|
+
- language: yaml
|
|
78
|
+
label: "Fixed — load for tests, push separately on main"
|
|
79
|
+
code: |
|
|
80
|
+
- name: Build image for integration tests
|
|
81
|
+
uses: docker/build-push-action@v6
|
|
82
|
+
with:
|
|
83
|
+
context: .
|
|
84
|
+
load: true # ✅ load only — no push
|
|
85
|
+
tags: myrepo/myimage:test
|
|
86
|
+
|
|
87
|
+
- name: Run integration tests
|
|
88
|
+
run: docker run --rm myrepo/myimage:test ./run-tests.sh
|
|
89
|
+
|
|
90
|
+
- name: Push to registry (main branch only)
|
|
91
|
+
if: github.ref == 'refs/heads/main'
|
|
92
|
+
uses: docker/build-push-action@v6
|
|
93
|
+
with:
|
|
94
|
+
context: .
|
|
95
|
+
push: true # ✅ push only — no load
|
|
96
|
+
tags: myrepo/myimage:latest
|
|
97
|
+
cache-from: type=gha
|
|
98
|
+
cache-to: type=gha,mode=max
|
|
99
|
+
|
|
100
|
+
prevention:
|
|
101
|
+
- "Never set both 'load: true' and 'push: true' in the same build-push-action step."
|
|
102
|
+
- "Use 'push: ${{ condition }}' expression to conditionally push; omit 'load' in the same step."
|
|
103
|
+
- "If you need the image locally for testing and also want to push, use two separate steps."
|
|
104
|
+
- "Review docker/build-push-action README — the compatibility matrix for load, push, and outputs is documented."
|
|
105
|
+
docs:
|
|
106
|
+
- url: "https://github.com/docker/build-push-action#inputs"
|
|
107
|
+
label: "docker/build-push-action — inputs reference (load, push, outputs)"
|
|
108
|
+
- url: "https://docs.docker.com/build/building/export/"
|
|
109
|
+
label: "Docker Buildx — build output types (load vs push)"
|
|
110
|
+
- url: "https://github.com/docker/build-push-action/blob/master/README.md#multi-platform-image"
|
|
111
|
+
label: "docker/build-push-action — multi-platform and output guidance"
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
id: runner-environment-207
|
|
2
|
+
title: 'ubuntu-24.04 man-db dpkg trigger stalls apt-get install for minutes'
|
|
3
|
+
category: runner-environment
|
|
4
|
+
severity: warning
|
|
5
|
+
tags:
|
|
6
|
+
- ubuntu-24.04
|
|
7
|
+
- apt-get
|
|
8
|
+
- man-db
|
|
9
|
+
- dpkg-trigger
|
|
10
|
+
- package-installation
|
|
11
|
+
- self-hosted
|
|
12
|
+
patterns:
|
|
13
|
+
- regex: 'Processing triggers for man-db \('
|
|
14
|
+
flags: 'i'
|
|
15
|
+
- regex: 'man-db \(2\.1[0-9]\.[0-9]'
|
|
16
|
+
flags: 'i'
|
|
17
|
+
error_messages:
|
|
18
|
+
- 'Processing triggers for man-db (2.12.0-4build2) ...'
|
|
19
|
+
- 'Processing triggers for man-db ...'
|
|
20
|
+
root_cause: |
|
|
21
|
+
The `man-db` package is pre-installed on ubuntu-24.04 GitHub-hosted runner
|
|
22
|
+
images (and is commonly present on self-hosted Ubuntu 24.04 runners). When
|
|
23
|
+
any `apt-get install` step installs or upgrades a package that ships man
|
|
24
|
+
pages, the dpkg trigger for `man-db` fires automatically and rebuilds the
|
|
25
|
+
entire manual-page database.
|
|
26
|
+
|
|
27
|
+
On ubuntu-24.04 runners, this database regeneration reads and writes several
|
|
28
|
+
gigabytes of data through the runner's I/O subsystem, which is heavily
|
|
29
|
+
shared and has limited I/O resources. The trigger typically hangs the step
|
|
30
|
+
for **1–7+ minutes** even for simple package installs like `cmake` or
|
|
31
|
+
`libssl-dev`.
|
|
32
|
+
|
|
33
|
+
GitHub fixed this in hosted runner image ubuntu24/20251102.99 (November
|
|
34
|
+
2025) by removing `man-db` from the default image. However, self-hosted
|
|
35
|
+
runners on Ubuntu 24.04 that predate this fix, Docker-based container jobs
|
|
36
|
+
using ubuntu:24.04, and pinned runner image versions remain affected.
|
|
37
|
+
|
|
38
|
+
The equivalent tzdata hang (`sudo DEBIAN_FRONTEND=noninteractive apt-get ...`)
|
|
39
|
+
is a separate issue caused by interactive prompts; the man-db issue is
|
|
40
|
+
distinct — it stalls silently with no interactive prompt.
|
|
41
|
+
fix: |
|
|
42
|
+
**For self-hosted runners or container jobs (manual fix):**
|
|
43
|
+
|
|
44
|
+
Add a step before package installation to remove man-db:
|
|
45
|
+
|
|
46
|
+
```yaml
|
|
47
|
+
- name: Disable man-db trigger
|
|
48
|
+
run: sudo rm -f /var/lib/man-db/auto-update
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or uninstall man-db entirely:
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
- name: Remove man-db
|
|
55
|
+
run: sudo apt-get remove -y --purge man-db 2>/dev/null || true
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**For GitHub-hosted runners:**
|
|
59
|
+
Upgrade to ubuntu-24.04 runner image version ubuntu24/20251102.99 or later.
|
|
60
|
+
The latest ubuntu-24.04 label automatically uses a fixed image.
|
|
61
|
+
|
|
62
|
+
**Minimal impact workaround (all runners):**
|
|
63
|
+
Use `DEBIAN_FRONTEND=noninteractive` — this avoids tzdata prompts but does
|
|
64
|
+
NOT prevent the man-db trigger. You must use the `rm -f /var/lib/man-db/auto-update`
|
|
65
|
+
approach to suppress the trigger.
|
|
66
|
+
fix_code:
|
|
67
|
+
- language: yaml
|
|
68
|
+
label: 'Disable man-db trigger before apt-get install'
|
|
69
|
+
code: |
|
|
70
|
+
- name: Remove man-db auto-update trigger
|
|
71
|
+
run: sudo rm -f /var/lib/man-db/auto-update
|
|
72
|
+
|
|
73
|
+
- name: Install dependencies
|
|
74
|
+
run: sudo apt-get install -y cmake libssl-dev
|
|
75
|
+
- language: yaml
|
|
76
|
+
label: 'Uninstall man-db entirely (self-hosted runners)'
|
|
77
|
+
code: |
|
|
78
|
+
- name: Remove man-db (prevents dpkg trigger overhead)
|
|
79
|
+
run: sudo apt-get remove -y --purge man-db 2>/dev/null || true
|
|
80
|
+
|
|
81
|
+
- name: Install dependencies
|
|
82
|
+
run: sudo apt-get install -y cmake libssl-dev
|
|
83
|
+
prevention:
|
|
84
|
+
- 'Add a man-db removal step at the top of jobs that run apt-get install on self-hosted ubuntu-24.04 runners'
|
|
85
|
+
- 'On GitHub-hosted runners, always use the current ubuntu-24.04 label (not pinned image SHAs from before November 2025)'
|
|
86
|
+
- 'For Docker container jobs, use an image that does not pre-install man-db, or add the removal step to your Dockerfile'
|
|
87
|
+
- 'Set a job-level timeout-minutes so that an unexpected man-db stall does not consume runner quota for hours'
|
|
88
|
+
docs:
|
|
89
|
+
- url: 'https://github.com/actions/runner/issues/4030'
|
|
90
|
+
label: 'actions/runner#4030 — man-db trigger severely stalls apt-get on ubuntu-24.04'
|
|
91
|
+
- url: 'https://github.com/actions/runner-images/issues/10977'
|
|
92
|
+
label: 'runner-images#10977 — Disable man-db dpkg trigger (fixed in ubuntu24/20251102.99)'
|
|
93
|
+
- url: 'https://bugs.launchpad.net/ubuntu/+source/man-db/+bug/2073797'
|
|
94
|
+
label: 'Ubuntu bug #2073797 — man-db trigger performance regression'
|