Commit 9781c17
refactor!: shrink scope to build + sign + archive + checksum (#10)
* refactor!: shrink scope to build + sign + archive + checksum
BREAKING. The action now stops at producing signed, checksummed
files on disk and emitting their paths. Distribution concerns move
to dedicated downstream actions.
Removed (inputs, source, tests, docs, e2e jobs):
- Release attach — attach-to-release, release-{tag,name,body,draft,
prerelease}, generate-release-table. Replace with
softprops/action-gh-release against outputs.artifacts.
- Docker OCI publish — docker-* inputs + packages/core/src/docker.ts.
Replace with docker/build-push-action against outputs.binaries.
- Homebrew tap PR — homebrew-* + renderHomebrewFormula. Replace with
a dedicated tap-updater action.
- Scoop bucket PR — scoop-* + renderScoopManifest.
- SLSA provenance — provenance input + attest-build-provenance wire-up.
Replace with actions/attest-build-provenance@v4 as a chained step.
- SBOM — sbom input + packages/core/src/sbom.ts. Replace with
anchore/sbom-action.
- Workflow artifact upload — upload-artifact + artifact-name inputs +
@actions/artifact integration. Replace with actions/upload-artifact@v4.
- release-url output and summary Release trailer.
Runtime deps drop @actions/artifact (v6.2.1) and @actions/github
(v9.1.0). Cap moves from 6 → 4 runtime deps.
Kept unchanged:
- Build pipeline (all pkg-* inputs, targets, mode, compress-node, etc.)
- Post-build archive + checksum
- Windows metadata (resedit)
- Signing — macOS codesign + notarytool, Windows signtool, Azure
Trusted Signing
- Matrix sub-action
- Step-summary (no Release trailer)
Bundle shrinks: packages/build/dist/index.mjs ~3.6 MB → ~1 MB.
Tests: 296 → 222 (deletions, no regressions). Typecheck + lint green.
docs/publishing.md, distribution.md, docker.md, provenance.md,
sbom.md removed. README rewritten around outputs + "After the build"
handoff examples. docs/architecture.md trimmed accordingly. STATUS
records scope decision and a `removed:` section with replacement
pointers.
Pre-cut state is accessible at the `pre-scope-cut` tag.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
* chore(ci): drop spike-node24.yml
Dead weight. M-1 pre-flight probe to confirm runs.using:node24 on
hosted runners; that question has been answered for months — every
sub-action uses node24 and the main e2e workflow runs it across
ubuntu/macos/windows on every push. workflow_dispatch-only, so not
load-bearing.
Also drop the two docs/architecture.md references to it.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
* docs: address Copilot review
- README quick start: wrap artifacts JSON via fromJson+join so
upload-artifact gets newline-separated paths.
- architecture: clarify DI boundary (exec/logger only; fs not
universally injected).
- architecture: codegen drift gate lives in ci.yml plus e2e
codegen-drift job, not e2e.yml alone.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
* feat: v1.0 hardening — tar reproducibility + digests output + post-sign verify
Three narrow-scope wins before v1.0.0. Each is a bug or contract tightening, not
a new feature surface.
- Tar reproducibility (packages/core/src/archive.ts): pass --mtime, --uid=0,
--gid=0, --numeric-owner + pin source mtime with utimes before shelling out.
Flags understood by both GNU tar (ubuntu) and bsdtar (macos + windows).
Previously: same binary → different tar bytes → different sha across runs,
breaking provenance/cache chains.
- digests output (packages/build/src/main.ts): emit a per-artifact
{ "<basename>": { sha256: "…", sha512: "…" } } JSON map alongside the
existing SHASUMS files. Saves downstream consumers a file read + awk parse.
- Post-sign verification (packages/core/src/signing.ts): chain codesign --verify
after sign, signtool verify /pa after signtool/azuresigntool. Catches bad
identities and silent signing failures before archive/checksum.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
* fix(archive): use GNU tar owner/group flags on linux
GNU tar (ubuntu runners) rejects --uid=0 / --gid=0; those are bsdtar-only.
Branch on process.platform: linux → --owner=0 --group=0, else --uid=0 --gid=0.
--mtime + --numeric-owner are portable across both.
Caught by E2E on refactor/scope-cut-build-only — tiny-cjs/ubuntu-latest failed
with: "tar: unrecognized option '--uid=0'".
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>1 parent 4395ea1 commit 9781c17
40 files changed
Lines changed: 3972 additions & 70359 deletions
File tree
- .github/workflows
- docs
- packages
- build
- dist
- src
- core
- src
- test/unit
- matrix/dist
- windows-metadata/dist
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | | - | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
6 | 15 | | |
7 | 16 | | |
8 | | - | |
9 | 17 | | |
10 | | - | |
| 18 | + | |
11 | 19 | | |
12 | 20 | | |
13 | 21 | | |
| 22 | + | |
14 | 23 | | |
15 | 24 | | |
16 | 25 | | |
17 | 26 | | |
18 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
19 | 32 | | |
20 | 33 | | |
21 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
22 | 43 | | |
23 | 44 | | |
24 | 45 | | |
25 | | - | |
26 | | - | |
| 46 | + | |
27 | 47 | | |
28 | 48 | | |
29 | 49 | | |
| |||
54 | 74 | | |
55 | 75 | | |
56 | 76 | | |
57 | | - | |
58 | | - | |
| 77 | + | |
59 | 78 | | |
60 | | - | |
| 79 | + | |
61 | 80 | | |
62 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
63 | 85 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
68 | 89 | | |
69 | | - | |
70 | | - | |
| 90 | + | |
71 | 91 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
| 92 | + | |
86 | 93 | | |
87 | | - | |
88 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
89 | 101 | | |
90 | | - | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
91 | 108 | | |
92 | | - | |
93 | | - | |
| 109 | + | |
94 | 110 | | |
95 | 111 | | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
100 | 116 | | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
110 | 123 | | |
111 | 124 | | |
112 | | - | |
113 | | - | |
114 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
115 | 135 | | |
116 | 136 | | |
117 | 137 | | |
| |||
121 | 141 | | |
122 | 142 | | |
123 | 143 | | |
124 | | - | |
125 | | - | |
126 | 144 | | |
127 | 145 | | |
128 | 146 | | |
0 commit comments