@intentius/chant 0.124.44 → 0.124.45
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/dist/ci-identity.d.ts +183 -12
- package/dist/ci-identity.d.ts.map +1 -1
- package/dist/ci-identity.js +362 -53
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +17 -1
- package/dist/cli/handlers/pr-env.d.ts +8 -2
- package/dist/cli/handlers/pr-env.d.ts.map +1 -1
- package/dist/cli/handlers/pr-env.js +126 -225
- package/dist/cli/handlers/pr.d.ts +3 -0
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +1 -0
- package/dist/components/cli-support.d.ts +2 -0
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/cli-support.js +4 -2
- package/dist/components/fan-out-support.d.ts +3 -0
- package/dist/components/fan-out-support.d.ts.map +1 -1
- package/dist/components/fan-out-support.js +1 -1
- package/dist/components/pr-env-run.d.ts +270 -0
- package/dist/components/pr-env-run.d.ts.map +1 -0
- package/dist/components/pr-env-run.js +440 -0
- package/dist/components/pr-environment.d.ts +89 -14
- package/dist/components/pr-environment.d.ts.map +1 -1
- package/dist/components/pr-environment.js +94 -8
- package/dist/components/pr-pipeline.d.ts +10 -1
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/op/op-waves.d.ts +17 -0
- package/dist/op/op-waves.d.ts.map +1 -1
- package/dist/op/op-waves.js +23 -1
- package/dist/pr-forge.d.ts +15 -1
- package/dist/pr-forge.d.ts.map +1 -1
- package/dist/pr-forge.js +28 -16
- package/dist/pr-requires.d.ts +5 -1
- package/dist/pr-requires.d.ts.map +1 -1
- package/dist/wave-runtime.mjs +179 -179
- package/dist/workspace/ci-cloud-identity.d.ts +3 -1
- package/dist/workspace/ci-cloud-identity.d.ts.map +1 -1
- package/dist/workspace/ci-cloud-identity.js +16 -1
- package/dist/workspace/ci-run.d.ts +35 -8
- package/dist/workspace/ci-run.d.ts.map +1 -1
- package/dist/workspace/ci-run.js +95 -21
- package/dist/workspace/ci-secrets.d.ts.map +1 -1
- package/dist/workspace/ci-secrets.js +4 -3
- package/dist/workspace/declaration.d.ts +10 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +17 -1
- package/dist/workspace/declaration.schema.json +36 -1
- package/package.json +1 -1
- package/src/ci-identity-targets.test.ts +275 -0
- package/src/ci-identity.ts +394 -61
- package/src/cli/handlers/build.ts +15 -1
- package/src/cli/handlers/pr-env.ts +136 -227
- package/src/cli/handlers/pr.ts +4 -0
- package/src/components/cli-support.ts +6 -1
- package/src/components/fan-out-support.ts +4 -1
- package/src/components/pr-env-run.test.ts +290 -0
- package/src/components/pr-env-run.ts +634 -0
- package/src/components/pr-environment.ts +159 -12
- package/src/components/pr-pipeline.ts +10 -1
- package/src/op/op-waves.ts +38 -1
- package/src/pr-forge-bundle.test.ts +1 -1
- package/src/pr-forge.ts +44 -17
- package/src/pr-requires.test.ts +43 -6
- package/src/pr-requires.ts +5 -1
- package/src/workspace/ci-cloud-identity.test.ts +20 -0
- package/src/workspace/ci-cloud-identity.ts +14 -1
- package/src/workspace/ci-run.test.ts +74 -1
- package/src/workspace/ci-run.ts +122 -29
- package/src/workspace/ci-secrets.test.ts +1 -1
- package/src/workspace/ci-secrets.ts +4 -3
- package/src/workspace/declaration.schema.json +36 -1
- package/src/workspace/declaration.test.ts +7 -0
- package/src/workspace/declaration.ts +24 -2
package/dist/ci-identity.d.ts
CHANGED
|
@@ -21,6 +21,17 @@
|
|
|
21
21
|
* identity. The record job plans the merged commit with the plan identity,
|
|
22
22
|
* and the apply jobs trade for the apply identity.
|
|
23
23
|
*
|
|
24
|
+
* Per target (#4332): a rule with `targets` covers only the targets those
|
|
25
|
+
* globs match, the Terraform roots or Op wave runs inside one member, so
|
|
26
|
+
* one member's targets can plan and apply as different identities. A
|
|
27
|
+
* target takes the first rule that covers its environment, member and
|
|
28
|
+
* target ({@link resolveTargetCloudIdentity}). The plan job then trades for
|
|
29
|
+
* every plan identity the member's targets take, keeps the credentials of
|
|
30
|
+
* each in a file named by {@link CLOUD_TARGETS_ENV}, and a product hands
|
|
31
|
+
* each target's tool its own with {@link targetCloudEnv}. An apply splits
|
|
32
|
+
* into one job per apply identity ({@link cloudIdentityGroups},
|
|
33
|
+
* {@link cloudIdentityWave}), so no job holds two targets' apply tokens.
|
|
34
|
+
*
|
|
24
35
|
* The trade is terragucci's `oidc-trade.ts` (INTENTIUS/terragucci e6cb431,
|
|
25
36
|
* packages/terragucci/src/oidc-trade.ts) with these clients:
|
|
26
37
|
*
|
|
@@ -41,12 +52,21 @@
|
|
|
41
52
|
/** The clouds `ci.identity.cloud` names. */
|
|
42
53
|
export declare const CLOUDS: readonly ["aws", "gcp", "azure"];
|
|
43
54
|
export type Cloud = (typeof CLOUDS)[number];
|
|
44
|
-
/** One rule: the environments and
|
|
55
|
+
/** One rule: the environments, members and targets it covers, and their two identities. */
|
|
45
56
|
export interface CloudIdentityRule {
|
|
46
57
|
/** Environment-name globs. Absent: every environment. */
|
|
47
58
|
environments?: string[];
|
|
48
59
|
/** Member-name globs. Absent: every member, and a pipeline outside a workspace member. */
|
|
49
60
|
members?: string[];
|
|
61
|
+
/**
|
|
62
|
+
* Target globs (#4332): the targets inside the member the rule covers,
|
|
63
|
+
* such as Terraform roots or Op wave run targets. `*` matches within one
|
|
64
|
+
* `/` segment, `**` across segments, `?` one character. Absent: every
|
|
65
|
+
* target, and the pipeline as a whole.
|
|
66
|
+
*/
|
|
67
|
+
targets?: string[];
|
|
68
|
+
/** The name of the apply job group its targets form (#4332). Default: from its first target glob. */
|
|
69
|
+
name?: string;
|
|
50
70
|
/** The identity the plan and record jobs take. */
|
|
51
71
|
plan: string;
|
|
52
72
|
/** The identity the apply jobs take. */
|
|
@@ -89,45 +109,151 @@ export interface CloudIdentityDeclaration {
|
|
|
89
109
|
gcp?: GcpCloudIdentity;
|
|
90
110
|
azure?: AzureCloudIdentity;
|
|
91
111
|
}
|
|
92
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* What one job trades for, per cloud: the job's own identity and where to
|
|
114
|
+
* trade it, and with `targets` (#4332) the identities of the targets that
|
|
115
|
+
* take another, first match wins. A cloud names its own identity, or
|
|
116
|
+
* targets, or both.
|
|
117
|
+
*/
|
|
93
118
|
export interface CloudTradeSpec {
|
|
94
119
|
aws?: {
|
|
95
|
-
role
|
|
120
|
+
role?: string;
|
|
121
|
+
targets?: Array<{
|
|
122
|
+
targets: string[];
|
|
123
|
+
role: string;
|
|
124
|
+
}>;
|
|
96
125
|
region: string;
|
|
97
126
|
audience: string;
|
|
98
127
|
endpoint?: string;
|
|
99
128
|
};
|
|
100
129
|
gcp?: {
|
|
101
|
-
serviceAccount
|
|
130
|
+
serviceAccount?: string;
|
|
131
|
+
targets?: Array<{
|
|
132
|
+
targets: string[];
|
|
133
|
+
serviceAccount: string;
|
|
134
|
+
}>;
|
|
102
135
|
provider: string;
|
|
103
136
|
audience: string;
|
|
104
137
|
stsEndpoint?: string;
|
|
105
138
|
iamEndpoint?: string;
|
|
106
139
|
};
|
|
107
140
|
azure?: {
|
|
108
|
-
clientId
|
|
141
|
+
clientId?: string;
|
|
142
|
+
targets?: Array<{
|
|
143
|
+
targets: string[];
|
|
144
|
+
clientId: string;
|
|
145
|
+
}>;
|
|
109
146
|
tenantId: string;
|
|
110
147
|
audience: string;
|
|
111
148
|
subscriptionId?: string;
|
|
112
149
|
authority?: string;
|
|
113
150
|
};
|
|
114
151
|
}
|
|
152
|
+
/** The key a cloud's trade names its identity under. */
|
|
153
|
+
export declare const IDENTITY_KEY: {
|
|
154
|
+
readonly aws: "role";
|
|
155
|
+
readonly gcp: "serviceAccount";
|
|
156
|
+
readonly azure: "clientId";
|
|
157
|
+
};
|
|
115
158
|
/** A pipeline's two trades: the plan and record jobs', and the apply jobs'. */
|
|
116
159
|
export interface PipelineCloudIdentity {
|
|
117
160
|
plan: CloudTradeSpec;
|
|
118
161
|
apply: CloudTradeSpec;
|
|
119
162
|
}
|
|
120
|
-
/**
|
|
121
|
-
|
|
163
|
+
/**
|
|
164
|
+
* A glob over a name (#4296): `*` and `?` within the name, `[...]` classes,
|
|
165
|
+
* `{a,b}` alternatives, a leading `!` negates. The grammar `ciMemberGlobs`
|
|
166
|
+
* documents, with no dependency, so this module bundles small (#4332).
|
|
167
|
+
*/
|
|
168
|
+
export declare function nameGlobMatch(glob: string, name: string): boolean;
|
|
169
|
+
/**
|
|
170
|
+
* A glob over a target (#4332): `*` within one `/` segment, `**` across
|
|
171
|
+
* segments (and `a/**\/b` across none), `?` one character. The reading of
|
|
172
|
+
* `targetGlobMatch` in ./op/gate-quorum.ts and the terraform lexicon's unit
|
|
173
|
+
* globs, so a root's glob means one thing in each.
|
|
174
|
+
*/
|
|
175
|
+
export declare function targetGlobMatch(glob: string, target: string): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* The first rule that covers `env`, `member` and `target`, or undefined.
|
|
178
|
+
* With no `target`, the first rule that names no targets: the pipeline's own.
|
|
179
|
+
*/
|
|
180
|
+
export declare function ruleFor(rules: readonly CloudIdentityRule[], env: string, member?: string, target?: string): CloudIdentityRule | undefined;
|
|
122
181
|
/**
|
|
123
182
|
* The plan and apply trades of the pipeline for `env` and `member`, or
|
|
124
183
|
* undefined when no rule of any cloud covers them. A cloud no rule covers
|
|
125
|
-
* is left out of both.
|
|
184
|
+
* is left out of both. Each cloud's own identity is the first rule with no
|
|
185
|
+
* `targets` that covers the pipeline; the rules with `targets` before it
|
|
186
|
+
* are the cloud's `targets` (#4332), so the plan trade holds every plan
|
|
187
|
+
* identity a target of the member takes, and the apply trade every apply
|
|
188
|
+
* identity.
|
|
126
189
|
*/
|
|
127
190
|
export declare function resolveCloudIdentity(decl: CloudIdentityDeclaration | undefined, env: string, member?: string): PipelineCloudIdentity | undefined;
|
|
191
|
+
/**
|
|
192
|
+
* The plan and apply trades of one target (#4332): per cloud, the first
|
|
193
|
+
* rule that covers `env`, `member` and `target`. Undefined when no rule of
|
|
194
|
+
* any cloud covers it. Each trade names one identity per cloud and no
|
|
195
|
+
* `targets`.
|
|
196
|
+
*/
|
|
197
|
+
export declare function resolveTargetCloudIdentity(decl: CloudIdentityDeclaration | undefined, env: string, member: string | undefined, target: string): PipelineCloudIdentity | undefined;
|
|
198
|
+
/** The name a pull request environment's rule is matched against (#4330): any pull request's, as `pr-*` covers it. */
|
|
199
|
+
export declare const PR_ENV_IDENTITY_PROBE = "pr-1";
|
|
200
|
+
/**
|
|
201
|
+
* The trade a pull request environment's jobs take (#4330): per cloud, the
|
|
202
|
+
* apply identity of the rules {@link resolveCloudIdentity} gives `pr-1` and
|
|
203
|
+
* `member`, from the rules that name `environments` only. env-up runs the
|
|
204
|
+
* change's code with that identity, so a rule with no `environments`, which
|
|
205
|
+
* covers every environment, is never one it gets: give pull request
|
|
206
|
+
* environments a rule of their own, such as `environments: ["pr-*"]`, whose
|
|
207
|
+
* identity reaches only what they may touch. Undefined when no such rule
|
|
208
|
+
* covers them.
|
|
209
|
+
*/
|
|
210
|
+
export declare function resolvePrEnvCloudIdentity(decl: CloudIdentityDeclaration | undefined, member?: string): CloudTradeSpec | undefined;
|
|
211
|
+
/** One apply job's targets (#4332): those that take the same identities, per cloud. */
|
|
212
|
+
export interface CloudIdentityGroup {
|
|
213
|
+
/** A job-name-safe name: the first rule with `targets` they took (its `name`, or one from its first glob), else `default`. */
|
|
214
|
+
name: string;
|
|
215
|
+
/** The group's targets, in the order given. */
|
|
216
|
+
targets: string[];
|
|
217
|
+
/** Their plan and apply trades, one identity per cloud. Undefined when no rule covers them. */
|
|
218
|
+
identity?: PipelineCloudIdentity;
|
|
219
|
+
}
|
|
220
|
+
/** The name of the apply job group for {@link CloudIdentityGroup}s with no rule of their own. */
|
|
221
|
+
export declare const DEFAULT_IDENTITY_GROUP = "default";
|
|
222
|
+
/**
|
|
223
|
+
* `targets` grouped by the identities they take (#4332), so each group's
|
|
224
|
+
* apply runs in a job of its own with its group's identities alone.
|
|
225
|
+
* Targets that take the same plan and apply identity in every cloud are one
|
|
226
|
+
* group. The groups come in the order their first target comes, with
|
|
227
|
+
* `default` (the targets no rule with `targets` took) last. Names are
|
|
228
|
+
* unique: a second group of one name gets `-2`.
|
|
229
|
+
*/
|
|
230
|
+
export declare function cloudIdentityGroups(decl: CloudIdentityDeclaration | undefined, env: string, member: string | undefined, targets: readonly string[]): CloudIdentityGroup[];
|
|
231
|
+
/**
|
|
232
|
+
* An Op wave's cloud identities over its run targets (#4332), as
|
|
233
|
+
* `OpWave.cloud` and `OpWave.jobs` (./op/op-waves.ts) take them. With two
|
|
234
|
+
* or more {@link cloudIdentityGroups}, the deciding job trades for every
|
|
235
|
+
* plan identity of the targets and each group's job for its group's apply
|
|
236
|
+
* identities alone. With one group, the wave's one job trades for that
|
|
237
|
+
* group's apply identities, and `jobs` is absent. Neither, when no rule
|
|
238
|
+
* covers a target.
|
|
239
|
+
*/
|
|
240
|
+
export declare function cloudIdentityWave(decl: CloudIdentityDeclaration | undefined, env: string, member: string | undefined, targets: readonly string[]): {
|
|
241
|
+
cloud?: CloudTradeSpec;
|
|
242
|
+
jobs?: Array<{
|
|
243
|
+
name: string;
|
|
244
|
+
runs: string[];
|
|
245
|
+
cloud?: CloudTradeSpec;
|
|
246
|
+
}>;
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* Why one job may not apply under `spec` (#4332), or undefined: a cloud
|
|
250
|
+
* whose trade names more than one identity would hand one job the apply
|
|
251
|
+
* tokens of targets that apply as different identities.
|
|
252
|
+
*/
|
|
253
|
+
export declare function oneApplyIdentityProblem(spec: CloudTradeSpec): string | undefined;
|
|
128
254
|
/** The clouds a trade covers, in {@link CLOUDS} order. */
|
|
129
255
|
export declare function tradedClouds(spec: CloudTradeSpec): Cloud[];
|
|
130
|
-
/** Every identity a trade names: the
|
|
256
|
+
/** Every identity a trade names, once each: the roles, the service accounts, the client ids, its targets' too (#4332). */
|
|
131
257
|
export declare function tradeIdentities(spec: CloudTradeSpec): string[];
|
|
132
258
|
/**
|
|
133
259
|
* The problems of a declared `ci.identity.cloud`, each with its JSON
|
|
@@ -158,15 +284,37 @@ export declare const TRADED_VARS: Record<Cloud, readonly string[]>;
|
|
|
158
284
|
* file of `export` lines a GitLab script sources, mode 0600.
|
|
159
285
|
*/
|
|
160
286
|
export type TradeFormat = "github-env" | "sh";
|
|
287
|
+
/**
|
|
288
|
+
* The variable the trade sets when a cloud names `targets` (#4332): the
|
|
289
|
+
* path of a JSON file, mode 0600 and outside the checkout, with each
|
|
290
|
+
* identity's credentials and which targets take it. {@link targetCloudEnv}
|
|
291
|
+
* reads it.
|
|
292
|
+
*/
|
|
293
|
+
export declare const CLOUD_TARGETS_ENV = "CHANT_CLOUD_TARGETS";
|
|
294
|
+
/** The file {@link CLOUD_TARGETS_ENV} names: per cloud, the job's own identity, the targets that take another, and each identity's variables. */
|
|
295
|
+
export interface CloudTargetsFile {
|
|
296
|
+
version: 1;
|
|
297
|
+
clouds: Partial<Record<Cloud, {
|
|
298
|
+
default?: string;
|
|
299
|
+
targets: Array<{
|
|
300
|
+
targets: string[];
|
|
301
|
+
identity: string;
|
|
302
|
+
}>;
|
|
303
|
+
vars: Record<string, Record<string, string>>;
|
|
304
|
+
}>>;
|
|
305
|
+
}
|
|
161
306
|
/**
|
|
162
307
|
* The trade, a script for `node -e` with no dependency, so it runs before
|
|
163
308
|
* the checkout and reads none of the change's files. argv 1 is the file it
|
|
164
309
|
* writes and argv 2 its {@link TradeFormat}; {@link TRADE_SPEC_ENV} is the
|
|
165
310
|
* spec. The token comes from a cloud's {@link idTokenVar} when the job has
|
|
166
311
|
* it (GitLab's `id_tokens`), else from the forge's request URL with the
|
|
167
|
-
* cloud's audience
|
|
168
|
-
*
|
|
169
|
-
*
|
|
312
|
+
* cloud's audience, once per cloud. Each identity of a cloud (its own, and
|
|
313
|
+
* its targets', #4332) is traded with that one token. The job's own
|
|
314
|
+
* identity's variables go in the file; with targets, every identity's go in
|
|
315
|
+
* the {@link CLOUD_TARGETS_ENV} file too. A value that holds anything but
|
|
316
|
+
* printable ASCII with no space is refused, so no answer can add a line of
|
|
317
|
+
* its own to the file. The script never prints a token.
|
|
170
318
|
*/
|
|
171
319
|
export declare const TRADE_JS: string;
|
|
172
320
|
/**
|
|
@@ -187,4 +335,27 @@ export declare function gitlabTradeLines(extraUnset?: readonly string[]): string
|
|
|
187
335
|
export declare function gitlabTradeIdTokens(spec: CloudTradeSpec): Record<string, {
|
|
188
336
|
aud: string;
|
|
189
337
|
}>;
|
|
338
|
+
/**
|
|
339
|
+
* `env` for one target's tool (#4332): the job's environment with each
|
|
340
|
+
* cloud's credentials replaced by those of the identity `target` takes, as
|
|
341
|
+
* the trade left them in the {@link CLOUD_TARGETS_ENV} file. A target that
|
|
342
|
+
* no rule with `targets` covers keeps the job's own identity. Without the
|
|
343
|
+
* file (no cloud names targets), `env` as it is. terragucci's `rootRoleEnv`
|
|
344
|
+
* (roles.ts at INTENTIUS/terragucci ca05bd9).
|
|
345
|
+
*/
|
|
346
|
+
export declare function targetCloudEnv(env: Readonly<Record<string, string | undefined>>, target: string, read?: (path: string) => string): Record<string, string | undefined>;
|
|
347
|
+
/**
|
|
348
|
+
* The identity `target` takes in one cloud of a {@link CloudTargetsFile}:
|
|
349
|
+
* the first entry whose globs match, else the job's own. Undefined when
|
|
350
|
+
* the job has none for that cloud.
|
|
351
|
+
*/
|
|
352
|
+
export declare function targetIdentityIn(cloud: {
|
|
353
|
+
default?: string;
|
|
354
|
+
targets: Array<{
|
|
355
|
+
targets: string[];
|
|
356
|
+
identity: string;
|
|
357
|
+
}>;
|
|
358
|
+
}, target: string): string | undefined;
|
|
359
|
+
/** The {@link CloudTargetsFile} at `path`, refused when it is not one. */
|
|
360
|
+
export declare function readTargetsFile(path: string, read?: (path: string) => string): CloudTargetsFile;
|
|
190
361
|
//# sourceMappingURL=ci-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-identity.d.ts","sourceRoot":"","sources":["../src/ci-identity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ci-identity.d.ts","sourceRoot":"","sources":["../src/ci-identity.ts"],"names":[],"mappings":"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"}
|