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