@moonrepo/types 1.33.2 → 2.0.0
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/cjs/common.d.ts +9 -7
- package/cjs/common.d.ts.map +1 -1
- package/cjs/events.d.ts +29 -74
- package/cjs/events.d.ts.map +1 -1
- package/cjs/extensions-config.d.ts +26 -0
- package/cjs/extensions-config.d.ts.map +1 -0
- package/cjs/index.d.ts +3 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/mcp.d.ts +6 -6
- package/cjs/mcp.d.ts.map +1 -1
- package/cjs/pipeline.d.ts +61 -72
- package/cjs/pipeline.d.ts.map +1 -1
- package/cjs/project-config.d.ts +129 -173
- package/cjs/project-config.d.ts.map +1 -1
- package/cjs/project.d.ts +8 -119
- package/cjs/project.d.ts.map +1 -1
- package/cjs/task.d.ts +83 -0
- package/cjs/task.d.ts.map +1 -0
- package/cjs/tasks-config.d.ts +380 -139
- package/cjs/tasks-config.d.ts.map +1 -1
- package/cjs/template-config.d.ts +24 -12
- package/cjs/template-config.d.ts.map +1 -1
- package/cjs/toolchains-config.d.ts +128 -0
- package/cjs/toolchains-config.d.ts.map +1 -0
- package/cjs/workspace-config.d.ts +381 -290
- package/cjs/workspace-config.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/common.ts +11 -9
- package/src/events.ts +30 -100
- package/src/extensions-config.ts +31 -0
- package/src/index.ts +3 -1
- package/src/mcp.ts +8 -8
- package/src/pipeline.ts +67 -82
- package/src/project-config.ts +138 -181
- package/src/project.ts +8 -140
- package/src/task.ts +106 -0
- package/src/tasks-config.ts +388 -142
- package/src/template-config.ts +24 -12
- package/src/toolchains-config.ts +143 -0
- package/src/workspace-config.ts +387 -297
- package/src/toolchain-config.ts +0 -814
package/src/workspace-config.ts
CHANGED
|
@@ -3,46 +3,39 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
5
|
import type { ExtendsFrom, Id } from './common';
|
|
6
|
-
import type { PluginLocator } from './toolchain-config';
|
|
7
6
|
|
|
8
7
|
/** How to order ownership rules within the generated file. */
|
|
9
|
-
export type CodeownersOrderBy = 'file-source' | 'project-
|
|
8
|
+
export type CodeownersOrderBy = 'file-source' | 'project-id';
|
|
10
9
|
|
|
11
10
|
/** Configures code ownership rules for generating a `CODEOWNERS` file. */
|
|
12
11
|
export interface CodeownersConfig {
|
|
13
12
|
/**
|
|
14
|
-
*
|
|
15
|
-
* from the workspace root, or a wildcard match for any depth.
|
|
13
|
+
* A map of global file paths and glob patterns to a list of owners.
|
|
14
|
+
* Can be relative from the workspace root, or a wildcard match for any depth.
|
|
16
15
|
*/
|
|
17
16
|
globalPaths: Record<string, string[]>;
|
|
18
17
|
/**
|
|
19
18
|
* How to order ownership rules within the generated file.
|
|
20
19
|
*
|
|
21
20
|
* @default 'file-source'
|
|
22
|
-
* @type {'file-source' | 'project-
|
|
21
|
+
* @type {'file-source' | 'project-id'}
|
|
23
22
|
*/
|
|
24
23
|
orderBy: CodeownersOrderBy;
|
|
25
24
|
/**
|
|
26
25
|
* Bitbucket and GitLab only. The number of approvals required for the
|
|
27
26
|
* request to be satisfied. This will be applied to all paths.
|
|
27
|
+
* @since 1.28.0
|
|
28
28
|
*/
|
|
29
29
|
requiredApprovals: number | null;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
32
|
-
* rules from each project in the workspace.
|
|
31
|
+
* Automatically generate a `CODEOWNERS` file during a sync operation,
|
|
32
|
+
* after aggregating all ownership rules from each project in the workspace.
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
sync: boolean;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/** Configures boundaries and constraints between projects. */
|
|
38
38
|
export interface ConstraintsConfig {
|
|
39
|
-
/**
|
|
40
|
-
* Enforces relationships between projects based on each project's
|
|
41
|
-
* `layer` setting.
|
|
42
|
-
*
|
|
43
|
-
* @default true
|
|
44
|
-
*/
|
|
45
|
-
enforceProjectTypeRelationships?: boolean;
|
|
46
39
|
/**
|
|
47
40
|
* Enforces relationships between projects based on each project's
|
|
48
41
|
* `layer` setting.
|
|
@@ -57,11 +50,52 @@ export interface ConstraintsConfig {
|
|
|
57
50
|
tagRelationships: Record<Id, Id[]>;
|
|
58
51
|
}
|
|
59
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Configures `Dockerfile` generation. When configured at the workspace-level,
|
|
55
|
+
* applies to all projects, but can be overridden at the project-level.
|
|
56
|
+
*/
|
|
57
|
+
export interface DockerFileConfig {
|
|
58
|
+
/**
|
|
59
|
+
* A task identifier within the current project for building the project.
|
|
60
|
+
* If not defined, will skip the build step.
|
|
61
|
+
*/
|
|
62
|
+
buildTask: Id | null;
|
|
63
|
+
/**
|
|
64
|
+
* The base Docker image to use. If not defined, will use the provided image
|
|
65
|
+
* from the first matching toolchain, otherwise defaults to "scratch".
|
|
66
|
+
*/
|
|
67
|
+
image: string | null;
|
|
68
|
+
/**
|
|
69
|
+
* Run the `moon docker prune` command after building the
|
|
70
|
+
* project, but before starting it.
|
|
71
|
+
* @since 2.0.0
|
|
72
|
+
*/
|
|
73
|
+
runPrune: boolean | null;
|
|
74
|
+
/**
|
|
75
|
+
* Run the `moon docker setup` command after scaffolding,
|
|
76
|
+
* but before building the project.
|
|
77
|
+
* @since 2.0.0
|
|
78
|
+
*/
|
|
79
|
+
runSetup: boolean | null;
|
|
80
|
+
/**
|
|
81
|
+
* A task identifier within the current project for starting the project
|
|
82
|
+
* within the `CMD` instruction. If not defined, will skip the start step
|
|
83
|
+
* and not include the `CMD` instruction.
|
|
84
|
+
*/
|
|
85
|
+
startTask: Id | null;
|
|
86
|
+
/**
|
|
87
|
+
* A custom template file, relative from the workspace root, to use when
|
|
88
|
+
* rendering the `Dockerfile`. Powered by Tera.
|
|
89
|
+
*/
|
|
90
|
+
template: string | null;
|
|
91
|
+
}
|
|
92
|
+
|
|
60
93
|
/** Configures aspects of the Docker pruning process. */
|
|
61
94
|
export interface DockerPruneConfig {
|
|
62
95
|
/**
|
|
63
96
|
* Automatically delete vendor directories (package manager
|
|
64
|
-
* dependencies, build targets, etc) while pruning.
|
|
97
|
+
* dependencies, build targets, etc) while pruning. This is
|
|
98
|
+
* handled by each toolchain plugin and not moon directly.
|
|
65
99
|
*
|
|
66
100
|
* @default true
|
|
67
101
|
*/
|
|
@@ -72,27 +106,36 @@ export interface DockerPruneConfig {
|
|
|
72
106
|
*
|
|
73
107
|
* @default true
|
|
74
108
|
*/
|
|
75
|
-
|
|
109
|
+
installToolchainDependencies?: boolean;
|
|
76
110
|
}
|
|
77
111
|
|
|
78
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Configures aspects of the Docker scaffolding process.
|
|
114
|
+
* When configured at the workspace-level, applies to all projects,
|
|
115
|
+
* but can be overridden at the project-level.
|
|
116
|
+
*/
|
|
79
117
|
export interface DockerScaffoldConfig {
|
|
80
118
|
/**
|
|
81
|
-
*
|
|
82
|
-
* the
|
|
83
|
-
*
|
|
84
|
-
* @default true
|
|
119
|
+
* List of glob patterns in which to include/exclude files in
|
|
120
|
+
* the "configs" skeleton. Applies to both project and
|
|
121
|
+
* workspace level scaffolding.
|
|
85
122
|
*/
|
|
86
|
-
|
|
123
|
+
configsPhaseGlobs: string[];
|
|
87
124
|
/**
|
|
88
|
-
* List of glob patterns
|
|
89
|
-
*
|
|
125
|
+
* List of glob patterns in which to include/exclude files in
|
|
126
|
+
* the "sources" skeleton. Applies to both project and
|
|
127
|
+
* workspace level scaffolding.
|
|
90
128
|
*/
|
|
91
|
-
|
|
129
|
+
sourcesPhaseGlobs: string[];
|
|
92
130
|
}
|
|
93
131
|
|
|
94
132
|
/** Configures our Docker integration. */
|
|
95
133
|
export interface DockerConfig {
|
|
134
|
+
/**
|
|
135
|
+
* Configures aspects of the `Dockerfile` generation process.
|
|
136
|
+
* @since 2.0.0
|
|
137
|
+
*/
|
|
138
|
+
file: DockerFileConfig;
|
|
96
139
|
/** Configures aspects of the Docker pruning process. */
|
|
97
140
|
prune: DockerPruneConfig;
|
|
98
141
|
/** Configures aspects of the Docker scaffolding process. */
|
|
@@ -100,59 +143,7 @@ export interface DockerConfig {
|
|
|
100
143
|
}
|
|
101
144
|
|
|
102
145
|
/** Configures experiments across the entire moon workspace. */
|
|
103
|
-
export interface ExperimentsConfig {
|
|
104
|
-
/**
|
|
105
|
-
* @default true
|
|
106
|
-
* @deprecated
|
|
107
|
-
*/
|
|
108
|
-
actionPipelineV2?: boolean;
|
|
109
|
-
/**
|
|
110
|
-
* @default true
|
|
111
|
-
* @deprecated
|
|
112
|
-
*/
|
|
113
|
-
disallowRunInCiMismatch?: boolean;
|
|
114
|
-
/**
|
|
115
|
-
* Enable faster glob file system walking.
|
|
116
|
-
*
|
|
117
|
-
* @default true
|
|
118
|
-
*/
|
|
119
|
-
fasterGlobWalk?: boolean;
|
|
120
|
-
/**
|
|
121
|
-
* Enable a faster and more accurate Git implementation.
|
|
122
|
-
* Supports submodules, subtrees, and worktrees.
|
|
123
|
-
*
|
|
124
|
-
* @default true
|
|
125
|
-
*/
|
|
126
|
-
gitV2?: boolean;
|
|
127
|
-
/**
|
|
128
|
-
* @default true
|
|
129
|
-
* @deprecated
|
|
130
|
-
*/
|
|
131
|
-
interweavedTaskInheritance?: boolean;
|
|
132
|
-
/**
|
|
133
|
-
* @default true
|
|
134
|
-
* @deprecated
|
|
135
|
-
*/
|
|
136
|
-
strictProjectAliases?: boolean;
|
|
137
|
-
/**
|
|
138
|
-
* @default true
|
|
139
|
-
* @deprecated
|
|
140
|
-
*/
|
|
141
|
-
strictProjectIds?: boolean;
|
|
142
|
-
/**
|
|
143
|
-
* @default true
|
|
144
|
-
* @deprecated
|
|
145
|
-
*/
|
|
146
|
-
taskOutputBoundaries?: boolean;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/** Configures an individual extension. */
|
|
150
|
-
export interface ExtensionConfig {
|
|
151
|
-
/** Arbitrary configuration that'll be passed to the WASM plugin. */
|
|
152
|
-
config: Record<string, unknown>;
|
|
153
|
-
/** Location of the WASM plugin to use. */
|
|
154
|
-
plugin: PluginLocator | null;
|
|
155
|
-
}
|
|
146
|
+
export interface ExperimentsConfig {}
|
|
156
147
|
|
|
157
148
|
/** Configures the generator for scaffolding from templates. */
|
|
158
149
|
export interface GeneratorConfig {
|
|
@@ -171,22 +162,17 @@ export type HasherWalkStrategy = 'glob' | 'vcs';
|
|
|
171
162
|
|
|
172
163
|
/** Configures aspects of the content hashing engine. */
|
|
173
164
|
export interface HasherConfig {
|
|
174
|
-
/**
|
|
175
|
-
* The number of files to include in each hash operation.
|
|
176
|
-
*
|
|
177
|
-
* @default 2500
|
|
178
|
-
* @deprecated
|
|
179
|
-
*/
|
|
180
|
-
batchSize?: number;
|
|
181
165
|
/**
|
|
182
166
|
* When `warnOnMissingInputs` is enabled, filters missing file
|
|
183
167
|
* paths from logging a warning.
|
|
168
|
+
* @since 1.10.0
|
|
184
169
|
*/
|
|
185
170
|
ignoreMissingPatterns: string[];
|
|
186
171
|
/**
|
|
187
172
|
* Filters file paths that match a configured glob pattern
|
|
188
173
|
* when a hash is being generated. Patterns are workspace relative,
|
|
189
174
|
* so prefixing with `**` is recommended.
|
|
175
|
+
* @since 1.10.0
|
|
190
176
|
*/
|
|
191
177
|
ignorePatterns: string[];
|
|
192
178
|
/**
|
|
@@ -218,34 +204,28 @@ export type NotifierEventType = 'never' | 'always' | 'failure' | 'success' | 'ta
|
|
|
218
204
|
/** Configures how and where notifications are sent. */
|
|
219
205
|
export interface NotifierConfig {
|
|
220
206
|
/**
|
|
221
|
-
* Display an OS notification for certain pipeline events.
|
|
207
|
+
* Display an OS notification for certain action pipeline events.
|
|
208
|
+
* @since 1.38.0
|
|
222
209
|
*
|
|
223
210
|
* @default 'never'
|
|
224
211
|
*/
|
|
225
212
|
terminalNotifications: NotifierEventType | null;
|
|
226
213
|
/**
|
|
227
214
|
* Whether webhook requests require acknowledgment (2xx response).
|
|
228
|
-
*
|
|
229
|
-
* @default false
|
|
215
|
+
* @since 1.38.0
|
|
230
216
|
*/
|
|
231
|
-
webhookAcknowledge
|
|
217
|
+
webhookAcknowledge: boolean;
|
|
232
218
|
/** A secure URL in which to send webhooks to. */
|
|
233
219
|
webhookUrl: string | null;
|
|
234
220
|
}
|
|
235
221
|
|
|
236
222
|
export type PipelineActionSwitch = null | boolean | Id[];
|
|
237
223
|
|
|
238
|
-
/** Configures aspects of the
|
|
224
|
+
/** Configures aspects of the action pipeline. */
|
|
239
225
|
export interface PipelineConfig {
|
|
240
|
-
/**
|
|
241
|
-
* List of target's for tasks without outputs, that should be
|
|
242
|
-
* cached and persisted.
|
|
243
|
-
*
|
|
244
|
-
* @deprecated
|
|
245
|
-
*/
|
|
246
|
-
archivableTargets: string[];
|
|
247
226
|
/**
|
|
248
227
|
* Automatically clean the cache after every task run.
|
|
228
|
+
* @since 1.24.0
|
|
249
229
|
*
|
|
250
230
|
* @default true
|
|
251
231
|
*/
|
|
@@ -263,12 +243,13 @@ export interface PipelineConfig {
|
|
|
263
243
|
*/
|
|
264
244
|
inheritColorsForPipedTasks?: boolean;
|
|
265
245
|
/**
|
|
266
|
-
* Run the `
|
|
267
|
-
*
|
|
246
|
+
* Run the `InstallDependencies` actions for each running task
|
|
247
|
+
* when changes to lockfiles and manifests are detected.
|
|
248
|
+
* @since 1.34.0
|
|
268
249
|
*/
|
|
269
250
|
installDependencies: PipelineActionSwitch;
|
|
270
251
|
/**
|
|
271
|
-
*
|
|
252
|
+
* A threshold in milliseconds in which to force kill running child
|
|
272
253
|
* processes after the pipeline receives an external signal. A value
|
|
273
254
|
* of 0 will not kill the process and let them run to completion.
|
|
274
255
|
*
|
|
@@ -280,6 +261,7 @@ export interface PipelineConfig {
|
|
|
280
261
|
/**
|
|
281
262
|
* When creating `SyncProject` actions, recursively create a `SyncProject`
|
|
282
263
|
* action for each project dependency, and link them as a relationship.
|
|
264
|
+
* @since 1.34.0
|
|
283
265
|
*
|
|
284
266
|
* @default true
|
|
285
267
|
*/
|
|
@@ -287,54 +269,80 @@ export interface PipelineConfig {
|
|
|
287
269
|
/**
|
|
288
270
|
* Run the `SyncProject` actions in the pipeline for each owning project
|
|
289
271
|
* of a running task.
|
|
272
|
+
* @since 1.34.0
|
|
290
273
|
*/
|
|
291
274
|
syncProjects: PipelineActionSwitch;
|
|
292
275
|
/**
|
|
293
276
|
* Run the `SyncWorkspace` action before all actions in the pipeline.
|
|
277
|
+
* @since 1.34.0
|
|
294
278
|
*
|
|
295
279
|
* @default true
|
|
296
280
|
*/
|
|
297
281
|
syncWorkspace?: boolean;
|
|
298
282
|
}
|
|
299
283
|
|
|
284
|
+
/** The project identifier format for glob located projects. */
|
|
285
|
+
export type WorkspaceProjectGlobFormat = 'dir-name' | 'source-path';
|
|
286
|
+
|
|
300
287
|
/** Configures projects in the workspace, using both globs and explicit source paths. */
|
|
301
288
|
export interface WorkspaceProjectsConfig {
|
|
302
289
|
/**
|
|
303
|
-
*
|
|
304
|
-
*
|
|
290
|
+
* The project identifier format for glob located projects.
|
|
291
|
+
* @since 2.0.0
|
|
292
|
+
*
|
|
293
|
+
* @default 'dir-name'
|
|
294
|
+
* @type {'dir-name' | 'source-path'}
|
|
295
|
+
*/
|
|
296
|
+
globFormat: WorkspaceProjectGlobFormat;
|
|
297
|
+
/**
|
|
298
|
+
* A list of glob patterns in which to locate project directories.
|
|
299
|
+
* Can be suffixed with a `moon.*` config file to only find distinct projects.
|
|
305
300
|
*/
|
|
306
301
|
globs: string[];
|
|
307
|
-
/** A
|
|
302
|
+
/** A map of project identifiers to relative file paths to each project directory. */
|
|
308
303
|
sources: Record<Id, string>;
|
|
309
304
|
}
|
|
310
305
|
|
|
311
306
|
export type WorkspaceProjects = WorkspaceProjectsConfig | string[] | Record<Id, string>;
|
|
312
307
|
|
|
313
|
-
/**
|
|
308
|
+
/**
|
|
309
|
+
* The API format of the remote service.
|
|
310
|
+
* @since 1.32.0
|
|
311
|
+
*/
|
|
314
312
|
export type RemoteApi = 'grpc' | 'http';
|
|
315
313
|
|
|
316
|
-
/**
|
|
314
|
+
/**
|
|
315
|
+
* Configures basic HTTP authentication.
|
|
316
|
+
* @since 1.32.0
|
|
317
|
+
*/
|
|
317
318
|
export interface RemoteAuthConfig {
|
|
318
|
-
/** HTTP headers to inject into every request. */
|
|
319
|
+
/** A map of HTTP headers to inject into every request. */
|
|
319
320
|
headers: Record<string, string>;
|
|
320
321
|
/**
|
|
321
322
|
* The name of an environment variable to use as a bearer token.
|
|
322
323
|
*
|
|
323
|
-
* @
|
|
324
|
+
* @env MOON_REMOTE_AUTH_TOKEN
|
|
324
325
|
*/
|
|
325
326
|
token: string | null;
|
|
326
327
|
}
|
|
327
328
|
|
|
328
|
-
/**
|
|
329
|
+
/**
|
|
330
|
+
* Supported blob compression levels for gRPC APIs.
|
|
331
|
+
* @since 1.31.0
|
|
332
|
+
*/
|
|
329
333
|
export type RemoteCompression = 'none' | 'zstd';
|
|
330
334
|
|
|
331
|
-
/**
|
|
335
|
+
/**
|
|
336
|
+
* Configures the action cache (AC) and content addressable cache (CAS).
|
|
337
|
+
* @since 1.30.0
|
|
338
|
+
*/
|
|
332
339
|
export interface RemoteCacheConfig {
|
|
333
340
|
/**
|
|
334
341
|
* The compression format to use when uploading/downloading blobs.
|
|
342
|
+
* @since 1.31.0
|
|
335
343
|
*
|
|
336
344
|
* @default 'none'
|
|
337
|
-
* @
|
|
345
|
+
* @env MOON_REMOTE_CACHE_COMPRESSION
|
|
338
346
|
* @type {'none' | 'zstd'}
|
|
339
347
|
*/
|
|
340
348
|
compression: RemoteCompression;
|
|
@@ -342,99 +350,114 @@ export interface RemoteCacheConfig {
|
|
|
342
350
|
* Unique instance name for blobs. Will be used as a folder name.
|
|
343
351
|
*
|
|
344
352
|
* @default 'moon-outputs'
|
|
345
|
-
* @
|
|
353
|
+
* @env MOON_REMOTE_CACHE_INSTANCE_NAME
|
|
346
354
|
*/
|
|
347
355
|
instanceName?: string;
|
|
348
356
|
/**
|
|
349
357
|
* When local, only download matching blobs and do not upload new
|
|
350
358
|
* blobs. Blobs will only be uploaded in CI environments.
|
|
359
|
+
* @since 1.40.0
|
|
351
360
|
*
|
|
352
|
-
* @
|
|
361
|
+
* @env MOON_REMOTE_CACHE_LOCAL_READ_ONLY
|
|
353
362
|
*/
|
|
354
363
|
localReadOnly: boolean;
|
|
355
364
|
/**
|
|
356
365
|
* When downloading blobs, verify the digests/hashes in the response
|
|
357
366
|
* match the associated blob contents. This will reduce performance
|
|
358
367
|
* but ensure partial or corrupted blobs won't cause failures.
|
|
368
|
+
* @since 1.36.0
|
|
359
369
|
*
|
|
360
|
-
* @
|
|
370
|
+
* @env MOON_REMOTE_CACHE_VERIFY_INTEGRITY
|
|
361
371
|
*/
|
|
362
372
|
verifyIntegrity: boolean;
|
|
363
373
|
}
|
|
364
374
|
|
|
365
|
-
/**
|
|
375
|
+
/**
|
|
376
|
+
* Configures for both server and client authentication with mTLS.
|
|
377
|
+
* @since 1.30.0
|
|
378
|
+
*/
|
|
366
379
|
export interface RemoteMtlsConfig {
|
|
367
380
|
/**
|
|
368
381
|
* If true, assume that the server supports HTTP/2,
|
|
369
382
|
* even if it doesn't provide protocol negotiation via ALPN.
|
|
370
383
|
*
|
|
371
|
-
* @
|
|
384
|
+
* @env MOON_REMOTE_MTLS_HTTP
|
|
372
385
|
*/
|
|
373
386
|
assumeHttp2: boolean;
|
|
374
387
|
/**
|
|
375
388
|
* A file path, relative from the workspace root, to the
|
|
376
389
|
* certificate authority PEM encoded X509 certificate.
|
|
377
390
|
*
|
|
378
|
-
* @
|
|
391
|
+
* @env MOON_REMOTE_MTLS_CA_CERT
|
|
379
392
|
*/
|
|
380
393
|
caCert: string;
|
|
381
394
|
/**
|
|
382
395
|
* A file path, relative from the workspace root, to the
|
|
383
396
|
* client's PEM encoded X509 certificate.
|
|
384
397
|
*
|
|
385
|
-
* @
|
|
398
|
+
* @env MOON_REMOTE_MTLS_CLIENT_CERT
|
|
386
399
|
*/
|
|
387
400
|
clientCert: string;
|
|
388
401
|
/**
|
|
389
402
|
* A file path, relative from the workspace root, to the
|
|
390
403
|
* client's PEM encoded X509 private key.
|
|
391
404
|
*
|
|
392
|
-
* @
|
|
405
|
+
* @env MOON_REMOTE_MTLS_CLIENT_KEY
|
|
393
406
|
*/
|
|
394
407
|
clientKey: string;
|
|
395
408
|
/**
|
|
396
409
|
* The domain name in which to verify the TLS certificate.
|
|
397
410
|
*
|
|
398
|
-
* @
|
|
411
|
+
* @env MOON_REMOTE_MTLS_DOMAIN
|
|
399
412
|
*/
|
|
400
413
|
domain: string | null;
|
|
401
414
|
}
|
|
402
415
|
|
|
403
|
-
/**
|
|
416
|
+
/**
|
|
417
|
+
* Configures for server-only authentication with TLS.
|
|
418
|
+
* @since 1.30.0
|
|
419
|
+
*/
|
|
404
420
|
export interface RemoteTlsConfig {
|
|
405
421
|
/**
|
|
406
422
|
* If true, assume that the server supports HTTP/2,
|
|
407
423
|
* even if it doesn't provide protocol negotiation via ALPN.
|
|
408
424
|
*
|
|
409
|
-
* @
|
|
425
|
+
* @env MOON_REMOTE_TLS_HTTP2
|
|
410
426
|
*/
|
|
411
427
|
assumeHttp2: boolean;
|
|
412
428
|
/**
|
|
413
429
|
* A file path, relative from the workspace root, to the
|
|
414
430
|
* certificate authority PEM encoded X509 certificate.
|
|
415
431
|
*
|
|
416
|
-
* @
|
|
432
|
+
* @env MOON_REMOTE_TLS_CERT
|
|
417
433
|
*/
|
|
418
434
|
cert: string;
|
|
419
435
|
/**
|
|
420
436
|
* The domain name in which to verify the TLS certificate.
|
|
421
437
|
*
|
|
422
|
-
* @
|
|
438
|
+
* @env MOON_REMOTE_TLS_DOMAIN
|
|
423
439
|
*/
|
|
424
440
|
domain: string | null;
|
|
425
441
|
}
|
|
426
442
|
|
|
427
|
-
/**
|
|
443
|
+
/**
|
|
444
|
+
* Configures the remote service, powered by the Bazel Remote Execution API.
|
|
445
|
+
* @since 1.30.0
|
|
446
|
+
*/
|
|
428
447
|
export interface RemoteConfig {
|
|
429
448
|
/**
|
|
430
449
|
* The API format of the remote service.
|
|
450
|
+
* @since 1.32.0
|
|
431
451
|
*
|
|
432
452
|
* @default 'grpc'
|
|
433
|
-
* @
|
|
453
|
+
* @env MOON_REMOTE_API
|
|
434
454
|
* @type {'grpc' | 'http'}
|
|
435
455
|
*/
|
|
436
456
|
api: RemoteApi;
|
|
437
|
-
/**
|
|
457
|
+
/**
|
|
458
|
+
* Connect to the host using basic HTTP authentication.
|
|
459
|
+
* @since 1.32.0
|
|
460
|
+
*/
|
|
438
461
|
auth: RemoteAuthConfig | null;
|
|
439
462
|
/** Configures the action cache (AC) and content addressable cache (CAS). */
|
|
440
463
|
cache: RemoteCacheConfig;
|
|
@@ -442,7 +465,7 @@ export interface RemoteConfig {
|
|
|
442
465
|
* The remote host to connect and send requests to.
|
|
443
466
|
* Supports gRPC protocols.
|
|
444
467
|
*
|
|
445
|
-
* @
|
|
468
|
+
* @env MOON_REMOTE_HOST
|
|
446
469
|
*/
|
|
447
470
|
host: string | null;
|
|
448
471
|
/**
|
|
@@ -454,11 +477,14 @@ export interface RemoteConfig {
|
|
|
454
477
|
tls: RemoteTlsConfig | null;
|
|
455
478
|
}
|
|
456
479
|
|
|
457
|
-
/** The format to use for generated VCS hook files. */
|
|
458
|
-
export type VcsHookFormat = 'bash' | 'native';
|
|
459
|
-
|
|
460
480
|
/** The VCS being utilized by the repository. */
|
|
461
|
-
export type
|
|
481
|
+
export type VcsClient = 'git';
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* The format to use for generated VCS hook files.
|
|
485
|
+
* @since 1.29.0
|
|
486
|
+
*/
|
|
487
|
+
export type VcsHookFormat = 'bash' | 'native';
|
|
462
488
|
|
|
463
489
|
/**
|
|
464
490
|
* The upstream version control provider, where the repository
|
|
@@ -468,6 +494,13 @@ export type VcsProvider = 'bitbucket' | 'github' | 'gitlab' | 'other';
|
|
|
468
494
|
|
|
469
495
|
/** Configures the version control system (VCS). */
|
|
470
496
|
export interface VcsConfig {
|
|
497
|
+
/**
|
|
498
|
+
* The VCS client being utilized by the repository.
|
|
499
|
+
*
|
|
500
|
+
* @default 'git'
|
|
501
|
+
* @type {'git'}
|
|
502
|
+
*/
|
|
503
|
+
client: VcsClient;
|
|
471
504
|
/**
|
|
472
505
|
* The default branch / base.
|
|
473
506
|
*
|
|
@@ -476,23 +509,21 @@ export interface VcsConfig {
|
|
|
476
509
|
defaultBranch?: string;
|
|
477
510
|
/**
|
|
478
511
|
* The format to use for generated VCS hook files.
|
|
512
|
+
* @since 1.29.0
|
|
479
513
|
*
|
|
480
514
|
* @default 'native'
|
|
481
515
|
* @type {'bash' | 'native'}
|
|
482
516
|
*/
|
|
483
517
|
hookFormat: VcsHookFormat;
|
|
484
|
-
/** A mapping of hooks to commands to run when the hook is triggered. */
|
|
485
|
-
hooks: Record<string, string[]>;
|
|
486
518
|
/**
|
|
487
|
-
*
|
|
488
|
-
*
|
|
489
|
-
* @default 'git'
|
|
490
|
-
* @type {'git'}
|
|
519
|
+
* A map of hooks to a list of commands to run when the hook is triggered.
|
|
520
|
+
* @since 1.9.0
|
|
491
521
|
*/
|
|
492
|
-
|
|
522
|
+
hooks: Record<string, string[]>;
|
|
493
523
|
/**
|
|
494
524
|
* The upstream version control provider, where the repository
|
|
495
525
|
* source code is stored.
|
|
526
|
+
* @since 1.8.0
|
|
496
527
|
*
|
|
497
528
|
* @default 'github'
|
|
498
529
|
* @type {'bitbucket' | 'github' | 'gitlab' | 'other'}
|
|
@@ -500,8 +531,12 @@ export interface VcsConfig {
|
|
|
500
531
|
provider: VcsProvider;
|
|
501
532
|
/** List of remote's in which to compare branches against. */
|
|
502
533
|
remoteCandidates?: string[];
|
|
503
|
-
/**
|
|
504
|
-
|
|
534
|
+
/**
|
|
535
|
+
* Automatically generate hooks and scripts during a sync operation,
|
|
536
|
+
* based on the `hooks` setting.
|
|
537
|
+
* @since 1.9.0
|
|
538
|
+
*/
|
|
539
|
+
sync: boolean;
|
|
505
540
|
}
|
|
506
541
|
|
|
507
542
|
/**
|
|
@@ -509,23 +544,37 @@ export interface VcsConfig {
|
|
|
509
544
|
* Docs: https://moonrepo.dev/docs/config/workspace
|
|
510
545
|
*/
|
|
511
546
|
export interface WorkspaceConfig {
|
|
512
|
-
/** @default '
|
|
547
|
+
/** @default './cache/schemas/workspace.json' */
|
|
513
548
|
$schema?: string;
|
|
514
|
-
/**
|
|
549
|
+
/**
|
|
550
|
+
* Configures code ownership rules for generating a `CODEOWNERS` file.
|
|
551
|
+
* @since 1.8.0
|
|
552
|
+
*/
|
|
515
553
|
codeowners: CodeownersConfig;
|
|
516
554
|
/** Configures boundaries and constraints between projects. */
|
|
517
555
|
constraints: ConstraintsConfig;
|
|
518
|
-
/**
|
|
556
|
+
/**
|
|
557
|
+
* The default/main project within the workspace. When a task is
|
|
558
|
+
* ran without a project, the default will be used.
|
|
559
|
+
* @since 2.0.0
|
|
560
|
+
*/
|
|
561
|
+
defaultProject: Id | null;
|
|
562
|
+
/**
|
|
563
|
+
* Configures Docker integration for the workspace.
|
|
564
|
+
* @since 1.27.0
|
|
565
|
+
*/
|
|
519
566
|
docker: DockerConfig;
|
|
520
|
-
/**
|
|
567
|
+
/**
|
|
568
|
+
* Configures experiments across the entire moon workspace.
|
|
569
|
+
* @since 1.11.0
|
|
570
|
+
*/
|
|
521
571
|
experiments: ExperimentsConfig;
|
|
522
572
|
/**
|
|
523
|
-
* Extends one or many workspace configuration file.
|
|
524
|
-
* file path or a secure URL.
|
|
573
|
+
* Extends one or many workspace configuration file.
|
|
574
|
+
* Supports a relative file path or a secure URL.
|
|
575
|
+
* @since 1.12.0
|
|
525
576
|
*/
|
|
526
577
|
extends: ExtendsFrom | null;
|
|
527
|
-
/** Configures extensions that can be executed with `moon ext`. */
|
|
528
|
-
extensions: Record<Id, ExtensionConfig>;
|
|
529
578
|
/** Configures the generator for scaffolding from templates. */
|
|
530
579
|
generator: GeneratorConfig;
|
|
531
580
|
/** Configures aspects of the content hashing engine. */
|
|
@@ -533,8 +582,6 @@ export interface WorkspaceConfig {
|
|
|
533
582
|
/** Configures how and where notifications are sent. */
|
|
534
583
|
notifier: NotifierConfig;
|
|
535
584
|
/** Configures aspects of the action pipeline. */
|
|
536
|
-
runner?: PipelineConfig;
|
|
537
|
-
/** Configures aspects of the action pipeline. */
|
|
538
585
|
pipeline: PipelineConfig;
|
|
539
586
|
/**
|
|
540
587
|
* Configures all projects within the workspace to create a project graph.
|
|
@@ -542,15 +589,19 @@ export interface WorkspaceConfig {
|
|
|
542
589
|
* or both values.
|
|
543
590
|
*/
|
|
544
591
|
projects: WorkspaceProjects;
|
|
592
|
+
/** Configures aspects of the remote service. */
|
|
593
|
+
remote: RemoteConfig;
|
|
545
594
|
/**
|
|
546
595
|
* Collects anonymous usage information, and checks for new moon versions.
|
|
547
596
|
*
|
|
548
597
|
* @default true
|
|
598
|
+
* @env MOON_TELEMETRY
|
|
549
599
|
*/
|
|
550
600
|
telemetry?: boolean;
|
|
551
|
-
/**
|
|
552
|
-
|
|
553
|
-
|
|
601
|
+
/**
|
|
602
|
+
* Configures the version control system (VCS). Also known as
|
|
603
|
+
* source code management (SCM).
|
|
604
|
+
*/
|
|
554
605
|
vcs: VcsConfig;
|
|
555
606
|
/** Requires a specific version of the `moon` binary. */
|
|
556
607
|
versionConstraint: string | null;
|
|
@@ -559,8 +610,8 @@ export interface WorkspaceConfig {
|
|
|
559
610
|
/** Configures code ownership rules for generating a `CODEOWNERS` file. */
|
|
560
611
|
export interface PartialCodeownersConfig {
|
|
561
612
|
/**
|
|
562
|
-
*
|
|
563
|
-
* from the workspace root, or a wildcard match for any depth.
|
|
613
|
+
* A map of global file paths and glob patterns to a list of owners.
|
|
614
|
+
* Can be relative from the workspace root, or a wildcard match for any depth.
|
|
564
615
|
*/
|
|
565
616
|
globalPaths?: Record<string, string[]> | null;
|
|
566
617
|
/**
|
|
@@ -572,24 +623,18 @@ export interface PartialCodeownersConfig {
|
|
|
572
623
|
/**
|
|
573
624
|
* Bitbucket and GitLab only. The number of approvals required for the
|
|
574
625
|
* request to be satisfied. This will be applied to all paths.
|
|
626
|
+
* @since 1.28.0
|
|
575
627
|
*/
|
|
576
628
|
requiredApprovals?: number | null;
|
|
577
629
|
/**
|
|
578
|
-
*
|
|
579
|
-
* rules from each project in the workspace.
|
|
630
|
+
* Automatically generate a `CODEOWNERS` file during a sync operation,
|
|
631
|
+
* after aggregating all ownership rules from each project in the workspace.
|
|
580
632
|
*/
|
|
581
|
-
|
|
633
|
+
sync?: boolean | null;
|
|
582
634
|
}
|
|
583
635
|
|
|
584
636
|
/** Configures boundaries and constraints between projects. */
|
|
585
637
|
export interface PartialConstraintsConfig {
|
|
586
|
-
/**
|
|
587
|
-
* Enforces relationships between projects based on each project's
|
|
588
|
-
* `layer` setting.
|
|
589
|
-
*
|
|
590
|
-
* @default true
|
|
591
|
-
*/
|
|
592
|
-
enforceProjectTypeRelationships?: boolean | null;
|
|
593
638
|
/**
|
|
594
639
|
* Enforces relationships between projects based on each project's
|
|
595
640
|
* `layer` setting.
|
|
@@ -604,11 +649,52 @@ export interface PartialConstraintsConfig {
|
|
|
604
649
|
tagRelationships?: Record<Id, Id[]> | null;
|
|
605
650
|
}
|
|
606
651
|
|
|
652
|
+
/**
|
|
653
|
+
* Configures `Dockerfile` generation. When configured at the workspace-level,
|
|
654
|
+
* applies to all projects, but can be overridden at the project-level.
|
|
655
|
+
*/
|
|
656
|
+
export interface PartialDockerFileConfig {
|
|
657
|
+
/**
|
|
658
|
+
* A task identifier within the current project for building the project.
|
|
659
|
+
* If not defined, will skip the build step.
|
|
660
|
+
*/
|
|
661
|
+
buildTask?: Id | null;
|
|
662
|
+
/**
|
|
663
|
+
* The base Docker image to use. If not defined, will use the provided image
|
|
664
|
+
* from the first matching toolchain, otherwise defaults to "scratch".
|
|
665
|
+
*/
|
|
666
|
+
image?: string | null;
|
|
667
|
+
/**
|
|
668
|
+
* Run the `moon docker prune` command after building the
|
|
669
|
+
* project, but before starting it.
|
|
670
|
+
* @since 2.0.0
|
|
671
|
+
*/
|
|
672
|
+
runPrune?: boolean | null;
|
|
673
|
+
/**
|
|
674
|
+
* Run the `moon docker setup` command after scaffolding,
|
|
675
|
+
* but before building the project.
|
|
676
|
+
* @since 2.0.0
|
|
677
|
+
*/
|
|
678
|
+
runSetup?: boolean | null;
|
|
679
|
+
/**
|
|
680
|
+
* A task identifier within the current project for starting the project
|
|
681
|
+
* within the `CMD` instruction. If not defined, will skip the start step
|
|
682
|
+
* and not include the `CMD` instruction.
|
|
683
|
+
*/
|
|
684
|
+
startTask?: Id | null;
|
|
685
|
+
/**
|
|
686
|
+
* A custom template file, relative from the workspace root, to use when
|
|
687
|
+
* rendering the `Dockerfile`. Powered by Tera.
|
|
688
|
+
*/
|
|
689
|
+
template?: string | null;
|
|
690
|
+
}
|
|
691
|
+
|
|
607
692
|
/** Configures aspects of the Docker pruning process. */
|
|
608
693
|
export interface PartialDockerPruneConfig {
|
|
609
694
|
/**
|
|
610
695
|
* Automatically delete vendor directories (package manager
|
|
611
|
-
* dependencies, build targets, etc) while pruning.
|
|
696
|
+
* dependencies, build targets, etc) while pruning. This is
|
|
697
|
+
* handled by each toolchain plugin and not moon directly.
|
|
612
698
|
*
|
|
613
699
|
* @default true
|
|
614
700
|
*/
|
|
@@ -619,27 +705,36 @@ export interface PartialDockerPruneConfig {
|
|
|
619
705
|
*
|
|
620
706
|
* @default true
|
|
621
707
|
*/
|
|
622
|
-
|
|
708
|
+
installToolchainDependencies?: boolean | null;
|
|
623
709
|
}
|
|
624
710
|
|
|
625
|
-
/**
|
|
711
|
+
/**
|
|
712
|
+
* Configures aspects of the Docker scaffolding process.
|
|
713
|
+
* When configured at the workspace-level, applies to all projects,
|
|
714
|
+
* but can be overridden at the project-level.
|
|
715
|
+
*/
|
|
626
716
|
export interface PartialDockerScaffoldConfig {
|
|
627
717
|
/**
|
|
628
|
-
*
|
|
629
|
-
* the
|
|
630
|
-
*
|
|
631
|
-
* @default true
|
|
718
|
+
* List of glob patterns in which to include/exclude files in
|
|
719
|
+
* the "configs" skeleton. Applies to both project and
|
|
720
|
+
* workspace level scaffolding.
|
|
632
721
|
*/
|
|
633
|
-
|
|
722
|
+
configsPhaseGlobs?: string[] | null;
|
|
634
723
|
/**
|
|
635
|
-
* List of glob patterns
|
|
636
|
-
*
|
|
724
|
+
* List of glob patterns in which to include/exclude files in
|
|
725
|
+
* the "sources" skeleton. Applies to both project and
|
|
726
|
+
* workspace level scaffolding.
|
|
637
727
|
*/
|
|
638
|
-
|
|
728
|
+
sourcesPhaseGlobs?: string[] | null;
|
|
639
729
|
}
|
|
640
730
|
|
|
641
731
|
/** Configures our Docker integration. */
|
|
642
732
|
export interface PartialDockerConfig {
|
|
733
|
+
/**
|
|
734
|
+
* Configures aspects of the `Dockerfile` generation process.
|
|
735
|
+
* @since 2.0.0
|
|
736
|
+
*/
|
|
737
|
+
file?: PartialDockerFileConfig | null;
|
|
643
738
|
/** Configures aspects of the Docker pruning process. */
|
|
644
739
|
prune?: PartialDockerPruneConfig | null;
|
|
645
740
|
/** Configures aspects of the Docker scaffolding process. */
|
|
@@ -647,59 +742,7 @@ export interface PartialDockerConfig {
|
|
|
647
742
|
}
|
|
648
743
|
|
|
649
744
|
/** Configures experiments across the entire moon workspace. */
|
|
650
|
-
export interface PartialExperimentsConfig {
|
|
651
|
-
/**
|
|
652
|
-
* @default true
|
|
653
|
-
* @deprecated
|
|
654
|
-
*/
|
|
655
|
-
actionPipelineV2?: boolean | null;
|
|
656
|
-
/**
|
|
657
|
-
* @default true
|
|
658
|
-
* @deprecated
|
|
659
|
-
*/
|
|
660
|
-
disallowRunInCiMismatch?: boolean | null;
|
|
661
|
-
/**
|
|
662
|
-
* Enable faster glob file system walking.
|
|
663
|
-
*
|
|
664
|
-
* @default true
|
|
665
|
-
*/
|
|
666
|
-
fasterGlobWalk?: boolean | null;
|
|
667
|
-
/**
|
|
668
|
-
* Enable a faster and more accurate Git implementation.
|
|
669
|
-
* Supports submodules, subtrees, and worktrees.
|
|
670
|
-
*
|
|
671
|
-
* @default true
|
|
672
|
-
*/
|
|
673
|
-
gitV2?: boolean | null;
|
|
674
|
-
/**
|
|
675
|
-
* @default true
|
|
676
|
-
* @deprecated
|
|
677
|
-
*/
|
|
678
|
-
interweavedTaskInheritance?: boolean | null;
|
|
679
|
-
/**
|
|
680
|
-
* @default true
|
|
681
|
-
* @deprecated
|
|
682
|
-
*/
|
|
683
|
-
strictProjectAliases?: boolean | null;
|
|
684
|
-
/**
|
|
685
|
-
* @default true
|
|
686
|
-
* @deprecated
|
|
687
|
-
*/
|
|
688
|
-
strictProjectIds?: boolean | null;
|
|
689
|
-
/**
|
|
690
|
-
* @default true
|
|
691
|
-
* @deprecated
|
|
692
|
-
*/
|
|
693
|
-
taskOutputBoundaries?: boolean | null;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
/** Configures an individual extension. */
|
|
697
|
-
export interface PartialExtensionConfig {
|
|
698
|
-
/** Arbitrary configuration that'll be passed to the WASM plugin. */
|
|
699
|
-
config?: Record<string, unknown> | null;
|
|
700
|
-
/** Location of the WASM plugin to use. */
|
|
701
|
-
plugin?: PluginLocator | null;
|
|
702
|
-
}
|
|
745
|
+
export interface PartialExperimentsConfig {}
|
|
703
746
|
|
|
704
747
|
/** Configures the generator for scaffolding from templates. */
|
|
705
748
|
export interface PartialGeneratorConfig {
|
|
@@ -712,22 +755,17 @@ export interface PartialGeneratorConfig {
|
|
|
712
755
|
|
|
713
756
|
/** Configures aspects of the content hashing engine. */
|
|
714
757
|
export interface PartialHasherConfig {
|
|
715
|
-
/**
|
|
716
|
-
* The number of files to include in each hash operation.
|
|
717
|
-
*
|
|
718
|
-
* @default 2500
|
|
719
|
-
* @deprecated
|
|
720
|
-
*/
|
|
721
|
-
batchSize?: number | null;
|
|
722
758
|
/**
|
|
723
759
|
* When `warnOnMissingInputs` is enabled, filters missing file
|
|
724
760
|
* paths from logging a warning.
|
|
761
|
+
* @since 1.10.0
|
|
725
762
|
*/
|
|
726
763
|
ignoreMissingPatterns?: string[] | null;
|
|
727
764
|
/**
|
|
728
765
|
* Filters file paths that match a configured glob pattern
|
|
729
766
|
* when a hash is being generated. Patterns are workspace relative,
|
|
730
767
|
* so prefixing with `**` is recommended.
|
|
768
|
+
* @since 1.10.0
|
|
731
769
|
*/
|
|
732
770
|
ignorePatterns?: string[] | null;
|
|
733
771
|
/**
|
|
@@ -754,15 +792,15 @@ export interface PartialHasherConfig {
|
|
|
754
792
|
/** Configures how and where notifications are sent. */
|
|
755
793
|
export interface PartialNotifierConfig {
|
|
756
794
|
/**
|
|
757
|
-
* Display an OS notification for certain pipeline events.
|
|
795
|
+
* Display an OS notification for certain action pipeline events.
|
|
796
|
+
* @since 1.38.0
|
|
758
797
|
*
|
|
759
798
|
* @default 'never'
|
|
760
799
|
*/
|
|
761
800
|
terminalNotifications?: NotifierEventType | null;
|
|
762
801
|
/**
|
|
763
802
|
* Whether webhook requests require acknowledgment (2xx response).
|
|
764
|
-
*
|
|
765
|
-
* @default false
|
|
803
|
+
* @since 1.38.0
|
|
766
804
|
*/
|
|
767
805
|
webhookAcknowledge?: boolean | null;
|
|
768
806
|
/** A secure URL in which to send webhooks to. */
|
|
@@ -771,17 +809,11 @@ export interface PartialNotifierConfig {
|
|
|
771
809
|
|
|
772
810
|
export type PartialPipelineActionSwitch = null | boolean | Id[];
|
|
773
811
|
|
|
774
|
-
/** Configures aspects of the
|
|
812
|
+
/** Configures aspects of the action pipeline. */
|
|
775
813
|
export interface PartialPipelineConfig {
|
|
776
|
-
/**
|
|
777
|
-
* List of target's for tasks without outputs, that should be
|
|
778
|
-
* cached and persisted.
|
|
779
|
-
*
|
|
780
|
-
* @deprecated
|
|
781
|
-
*/
|
|
782
|
-
archivableTargets?: string[] | null;
|
|
783
814
|
/**
|
|
784
815
|
* Automatically clean the cache after every task run.
|
|
816
|
+
* @since 1.24.0
|
|
785
817
|
*
|
|
786
818
|
* @default true
|
|
787
819
|
*/
|
|
@@ -799,12 +831,13 @@ export interface PartialPipelineConfig {
|
|
|
799
831
|
*/
|
|
800
832
|
inheritColorsForPipedTasks?: boolean | null;
|
|
801
833
|
/**
|
|
802
|
-
* Run the `
|
|
803
|
-
*
|
|
834
|
+
* Run the `InstallDependencies` actions for each running task
|
|
835
|
+
* when changes to lockfiles and manifests are detected.
|
|
836
|
+
* @since 1.34.0
|
|
804
837
|
*/
|
|
805
838
|
installDependencies?: PartialPipelineActionSwitch | null;
|
|
806
839
|
/**
|
|
807
|
-
*
|
|
840
|
+
* A threshold in milliseconds in which to force kill running child
|
|
808
841
|
* processes after the pipeline receives an external signal. A value
|
|
809
842
|
* of 0 will not kill the process and let them run to completion.
|
|
810
843
|
*
|
|
@@ -816,6 +849,7 @@ export interface PartialPipelineConfig {
|
|
|
816
849
|
/**
|
|
817
850
|
* When creating `SyncProject` actions, recursively create a `SyncProject`
|
|
818
851
|
* action for each project dependency, and link them as a relationship.
|
|
852
|
+
* @since 1.34.0
|
|
819
853
|
*
|
|
820
854
|
* @default true
|
|
821
855
|
*/
|
|
@@ -823,10 +857,12 @@ export interface PartialPipelineConfig {
|
|
|
823
857
|
/**
|
|
824
858
|
* Run the `SyncProject` actions in the pipeline for each owning project
|
|
825
859
|
* of a running task.
|
|
860
|
+
* @since 1.34.0
|
|
826
861
|
*/
|
|
827
862
|
syncProjects?: PartialPipelineActionSwitch | null;
|
|
828
863
|
/**
|
|
829
864
|
* Run the `SyncWorkspace` action before all actions in the pipeline.
|
|
865
|
+
* @since 1.34.0
|
|
830
866
|
*
|
|
831
867
|
* @default true
|
|
832
868
|
*/
|
|
@@ -836,11 +872,18 @@ export interface PartialPipelineConfig {
|
|
|
836
872
|
/** Configures projects in the workspace, using both globs and explicit source paths. */
|
|
837
873
|
export interface PartialWorkspaceProjectsConfig {
|
|
838
874
|
/**
|
|
839
|
-
*
|
|
840
|
-
*
|
|
875
|
+
* The project identifier format for glob located projects.
|
|
876
|
+
* @since 2.0.0
|
|
877
|
+
*
|
|
878
|
+
* @default 'dir-name'
|
|
879
|
+
*/
|
|
880
|
+
globFormat?: WorkspaceProjectGlobFormat | null;
|
|
881
|
+
/**
|
|
882
|
+
* A list of glob patterns in which to locate project directories.
|
|
883
|
+
* Can be suffixed with a `moon.*` config file to only find distinct projects.
|
|
841
884
|
*/
|
|
842
885
|
globs?: string[] | null;
|
|
843
|
-
/** A
|
|
886
|
+
/** A map of project identifiers to relative file paths to each project directory. */
|
|
844
887
|
sources?: Record<Id, string> | null;
|
|
845
888
|
}
|
|
846
889
|
|
|
@@ -849,123 +892,145 @@ export type PartialWorkspaceProjects =
|
|
|
849
892
|
| string[]
|
|
850
893
|
| Record<Id, string>;
|
|
851
894
|
|
|
852
|
-
/**
|
|
895
|
+
/**
|
|
896
|
+
* Configures basic HTTP authentication.
|
|
897
|
+
* @since 1.32.0
|
|
898
|
+
*/
|
|
853
899
|
export interface PartialRemoteAuthConfig {
|
|
854
|
-
/** HTTP headers to inject into every request. */
|
|
900
|
+
/** A map of HTTP headers to inject into every request. */
|
|
855
901
|
headers?: Record<string, string> | null;
|
|
856
902
|
/**
|
|
857
903
|
* The name of an environment variable to use as a bearer token.
|
|
858
904
|
*
|
|
859
|
-
* @
|
|
905
|
+
* @env MOON_REMOTE_AUTH_TOKEN
|
|
860
906
|
*/
|
|
861
907
|
token?: string | null;
|
|
862
908
|
}
|
|
863
909
|
|
|
864
|
-
/**
|
|
910
|
+
/**
|
|
911
|
+
* Configures the action cache (AC) and content addressable cache (CAS).
|
|
912
|
+
* @since 1.30.0
|
|
913
|
+
*/
|
|
865
914
|
export interface PartialRemoteCacheConfig {
|
|
866
915
|
/**
|
|
867
916
|
* The compression format to use when uploading/downloading blobs.
|
|
917
|
+
* @since 1.31.0
|
|
868
918
|
*
|
|
869
919
|
* @default 'none'
|
|
870
|
-
* @
|
|
920
|
+
* @env MOON_REMOTE_CACHE_COMPRESSION
|
|
871
921
|
*/
|
|
872
922
|
compression?: RemoteCompression | null;
|
|
873
923
|
/**
|
|
874
924
|
* Unique instance name for blobs. Will be used as a folder name.
|
|
875
925
|
*
|
|
876
926
|
* @default 'moon-outputs'
|
|
877
|
-
* @
|
|
927
|
+
* @env MOON_REMOTE_CACHE_INSTANCE_NAME
|
|
878
928
|
*/
|
|
879
929
|
instanceName?: string | null;
|
|
880
930
|
/**
|
|
881
931
|
* When local, only download matching blobs and do not upload new
|
|
882
932
|
* blobs. Blobs will only be uploaded in CI environments.
|
|
933
|
+
* @since 1.40.0
|
|
883
934
|
*
|
|
884
|
-
* @
|
|
935
|
+
* @env MOON_REMOTE_CACHE_LOCAL_READ_ONLY
|
|
885
936
|
*/
|
|
886
937
|
localReadOnly?: boolean | null;
|
|
887
938
|
/**
|
|
888
939
|
* When downloading blobs, verify the digests/hashes in the response
|
|
889
940
|
* match the associated blob contents. This will reduce performance
|
|
890
941
|
* but ensure partial or corrupted blobs won't cause failures.
|
|
942
|
+
* @since 1.36.0
|
|
891
943
|
*
|
|
892
|
-
* @
|
|
944
|
+
* @env MOON_REMOTE_CACHE_VERIFY_INTEGRITY
|
|
893
945
|
*/
|
|
894
946
|
verifyIntegrity?: boolean | null;
|
|
895
947
|
}
|
|
896
948
|
|
|
897
|
-
/**
|
|
949
|
+
/**
|
|
950
|
+
* Configures for both server and client authentication with mTLS.
|
|
951
|
+
* @since 1.30.0
|
|
952
|
+
*/
|
|
898
953
|
export interface PartialRemoteMtlsConfig {
|
|
899
954
|
/**
|
|
900
955
|
* If true, assume that the server supports HTTP/2,
|
|
901
956
|
* even if it doesn't provide protocol negotiation via ALPN.
|
|
902
957
|
*
|
|
903
|
-
* @
|
|
958
|
+
* @env MOON_REMOTE_MTLS_HTTP
|
|
904
959
|
*/
|
|
905
960
|
assumeHttp2?: boolean | null;
|
|
906
961
|
/**
|
|
907
962
|
* A file path, relative from the workspace root, to the
|
|
908
963
|
* certificate authority PEM encoded X509 certificate.
|
|
909
964
|
*
|
|
910
|
-
* @
|
|
965
|
+
* @env MOON_REMOTE_MTLS_CA_CERT
|
|
911
966
|
*/
|
|
912
967
|
caCert?: string | null;
|
|
913
968
|
/**
|
|
914
969
|
* A file path, relative from the workspace root, to the
|
|
915
970
|
* client's PEM encoded X509 certificate.
|
|
916
971
|
*
|
|
917
|
-
* @
|
|
972
|
+
* @env MOON_REMOTE_MTLS_CLIENT_CERT
|
|
918
973
|
*/
|
|
919
974
|
clientCert?: string | null;
|
|
920
975
|
/**
|
|
921
976
|
* A file path, relative from the workspace root, to the
|
|
922
977
|
* client's PEM encoded X509 private key.
|
|
923
978
|
*
|
|
924
|
-
* @
|
|
979
|
+
* @env MOON_REMOTE_MTLS_CLIENT_KEY
|
|
925
980
|
*/
|
|
926
981
|
clientKey?: string | null;
|
|
927
982
|
/**
|
|
928
983
|
* The domain name in which to verify the TLS certificate.
|
|
929
984
|
*
|
|
930
|
-
* @
|
|
985
|
+
* @env MOON_REMOTE_MTLS_DOMAIN
|
|
931
986
|
*/
|
|
932
987
|
domain?: string | null;
|
|
933
988
|
}
|
|
934
989
|
|
|
935
|
-
/**
|
|
990
|
+
/**
|
|
991
|
+
* Configures for server-only authentication with TLS.
|
|
992
|
+
* @since 1.30.0
|
|
993
|
+
*/
|
|
936
994
|
export interface PartialRemoteTlsConfig {
|
|
937
995
|
/**
|
|
938
996
|
* If true, assume that the server supports HTTP/2,
|
|
939
997
|
* even if it doesn't provide protocol negotiation via ALPN.
|
|
940
998
|
*
|
|
941
|
-
* @
|
|
999
|
+
* @env MOON_REMOTE_TLS_HTTP2
|
|
942
1000
|
*/
|
|
943
1001
|
assumeHttp2?: boolean | null;
|
|
944
1002
|
/**
|
|
945
1003
|
* A file path, relative from the workspace root, to the
|
|
946
1004
|
* certificate authority PEM encoded X509 certificate.
|
|
947
1005
|
*
|
|
948
|
-
* @
|
|
1006
|
+
* @env MOON_REMOTE_TLS_CERT
|
|
949
1007
|
*/
|
|
950
1008
|
cert?: string | null;
|
|
951
1009
|
/**
|
|
952
1010
|
* The domain name in which to verify the TLS certificate.
|
|
953
1011
|
*
|
|
954
|
-
* @
|
|
1012
|
+
* @env MOON_REMOTE_TLS_DOMAIN
|
|
955
1013
|
*/
|
|
956
1014
|
domain?: string | null;
|
|
957
1015
|
}
|
|
958
1016
|
|
|
959
|
-
/**
|
|
1017
|
+
/**
|
|
1018
|
+
* Configures the remote service, powered by the Bazel Remote Execution API.
|
|
1019
|
+
* @since 1.30.0
|
|
1020
|
+
*/
|
|
960
1021
|
export interface PartialRemoteConfig {
|
|
961
1022
|
/**
|
|
962
1023
|
* The API format of the remote service.
|
|
1024
|
+
* @since 1.32.0
|
|
963
1025
|
*
|
|
964
1026
|
* @default 'grpc'
|
|
965
|
-
* @
|
|
1027
|
+
* @env MOON_REMOTE_API
|
|
966
1028
|
*/
|
|
967
1029
|
api?: RemoteApi | null;
|
|
968
|
-
/**
|
|
1030
|
+
/**
|
|
1031
|
+
* Connect to the host using basic HTTP authentication.
|
|
1032
|
+
* @since 1.32.0
|
|
1033
|
+
*/
|
|
969
1034
|
auth?: PartialRemoteAuthConfig | null;
|
|
970
1035
|
/** Configures the action cache (AC) and content addressable cache (CAS). */
|
|
971
1036
|
cache?: PartialRemoteCacheConfig | null;
|
|
@@ -973,7 +1038,7 @@ export interface PartialRemoteConfig {
|
|
|
973
1038
|
* The remote host to connect and send requests to.
|
|
974
1039
|
* Supports gRPC protocols.
|
|
975
1040
|
*
|
|
976
|
-
* @
|
|
1041
|
+
* @env MOON_REMOTE_HOST
|
|
977
1042
|
*/
|
|
978
1043
|
host?: string | null;
|
|
979
1044
|
/**
|
|
@@ -987,6 +1052,12 @@ export interface PartialRemoteConfig {
|
|
|
987
1052
|
|
|
988
1053
|
/** Configures the version control system (VCS). */
|
|
989
1054
|
export interface PartialVcsConfig {
|
|
1055
|
+
/**
|
|
1056
|
+
* The VCS client being utilized by the repository.
|
|
1057
|
+
*
|
|
1058
|
+
* @default 'git'
|
|
1059
|
+
*/
|
|
1060
|
+
client?: VcsClient | null;
|
|
990
1061
|
/**
|
|
991
1062
|
* The default branch / base.
|
|
992
1063
|
*
|
|
@@ -995,29 +1066,32 @@ export interface PartialVcsConfig {
|
|
|
995
1066
|
defaultBranch?: string | null;
|
|
996
1067
|
/**
|
|
997
1068
|
* The format to use for generated VCS hook files.
|
|
1069
|
+
* @since 1.29.0
|
|
998
1070
|
*
|
|
999
1071
|
* @default 'native'
|
|
1000
1072
|
*/
|
|
1001
1073
|
hookFormat?: VcsHookFormat | null;
|
|
1002
|
-
/** A mapping of hooks to commands to run when the hook is triggered. */
|
|
1003
|
-
hooks?: Record<string, string[]> | null;
|
|
1004
1074
|
/**
|
|
1005
|
-
*
|
|
1006
|
-
*
|
|
1007
|
-
* @default 'git'
|
|
1075
|
+
* A map of hooks to a list of commands to run when the hook is triggered.
|
|
1076
|
+
* @since 1.9.0
|
|
1008
1077
|
*/
|
|
1009
|
-
|
|
1078
|
+
hooks?: Record<string, string[]> | null;
|
|
1010
1079
|
/**
|
|
1011
1080
|
* The upstream version control provider, where the repository
|
|
1012
1081
|
* source code is stored.
|
|
1082
|
+
* @since 1.8.0
|
|
1013
1083
|
*
|
|
1014
1084
|
* @default 'github'
|
|
1015
1085
|
*/
|
|
1016
1086
|
provider?: VcsProvider | null;
|
|
1017
1087
|
/** List of remote's in which to compare branches against. */
|
|
1018
1088
|
remoteCandidates?: string[] | null;
|
|
1019
|
-
/**
|
|
1020
|
-
|
|
1089
|
+
/**
|
|
1090
|
+
* Automatically generate hooks and scripts during a sync operation,
|
|
1091
|
+
* based on the `hooks` setting.
|
|
1092
|
+
* @since 1.9.0
|
|
1093
|
+
*/
|
|
1094
|
+
sync?: boolean | null;
|
|
1021
1095
|
}
|
|
1022
1096
|
|
|
1023
1097
|
/**
|
|
@@ -1025,23 +1099,37 @@ export interface PartialVcsConfig {
|
|
|
1025
1099
|
* Docs: https://moonrepo.dev/docs/config/workspace
|
|
1026
1100
|
*/
|
|
1027
1101
|
export interface PartialWorkspaceConfig {
|
|
1028
|
-
/** @default '
|
|
1102
|
+
/** @default './cache/schemas/workspace.json' */
|
|
1029
1103
|
$schema?: string | null;
|
|
1030
|
-
/**
|
|
1104
|
+
/**
|
|
1105
|
+
* Configures code ownership rules for generating a `CODEOWNERS` file.
|
|
1106
|
+
* @since 1.8.0
|
|
1107
|
+
*/
|
|
1031
1108
|
codeowners?: PartialCodeownersConfig | null;
|
|
1032
1109
|
/** Configures boundaries and constraints between projects. */
|
|
1033
1110
|
constraints?: PartialConstraintsConfig | null;
|
|
1034
|
-
/**
|
|
1111
|
+
/**
|
|
1112
|
+
* The default/main project within the workspace. When a task is
|
|
1113
|
+
* ran without a project, the default will be used.
|
|
1114
|
+
* @since 2.0.0
|
|
1115
|
+
*/
|
|
1116
|
+
defaultProject?: Id | null;
|
|
1117
|
+
/**
|
|
1118
|
+
* Configures Docker integration for the workspace.
|
|
1119
|
+
* @since 1.27.0
|
|
1120
|
+
*/
|
|
1035
1121
|
docker?: PartialDockerConfig | null;
|
|
1036
|
-
/**
|
|
1122
|
+
/**
|
|
1123
|
+
* Configures experiments across the entire moon workspace.
|
|
1124
|
+
* @since 1.11.0
|
|
1125
|
+
*/
|
|
1037
1126
|
experiments?: PartialExperimentsConfig | null;
|
|
1038
1127
|
/**
|
|
1039
|
-
* Extends one or many workspace configuration file.
|
|
1040
|
-
* file path or a secure URL.
|
|
1128
|
+
* Extends one or many workspace configuration file.
|
|
1129
|
+
* Supports a relative file path or a secure URL.
|
|
1130
|
+
* @since 1.12.0
|
|
1041
1131
|
*/
|
|
1042
1132
|
extends?: ExtendsFrom | null;
|
|
1043
|
-
/** Configures extensions that can be executed with `moon ext`. */
|
|
1044
|
-
extensions?: Record<Id, PartialExtensionConfig> | null;
|
|
1045
1133
|
/** Configures the generator for scaffolding from templates. */
|
|
1046
1134
|
generator?: PartialGeneratorConfig | null;
|
|
1047
1135
|
/** Configures aspects of the content hashing engine. */
|
|
@@ -1049,8 +1137,6 @@ export interface PartialWorkspaceConfig {
|
|
|
1049
1137
|
/** Configures how and where notifications are sent. */
|
|
1050
1138
|
notifier?: PartialNotifierConfig | null;
|
|
1051
1139
|
/** Configures aspects of the action pipeline. */
|
|
1052
|
-
runner?: PartialPipelineConfig | null;
|
|
1053
|
-
/** Configures aspects of the action pipeline. */
|
|
1054
1140
|
pipeline?: PartialPipelineConfig | null;
|
|
1055
1141
|
/**
|
|
1056
1142
|
* Configures all projects within the workspace to create a project graph.
|
|
@@ -1058,15 +1144,19 @@ export interface PartialWorkspaceConfig {
|
|
|
1058
1144
|
* or both values.
|
|
1059
1145
|
*/
|
|
1060
1146
|
projects?: PartialWorkspaceProjects | null;
|
|
1147
|
+
/** Configures aspects of the remote service. */
|
|
1148
|
+
remote?: PartialRemoteConfig | null;
|
|
1061
1149
|
/**
|
|
1062
1150
|
* Collects anonymous usage information, and checks for new moon versions.
|
|
1063
1151
|
*
|
|
1064
1152
|
* @default true
|
|
1153
|
+
* @env MOON_TELEMETRY
|
|
1065
1154
|
*/
|
|
1066
1155
|
telemetry?: boolean | null;
|
|
1067
|
-
/**
|
|
1068
|
-
|
|
1069
|
-
|
|
1156
|
+
/**
|
|
1157
|
+
* Configures the version control system (VCS). Also known as
|
|
1158
|
+
* source code management (SCM).
|
|
1159
|
+
*/
|
|
1070
1160
|
vcs?: PartialVcsConfig | null;
|
|
1071
1161
|
/** Requires a specific version of the `moon` binary. */
|
|
1072
1162
|
versionConstraint?: string | null;
|