@smoothbricks/cli 0.11.12 → 0.11.13
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/README.md +104 -20
- package/dist/lib/json.d.ts +51 -0
- package/dist/lib/json.d.ts.map +1 -1
- package/dist/lib/json.js +111 -67
- package/dist/monorepo/ci-workflow.d.ts +27 -2
- package/dist/monorepo/ci-workflow.d.ts.map +1 -1
- package/dist/monorepo/ci-workflow.js +151 -11
- package/dist/monorepo/managed-files.d.ts +3 -1
- package/dist/monorepo/managed-files.d.ts.map +1 -1
- package/dist/monorepo/managed-files.js +3 -0
- package/dist/monorepo/publish-workflow.d.ts +8 -1
- package/dist/monorepo/publish-workflow.d.ts.map +1 -1
- package/dist/monorepo/publish-workflow.js +15 -5
- package/managed/raw/tooling/direnv/devenv.smoo.nix +22 -2
- package/managed/raw/tooling/direnv/secret-references.ts +248 -51
- package/managed/templates/github/actions/save-nix-devenv/action.yml +2 -2
- package/managed/templates/github/actions/setup-devenv/action.yml +43 -5
- package/package.json +2 -2
- package/src/lib/json.ts +52 -0
- package/src/monorepo/__tests__/ci-workflow.test.ts +183 -0
- package/src/monorepo/__tests__/publish-workflow.test.ts +29 -0
- package/src/monorepo/ci-workflow.ts +180 -11
- package/src/monorepo/managed-files.ts +6 -0
- package/src/monorepo/publish-workflow.ts +24 -4
- package/src/monorepo/secret-references.test.ts +175 -2
package/README.md
CHANGED
|
@@ -47,9 +47,12 @@ smoo release retag-unpublished <tag...> [--to <ref>] [--push] [--dispatch] [--re
|
|
|
47
47
|
smoo release bootstrap-npm-packages [--dry-run] [--skip-login] [--package <name...>]
|
|
48
48
|
smoo release trust-publisher [--bootstrap] [--dry-run] [--skip-login] [--package <name...>]
|
|
49
49
|
|
|
50
|
-
smoo github-ci
|
|
51
|
-
smoo github-ci nx-
|
|
52
|
-
smoo github-ci nx-
|
|
50
|
+
smoo github-ci nx-smart --target <target> [--name <check-name>] [--step <number>] [--mode <auto|affected|run-many>] [--stage <stage>]
|
|
51
|
+
smoo github-ci nx-run-many --targets <targets> [--projects <projects>] [--collect-outputs <directory>]
|
|
52
|
+
smoo github-ci nx-deploy [--stage <stage>] [--mode <auto|affected|run-many>] [--select-tag <tag>] [--verify]
|
|
53
|
+
smoo github-ci apply-outputs <directories...> --source-sha <sha>
|
|
54
|
+
smoo github-ci dispatch-workflow --workflow <workflow> --ref <ref>
|
|
55
|
+
smoo github-ci ensure-pull-request --head <branch> --base <branch> --title <title> --body <body>
|
|
53
56
|
```
|
|
54
57
|
|
|
55
58
|
## Initialization
|
|
@@ -373,26 +376,26 @@ must stay synchronized with those comments. Composite action internals do not ch
|
|
|
373
376
|
|
|
374
377
|
Managed CI setup is split across local composite actions:
|
|
375
378
|
|
|
376
|
-
- `setup-devenv`
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
`
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
379
|
+
- `setup-devenv` detects the runner kind first. An ephemeral runner installs a single-user [Nix], restores `/nix` itself
|
|
380
|
+
from the Actions cache — store paths and the Nix database, as files, so nothing is imported — enables [Cachix],
|
|
381
|
+
installs [devenv] at `devenv.lock`'s rev, restores `node_modules` and the ttsc plugins, and builds the shell. A
|
|
382
|
+
host-nix runner (`NIX_REMOTE=daemon` with `/var/cache/ci`) skips the install and every store cache: it already has the
|
|
383
|
+
store and keeps its caches on the shared bind.
|
|
384
|
+
- `save-nix-devenv` runs under `always()` and saves the `.devenv`/`.direnv` eval-cache segment when setup missed it and
|
|
385
|
+
the shell produced `nix-eval-cache.db`. The store cache saves itself in `setup-devenv`'s post phase, which collects
|
|
386
|
+
garbage down to the live closure before uploading.
|
|
387
|
+
- `cache-nix-devenv` is the shared restore/save primitive for the `.devenv`/`.direnv` segment.
|
|
388
|
+
|
|
389
|
+
The cache split is intentional. The store segment is large and keyed by the expensive shell closure inputs
|
|
390
|
+
(`devenv.yaml`, `devenv.nix`, `devenv.lock`), and it carries store content only — never the Nix profiles, which exist to
|
|
391
|
+
be gcroots: restoring a previous run's copies over a freshly installed Nix de-roots the running Nix binary, and the post
|
|
392
|
+
phase then collects it. The `.devenv`/`.direnv` segment is small, but it holds absolute `/nix/store` pointers, so it
|
|
393
|
+
restores on every ephemeral runner and devenv checks that the shell's derivation and output still exist on an eval-cache
|
|
394
|
+
hit, re-evaluating when garbage collection removed them.
|
|
391
395
|
|
|
392
396
|
The bootstrap script is intentionally small. It only handles work required before `smoo` can run in GitHub Actions:
|
|
393
397
|
|
|
394
|
-
-
|
|
395
|
-
- Install `devenv`.
|
|
398
|
+
- Install `devenv`, held to `devenv.lock`'s rev on an ephemeral runner.
|
|
396
399
|
- Build the devenv shell and add repo-local tooling to `GITHUB_PATH`.
|
|
397
400
|
|
|
398
401
|
### Deploy configuration (`package.json` → `smoo.github`)
|
|
@@ -430,6 +433,87 @@ a production deployment mid-flight. Pull requests and other branches keep cancel
|
|
|
430
433
|
production jobs repeat the Cargo credential and sibling-source preflight before SetupDevenv, so their `--step` anchors
|
|
431
434
|
shift with the configuration instead of staying fixed.
|
|
432
435
|
|
|
436
|
+
### Private dependency configuration (`package.json` → `smoo.github.cargoCredentials`)
|
|
437
|
+
|
|
438
|
+
The private git origins Cargo fetches from, and the secret that reads each one:
|
|
439
|
+
|
|
440
|
+
```json
|
|
441
|
+
{
|
|
442
|
+
"smoo": {
|
|
443
|
+
"github": {
|
|
444
|
+
"cargoCredentials": {
|
|
445
|
+
"gitOrigins": [
|
|
446
|
+
{
|
|
447
|
+
"origin": "https://git.example.net",
|
|
448
|
+
"tokenEnv": "SOURCE_READ_TOKEN",
|
|
449
|
+
"internalMirror": "http://10.89.0.1:3000",
|
|
450
|
+
"sshOrigins": ["ssh://forgejo@forge.example.net:2223/", "ssh://forge.example.net:2223/"]
|
|
451
|
+
}
|
|
452
|
+
],
|
|
453
|
+
"registryTokenEnvs": ["CARGO_REGISTRIES_EXAMPLE_TOKEN"]
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
- `origin`: the credential-free https origin, and `tokenEnv` the repository secret that reads it. The generated
|
|
461
|
+
credential helper answers for that host alone, reading the token from the environment when git calls it.
|
|
462
|
+
- `internalMirror`: the address managed runners reach the same forge at, such as a container-bridge address. Managed CI
|
|
463
|
+
rewrites the origin prefix onto it with `url.<mirror>.insteadOf` and answers the same credential for the mirror's
|
|
464
|
+
host, because git hands helpers the rewritten URL.
|
|
465
|
+
- `sshOrigins`: the SSH spellings of that same forge, as a lockfile pins them (`Cargo.toml` git dependencies, uv
|
|
466
|
+
sources). Each one gets its own `insteadOf` line onto the mirror. git matches `insteadOf` values as literal URL
|
|
467
|
+
prefixes and derives no spelling from another, so a forge pinned as `ssh://forgejo@host:2223/` and as
|
|
468
|
+
`ssh://host:2223/` needs both declared; a runner holding only the mirror's read token and no SSH key would otherwise
|
|
469
|
+
fetch nothing. The declarations stay credential-free — the rewrite happens before transport, so an SSH pin nobody
|
|
470
|
+
rewrote fails loudly instead of collecting a token — and each requires `internalMirror`, since an SSH spelling is a
|
|
471
|
+
rewrite source and nothing else.
|
|
472
|
+
- `registryTokenEnvs`: `CARGO_REGISTRIES_<NAME>_TOKEN` secrets Cargo's own credential provider reads for private
|
|
473
|
+
registries.
|
|
474
|
+
|
|
475
|
+
### Remote cache configuration (`package.json` → `smoo.remoteCache`)
|
|
476
|
+
|
|
477
|
+
One Nx self-hosted remote cache shared by every runner and every developer shell:
|
|
478
|
+
|
|
479
|
+
```json
|
|
480
|
+
{
|
|
481
|
+
"smoo": {
|
|
482
|
+
"remoteCache": {
|
|
483
|
+
"server": "https://nx-cache.example.net",
|
|
484
|
+
"internalServer": "http://10.89.0.1:8765",
|
|
485
|
+
"tokenSecret": "NX_REMOTE_CACHE_TOKEN"
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
- `server`: the origin every developer machine reaches. Credential-free, no path, and no trailing slash — Nx appends
|
|
492
|
+
`/v1/cache/<hash>`, so a trailing slash asks for a doubled-slash route that answers 404 forever. Such a declaration is
|
|
493
|
+
refused at render time rather than trimmed, because managed CI and the developer shell read the same field.
|
|
494
|
+
- `internalServer`: the origin managed runners reach instead, such as a container-bridge address. Same declaration as a
|
|
495
|
+
git origin's `internalMirror` — it says this repository's runners sit inside that network — so every generated job
|
|
496
|
+
takes it while shells outside keep `server`. Omitted means CI uses `server` too.
|
|
497
|
+
- `tokenSecret`: the repository secret holding the cache token, and the variable name a developer shell resolves locally
|
|
498
|
+
(an ambient value, or a `smoo.secrets` entry). A read-only token is the honest choice for an untrusted context: it
|
|
499
|
+
reads the cache and cannot publish into it.
|
|
500
|
+
|
|
501
|
+
Both generated workflows put `NX_SELF_HOSTED_REMOTE_CACHE_SERVER` and `NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN` in
|
|
502
|
+
every job env that runs Nx. The pair is emitted whole or not at all: Nx enables its cache on a nonempty server alone and
|
|
503
|
+
accepts only 200 or 404 from it, so a server it cannot authenticate to fails every task on 401 instead of missing
|
|
504
|
+
quietly. That is also why a declared cache puts the same-repository gate on Validate that a private dependency install
|
|
505
|
+
does — a fork pull request receives no secrets, and a job with half the pair would fail everything.
|
|
506
|
+
|
|
507
|
+
Developer shells get the pair from the managed `tooling/direnv/secret-references.ts`, which the managed devenv
|
|
508
|
+
`enterShell` runs and `eval`s: it prints the two exports when the declared token has a value, prints nothing when it has
|
|
509
|
+
none (with the reason on stderr), and never replaces a server the environment already carries, so a CI job keeps the
|
|
510
|
+
internal address its own runners reach.
|
|
511
|
+
|
|
512
|
+
`tokenSecret` may name a `smoo.secrets` entry, and then it is the one declared secret that never blocks an install: a
|
|
513
|
+
cache is an optimization, so an unreachable secret provider costs a stderr line where every other declared secret would
|
|
514
|
+
refuse the install outright. `op read` being unavailable in a sandboxed workspace therefore loses the cache, not the
|
|
515
|
+
shell.
|
|
516
|
+
|
|
433
517
|
## Releases
|
|
434
518
|
|
|
435
519
|
Release commands wrap [Nx Release][nx-release] but keep SmoothBricks policy in one place.
|
package/dist/lib/json.d.ts
CHANGED
|
@@ -113,6 +113,19 @@ export interface PackageCargoGitOrigin {
|
|
|
113
113
|
* origin is fetched as declared.
|
|
114
114
|
*/
|
|
115
115
|
internalMirror?: string;
|
|
116
|
+
/**
|
|
117
|
+
* SSH spellings of the same forge that managed CI rewrites onto
|
|
118
|
+
* `internalMirror` as well, e.g. `ssh://forgejo@forge.example.net:2223/`
|
|
119
|
+
* as Cargo and uv pin a git dependency. A runner holds the read token the
|
|
120
|
+
* mirror accepts and no SSH key at all, so every spelling a lockfile can
|
|
121
|
+
* carry needs its own rewrite: git matches `insteadOf` values as literal
|
|
122
|
+
* URL prefixes and infers no spelling from another — not the SSH host from
|
|
123
|
+
* the HTTPS one, and not the userless form from the one carrying a user.
|
|
124
|
+
* Each entry is a credential-free `ssh://` origin without a path; the SSH
|
|
125
|
+
* user is part of the spelling and stays in it. Requires
|
|
126
|
+
* `internalMirror`, since the entry is a rewrite source and nothing else.
|
|
127
|
+
*/
|
|
128
|
+
sshOrigins?: string[];
|
|
116
129
|
}
|
|
117
130
|
/**
|
|
118
131
|
* Declared opt-in for private npm distribution. The registry URL itself is
|
|
@@ -130,6 +143,42 @@ export interface PackagePrivateNpmConfig {
|
|
|
130
143
|
/** Environment variable holding the separate publisher token; publishers only. */
|
|
131
144
|
publishTokenEnv?: string;
|
|
132
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Declared self-hosted Nx remote cache (`smoo.remoteCache`). Nx enables its
|
|
148
|
+
* HTTP cache on a nonempty NX_SELF_HOSTED_REMOTE_CACHE_SERVER and reads the
|
|
149
|
+
* credential from NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN; this declaration
|
|
150
|
+
* is what puts that pair in a managed CI job's environment and in a developer
|
|
151
|
+
* shell (tooling/direnv/secret-references.ts). Absent means every workspace
|
|
152
|
+
* keeps its own local cache and nothing is shared.
|
|
153
|
+
*
|
|
154
|
+
* The pair is emitted whole or not at all, because Nx accepts only 200 or 404
|
|
155
|
+
* from a cache server: a server without a working credential fails every task
|
|
156
|
+
* with 401 rather than missing quietly.
|
|
157
|
+
*/
|
|
158
|
+
export interface PackageRemoteCacheConfig {
|
|
159
|
+
/**
|
|
160
|
+
* Origin every runner and developer machine can reach, e.g.
|
|
161
|
+
* `https://nx-cache.example.net`. Credential-free, no path, and no trailing
|
|
162
|
+
* slash — Nx appends `/v1/cache/<hash>`, so a trailing slash requests
|
|
163
|
+
* `//v1/cache/<hash>`, which is a different route and answers 404 forever.
|
|
164
|
+
*/
|
|
165
|
+
server: string;
|
|
166
|
+
/**
|
|
167
|
+
* Origin an internal runner reaches instead of `server`, e.g.
|
|
168
|
+
* `http://10.89.0.1:8765` across a container bridge. Same declaration as a
|
|
169
|
+
* git origin's `internalMirror`: declaring it says this repository's managed
|
|
170
|
+
* runners are inside that network, so managed CI uses it and shells outside
|
|
171
|
+
* keep `server`. Omitted means CI uses `server` too.
|
|
172
|
+
*/
|
|
173
|
+
internalServer?: string;
|
|
174
|
+
/**
|
|
175
|
+
* Repository secret holding the cache token, and the same variable name a
|
|
176
|
+
* developer shell resolves locally (an ambient value or a `smoo.secrets`
|
|
177
|
+
* entry). A read-only token here keeps an untrusted context reading the
|
|
178
|
+
* cache without being able to publish into it.
|
|
179
|
+
*/
|
|
180
|
+
tokenSecret: RepositorySecretName;
|
|
181
|
+
}
|
|
133
182
|
/** Local bootstrap fallback; existing environment values always take precedence. */
|
|
134
183
|
export interface PackageSecretCommand {
|
|
135
184
|
/** Executed directly, without a shell; stdout supplies the secret value. */
|
|
@@ -138,6 +187,8 @@ export interface PackageSecretCommand {
|
|
|
138
187
|
export interface PackageSmooConfig {
|
|
139
188
|
github?: PackageSmooGithub;
|
|
140
189
|
privateNpm?: PackagePrivateNpmConfig;
|
|
190
|
+
/** Declared self-hosted Nx remote cache; absent means local caching only. */
|
|
191
|
+
remoteCache?: PackageRemoteCacheConfig;
|
|
141
192
|
/** Provider-neutral local secret commands. CI supplies these variables externally. */
|
|
142
193
|
secrets?: Record<string, PackageSecretCommand>;
|
|
143
194
|
}
|
package/dist/lib/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"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"}
|