@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.
Files changed (31) hide show
  1. package/errors/caching-artifacts/caching-artifacts-069.yml +133 -0
  2. package/errors/caching-artifacts/caching-artifacts-070.yml +94 -0
  3. package/errors/concurrency-timing/concurrency-timing-056.yml +127 -0
  4. package/errors/concurrency-timing/concurrency-timing-057.yml +115 -0
  5. package/errors/concurrency-timing/workflow-run-head-branch-null-schedule-dispatch-concurrency.yml +135 -0
  6. package/errors/known-unsolved/known-unsolved-067.yml +117 -0
  7. package/errors/known-unsolved/known-unsolved-068.yml +124 -0
  8. package/errors/known-unsolved/node-action-post-step-wrong-inputs-nested-composite.yml +133 -0
  9. package/errors/known-unsolved/ubuntu-24-04-arm64-missing-binder-ashmem-kernel-modules.yml +149 -0
  10. package/errors/permissions-auth/permissions-auth-069.yml +161 -0
  11. package/errors/runner-environment/arc-autoscalinglistener-ephemeralrunnerset-stale-after-upgrade.yml +134 -0
  12. package/errors/runner-environment/broker-server-socket-exception-nat-timeout-linux.yml +114 -0
  13. package/errors/runner-environment/runner-environment-210.yml +105 -0
  14. package/errors/runner-environment/runner-environment-213.yml +142 -0
  15. package/errors/runner-environment/runner-environment-214.yml +107 -0
  16. package/errors/runner-environment/runner-environment-215.yml +93 -0
  17. package/errors/runner-environment/runner-environment-216.yml +82 -0
  18. package/errors/runner-environment/runner-environment-217.yml +99 -0
  19. package/errors/runner-environment/runner-environment-218.yml +111 -0
  20. package/errors/runner-environment/ubuntu-24-man-db-dpkg-trigger-apt-install-stall.yml +94 -0
  21. package/errors/runner-environment/ubuntu-26-04-missing-preinstalled-tools.yml +178 -0
  22. package/errors/runner-environment/upload-artifact-v6-proxy-headers-leak-strict-proxy-fail.yml +101 -0
  23. package/errors/silent-failures/silent-failures-108.yml +108 -0
  24. package/errors/silent-failures/silent-failures-109.yml +119 -0
  25. package/errors/silent-failures/silent-failures-110.yml +91 -0
  26. package/errors/silent-failures/silent-failures-111.yml +107 -0
  27. package/errors/triggers/pull-request-labeled-fires-all-labels-no-name-filter.yml +110 -0
  28. package/errors/yaml-syntax/duplicate-step-id-within-job-scope-validation-error.yml +130 -0
  29. package/errors/yaml-syntax/yaml-syntax-072.yml +93 -0
  30. package/errors/yaml-syntax/yaml-syntax-073.yml +103 -0
  31. 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'