@htekdev/actions-debugger 1.0.113 → 1.0.115

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 (34) hide show
  1. package/errors/caching-artifacts/cache-corrupt-on-cancel-during-restore-save-always.yml +136 -0
  2. package/errors/caching-artifacts/restore-keys-asterisk-literal-not-glob.yml +107 -0
  3. package/errors/concurrency-timing/concurrency-timing-053.yml +83 -0
  4. package/errors/concurrency-timing/pull-request-review-shared-concurrency-cancels-ci.yml +131 -0
  5. package/errors/known-unsolved/github-script-esm-not-supported.yml +111 -0
  6. package/errors/known-unsolved/job-outputs-string-only-no-array-object.yml +142 -0
  7. package/errors/known-unsolved/known-unsolved-062.yml +87 -0
  8. package/errors/known-unsolved/runner-rest-api-busy-false-broker-state-desync.yml +102 -0
  9. package/errors/permissions-auth/oidc-immutable-sub-claim-new-repo-trust-policy-mismatch.yml +122 -0
  10. package/errors/permissions-auth/permissions-auth-064.yml +122 -0
  11. package/errors/permissions-auth/permissions-auth-065.yml +97 -0
  12. package/errors/permissions-auth/permissions-auth-066.yml +129 -0
  13. package/errors/permissions-auth/upload-code-coverage-missing-code-quality-write-permission.yml +94 -0
  14. package/errors/runner-environment/arc-kubernetes-checkout-circular-json-container-hook.yml +101 -0
  15. package/errors/runner-environment/cache-restore-windows-runner-silent-crash.yml +130 -0
  16. package/errors/runner-environment/git-248-fetch-tags-shallow-clone-regression.yml +100 -0
  17. package/errors/runner-environment/javascript-actions-alpine-arm64-not-supported.yml +121 -0
  18. package/errors/runner-environment/runner-environment-188.yml +96 -0
  19. package/errors/runner-environment/runner-environment-191.yml +147 -0
  20. package/errors/runner-environment/runner-environment-192.yml +144 -0
  21. package/errors/runner-environment/runner-environment-193.yml +136 -0
  22. package/errors/runner-environment/runner-environment-194.yml +86 -0
  23. package/errors/runner-environment/runner-environment-199.yml +93 -0
  24. package/errors/runner-environment/setup-python-macos-self-hosted-symlink-permission-denied.yml +94 -0
  25. package/errors/runner-environment/setup-python-windows-self-hosted-no-admin-install-fails.yml +101 -0
  26. package/errors/silent-failures/checkout-v6-clean-false-deletes-workspace-on-repo-change.yml +119 -0
  27. package/errors/silent-failures/queue-max-silently-ignored-with-cancel-in-progress.yml +109 -0
  28. package/errors/silent-failures/silent-failures-102.yml +141 -0
  29. package/errors/silent-failures/silent-failures-104.yml +119 -0
  30. package/errors/triggers/triggers-069.yml +100 -0
  31. package/errors/yaml-syntax/continue-on-error-inputs-composite-action-unexpected-value.yml +110 -0
  32. package/errors/yaml-syntax/yaml-syntax-068.yml +137 -0
  33. package/errors/yaml-syntax/yaml-syntax-069.yml +118 -0
  34. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ id: yaml-syntax-069
2
+ title: 'Job-level `env:` Variables Silently Resolve to Empty String in `services.*.image` and `container.image`'
3
+ category: yaml-syntax
4
+ severity: silent-failure
5
+ tags:
6
+ - services
7
+ - container
8
+ - env-context
9
+ - image
10
+ - context-availability
11
+ - job-level-env
12
+ - silent-failure
13
+ patterns:
14
+ - regex: 'image:\s*\S*\$\{\{\s*env\.'
15
+ flags: 'im'
16
+ - regex: 'Error response from daemon: manifest for \S+: not found'
17
+ flags: 'i'
18
+ - regex: 'invalid reference format'
19
+ flags: 'i'
20
+ error_messages:
21
+ - "Error response from daemon: manifest for redis: not found: manifest unknown"
22
+ - "Error response from daemon: manifest for postgres: not found"
23
+ - "invalid reference format"
24
+ - "Error: Container action is using an invalid image"
25
+ - "Unable to pull image 'redis:': invalid reference format"
26
+ root_cause: |
27
+ GitHub Actions evaluates `services.*.image` and `container.image` expressions BEFORE
28
+ the job's environment scope is initialized. At evaluation time, the `env` context only
29
+ contains WORKFLOW-level `env:` variables (defined in the top-level `env:` block). Any
30
+ `env:` variable declared inside `jobs.<job_id>.env:` is NOT yet in scope and silently
31
+ evaluates to empty string `""`.
32
+
33
+ Example of the broken pattern:
34
+
35
+ ```yaml
36
+ jobs:
37
+ test:
38
+ env:
39
+ REDIS_VERSION: '7.2' # ← job-level env: NOT available in services below
40
+ services:
41
+ redis:
42
+ image: 'redis:${{ env.REDIS_VERSION }}' # ← evaluates to "redis:" (empty tag)
43
+ ```
44
+
45
+ The expression `redis:${{ env.REDIS_VERSION }}` resolves to `redis:` which Docker treats
46
+ as an invalid or missing tag, causing the service to fail to start — often with
47
+ "manifest not found" or "invalid reference format" errors.
48
+
49
+ **Context availability in `services.*.image` and `container.image`**:
50
+
51
+ | Context | Available? |
52
+ |---------------|------------|
53
+ | `github` | ✅ Yes |
54
+ | `inputs` | ✅ Yes |
55
+ | `vars` | ✅ Yes |
56
+ | `secrets` | ✅ Yes |
57
+ | `matrix` | ✅ Yes |
58
+ | `env` (workflow-level) | ✅ Yes |
59
+ | `env` (job-level) | ❌ No — silently empty |
60
+ | `steps.*` | ❌ No — no steps have run yet |
61
+ | `needs.*` | ❌ No |
62
+
63
+ This affects any image version that a developer attempts to centralize in their job's
64
+ local `env:` block — a common pattern for organizing service dependencies.
65
+ fix: |
66
+ Move the image-version environment variable from the job-level `env:` block to the
67
+ WORKFLOW-level `env:` block (outside `jobs:`). Alternatively, use `vars` context
68
+ (repository/org variables) for externalized configuration, or pin the version inline.
69
+ fix_code:
70
+ - language: yaml
71
+ label: "Broken — job-level env silently empty in services.image"
72
+ code: |
73
+ jobs:
74
+ test:
75
+ env:
76
+ REDIS_VERSION: '7.2' # ← job-level: NOT visible in services below
77
+ services:
78
+ redis:
79
+ image: 'redis:${{ env.REDIS_VERSION }}' # resolves to "redis:" — fails
80
+ - language: yaml
81
+ label: "Fixed — move version to workflow-level env"
82
+ code: |
83
+ env:
84
+ REDIS_VERSION: '7.2' # ← workflow-level: visible in services.image
85
+
86
+ jobs:
87
+ test:
88
+ services:
89
+ redis:
90
+ image: 'redis:${{ env.REDIS_VERSION }}' # resolves to "redis:7.2" ✓
91
+ - language: yaml
92
+ label: "Alternative — use vars context (repository variable)"
93
+ code: |
94
+ # Set REDIS_VERSION in repository Settings → Secrets and variables → Variables
95
+ jobs:
96
+ test:
97
+ services:
98
+ redis:
99
+ image: 'redis:${{ vars.REDIS_VERSION }}' # always available ✓
100
+ - language: yaml
101
+ label: "Alternative — pin version inline (simplest)"
102
+ code: |
103
+ jobs:
104
+ test:
105
+ services:
106
+ redis:
107
+ image: 'redis:7.2' # no expression needed if version doesn't change often
108
+ prevention:
109
+ - "Always define image-version env vars at the WORKFLOW level (top-level `env:`) when they are referenced in `services:` or `container:`"
110
+ - "Lint workflows with the GitHub VS Code extension or actionlint — it flags unsupported context references in service/container image fields"
111
+ - "When a service fails to pull, check the exact image name in the runner log — an empty or malformed tag (e.g., `redis:`) indicates this context-availability issue"
112
+ docs:
113
+ - url: "https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/contexts#context-availability"
114
+ label: "GitHub Actions context availability — which contexts are valid in each workflow field"
115
+ - url: "https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idservicesservice_idimage"
116
+ label: "jobs.<job_id>.services.<service_id>.image — workflow syntax reference"
117
+ - url: "https://github.com/orgs/community/discussions"
118
+ label: "GitHub Community Discussions — GitHub Actions service container configuration"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htekdev/actions-debugger",
3
- "version": "1.0.113",
3
+ "version": "1.0.115",
4
4
  "description": "65+ real GitHub Actions errors, queryable by agents. CLI + MCP server + Copilot skills + error database.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",