-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
task.json
376 lines (376 loc) · 16 KB
/
task.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
{
"id": "E28912F1-0114-4464-802A-A3A35437FD16",
"name": "Docker",
"friendlyName": "Docker",
"description": "Build, tag, push, or run Docker images, or run a Docker command. Task can be used with Docker or Azure Container registry.",
"helpMarkDown": "[More Information](https://go.microsoft.com/fwlink/?linkid=848006)",
"category": "Build",
"visibility": [
"Build",
"Release"
],
"author": "Microsoft Corporation",
"version": {
"Major": 1,
"Minor": 1,
"Patch": 18
},
"demands": [],
"releaseNotes": "Simplified the task by:<br/> - Providing an option to simply select or type a command.<br/> - Retaining the useful input fields and providing an option to pass the rest as an argument to the command.",
"groups": [
{
"name": "containerRegistry",
"displayName": "Container Registry",
"isExpanded": true,
"visibleRule": "command != logout"
},
{
"name": "commands",
"displayName": "Commands",
"isExpanded": true
},
{
"name": "advanced",
"displayName": "Advanced Options",
"isExpanded": false,
"visibleRule": "command != login && command != logout"
}
],
"inputs": [
{
"name": "containerregistrytype",
"type": "pickList",
"label": "Container registry type",
"defaultValue": "Azure Container Registry",
"required": true,
"options": {
"Azure Container Registry": "Azure Container Registry",
"Container Registry": "Container Registry"
},
"groupName": "containerRegistry",
"helpMarkDown": "Select 'Azure Container Registry' to connect to it by using an Azure Service Connection. Select 'Container registry' to connect to Docker Hub or any other private container registry."
},
{
"name": "dockerRegistryEndpoint",
"type": "connectedService:dockerregistry",
"label": "Docker registry service connection",
"helpMarkDown": "Select a Docker registry service connection. Required for commands that need to authenticate with a registry.",
"groupName": "containerRegistry",
"visibleRule": "containerregistrytype = Container Registry"
},
{
"name": "azureSubscriptionEndpoint",
"type": "connectedService:AzureRM",
"label": "Azure subscription",
"helpMarkDown": "Select an Azure subscription",
"groupName": "containerRegistry",
"visibleRule": "containerregistrytype = Azure Container Registry"
},
{
"name": "azureContainerRegistry",
"label": "Azure container registry",
"type": "pickList",
"helpMarkDown": "Select an Azure Container Registry in the selected Azure Subscription. The container image will be built and pushed to this container registry.",
"visibleRule": "containerregistrytype = Azure Container Registry",
"defaultValue": "",
"groupName": "containerRegistry",
"properties": {
"EditableOptions": "True"
}
},
{
"name": "command",
"type": "pickList",
"label": "Command",
"defaultValue": "Build an image",
"required": true,
"options": {
"Build an image": "build",
"Tag image": "tag",
"Push an image": "push",
"Run an image": "run",
"login": "login",
"logout": "logout"
},
"properties": {
"EditableOptions": "True"
},
"groupName": "commands",
"helpMarkDown": "Select a Docker command."
},
{
"name": "dockerFile",
"type": "filePath",
"label": "Dockerfile",
"defaultValue": "**/Dockerfile",
"required": true,
"visibleRule": "command = Build an image || command = build",
"groupName": "commands",
"helpMarkDown": "Path to the Dockerfile."
},
{
"name": "arguments",
"type": "multiLine",
"properties": {
"resizable": "true",
"rows": "2"
},
"visibleRule": "command != Run an image && command != run && command != login && command != logout",
"label": "Arguments",
"groupName": "commands",
"helpMarkDown": "Docker command options. In case of 'tag' command, you can specify additional tags for Docker image here."
},
{
"name": "useDefaultContext",
"type": "boolean",
"label": "Use default build context",
"defaultValue": "true",
"visibleRule": "command = Build an image || command = build",
"groupName": "commands",
"helpMarkDown": "Set the build context to the directory that contains the Dockerfile."
},
{
"name": "buildContext",
"type": "filePath",
"label": "Build context",
"visibleRule": "useDefaultContext = false",
"groupName": "commands",
"helpMarkDown": "Path to the build context."
},
{
"name": "pushMultipleImages",
"type": "boolean",
"label": "Push multiple images",
"defaultValue": "false",
"visibleRule": "command = Push an image || command = push",
"groupName": "commands",
"helpMarkDown": "Push multiple images by using a text file that contains the names of the Docker images to push. Each image name is contained on its own line.<br>For example:<br> Imagename1:tag1<br> Imagename2:tag2<br> Imagename3<br>In case only image name is provided, all tags of the ImageName3 container image will be pushed."
},
{
"name": "tagMultipleImages",
"type": "boolean",
"label": "Tag multiple images",
"defaultValue": "false",
"visibleRule": "command = Tag image || command = tag",
"groupName": "commands",
"helpMarkDown": "Tag multiple images by using a text file that contains the names of the Docker images to tag. Each image name is contained on its own line.<br>For example:<br> Imagename1:tag1<br> Imagename2:tag2<br> Imagename3<br>In case only image name is provided, that image will be tagged as 'latest'."
},
{
"name": "imageName",
"type": "string",
"label": "Image name",
"defaultValue": "$(Build.Repository.Name):$(Build.BuildId)",
"required": true,
"visibleRule": "command = Build an image || command = build || command = Run an image || command = run || pushMultipleImages = false || tagMultipleImages = false",
"groupName": "commands",
"helpMarkDown": "Name of the Docker image to build, push, or run."
},
{
"name": "imageNamesPath",
"type": "filePath",
"label": "Image names path",
"required": true,
"visibleRule": "tagMultipleImages = true || pushMultipleImages = true",
"groupName": "commands",
"helpMarkDown": "Path to a text file that contains the names of the Docker images to tag or push. Each image name is contained on its own line."
},
{
"name": "qualifyImageName",
"type": "boolean",
"label": "Qualify image name",
"defaultValue": "true",
"visibleRule": "command = Build an image || command = build || command = Tag image || command = tag || command = Push an image || command = push || command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Qualify the image name with the Docker registry service connection's hostname if not otherwise specified."
},
{
"name": "includeSourceTags",
"type": "boolean",
"label": "Include source tags",
"defaultValue": "false",
"visibleRule": "command = Build an image || command = build || command = Tag image || command = tag || command = Push an image || command = push",
"groupName": "commands",
"helpMarkDown": "Include Git tags when building or pushing the Docker image."
},
{
"name": "includeLatestTag",
"type": "boolean",
"label": "Include latest tag",
"defaultValue": "false",
"visibleRule": "command = Build an image || command = build",
"groupName": "commands",
"helpMarkDown": "Include the 'latest' tag when building the Docker image."
},
{
"name": "addDefaultLabels",
"type": "boolean",
"label": "Add default labels",
"defaultValue": "true",
"visibleRule": "command = Build an image || command = build",
"groupName": "commands",
"helpMarkDown": "Add CI/CD metadata like repository, commit, build and release information to the container image by using Docker labels."
},
{
"name": "imageDigestFile",
"type": "filePath",
"label": "Image digest file",
"visibleRule": "command = Push an image || command = push",
"groupName": "commands",
"helpMarkDown": "Path to a file that is created and populated with the full image repository digest of the Docker image that was pushed."
},
{
"name": "containerName",
"type": "string",
"label": "Container name",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Name of the Docker container to run."
},
{
"name": "ports",
"type": "multiLine",
"properties": {
"resizable": "true",
"rows": "2"
},
"label": "Ports",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Ports in the Docker container to publish to the host. Specify each host-port:container-port binding on a new line."
},
{
"name": "volumes",
"type": "multiLine",
"properties": {
"resizable": "true",
"rows": "2"
},
"label": "Volumes",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Volumes to mount from the host. Specify each host-dir:container-dir on a new line."
},
{
"name": "envVars",
"type": "multiLine",
"properties": {
"resizable": "true",
"rows": "2"
},
"label": "Environment variables",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Environment variables for the Docker container. Specify each name=value pair on a new line."
},
{
"name": "workingDirectory",
"type": "string",
"label": "Working directory",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "The working directory for the Docker container."
},
{
"name": "entrypointOverride",
"type": "string",
"label": "Entry point override",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Override the default entry point for the Docker container."
},
{
"name": "containerCommand",
"type": "string",
"label": "Command",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "The docker run command first creates a writeable container layer over the specified image, and then starts it by using the specified run command. For example, if the image contains a simple Python Flask web application you can specify 'python app.py' to launch the web application."
},
{
"name": "runInBackground",
"type": "boolean",
"label": "Run in background",
"defaultValue": "true",
"visibleRule": "command = Run an image || command = run",
"groupName": "commands",
"helpMarkDown": "Run the Docker container in the background."
},
{
"name": "restartPolicy",
"type": "pickList",
"label": "Restart policy",
"defaultValue": "no",
"required": true,
"options": {
"no": "No",
"onFailure": "On failure",
"always": "Always",
"unlessStopped": "Unless stopped"
},
"visibleRule": "runInBackground = true",
"groupName": "commands",
"helpMarkDown": "Select a restart policy."
},
{
"name": "maxRestartRetries",
"type": "string",
"label": "Maximum restart retries",
"visibleRule": "runInBackground = true && restartPolicy = onFailure",
"groupName": "commands",
"helpMarkDown": "The maximum number of restart retries the Docker daemon attempts."
},
{
"name": "dockerHostEndpoint",
"type": "connectedService:dockerhost",
"label": "Docker host service connection",
"helpMarkDown": "Select a Docker host service connection. Defaults to the agent's host.",
"groupName": "advanced"
},
{
"name": "enforceDockerNamingConvention",
"type": "boolean",
"label": "Force image name to follow Docker naming convention",
"required": false,
"defaultValue": "true",
"helpMarkDown": "If enabled Docker image name will be modified to follow Docker naming convention. Converts upper case character to lower case and removes spaces in image name.",
"groupName": "advanced"
},
{
"name": "memoryLimit",
"type": "string",
"label": "Memory limit",
"helpMarkDown": "The maximum amount of memory available to the container as a integer with optional suffixes like '2GB'.",
"groupName": "advanced"
}
],
"dataSourceBindings": [
{
"target": "azureContainerRegistry",
"endpointId": "$(azureSubscriptionEndpoint)",
"dataSourceName": "AzureRMContainerRegistries",
"resultTemplate": "{\"Value\":\"{{{properties.loginServer}}}\",\"DisplayValue\":\"{{{name}}}\"}"
}
],
"outputVariables": [
{
"name": "DockerOutput",
"description": "Stores the output of the docker command"
}
],
"instanceNameFormat": "$(command)",
"execution": {
"Node": {
"target": "container.js"
}
},
"messages": {
"ContainerPatternFound": "Pattern found in Docker filepath parameter",
"ContainerPatternNotFound": "No pattern found in Docker filepath parameter",
"ContainerDockerFileNotFound": "No Dockerfile matching %s was found.",
"NoImagesInImageNamesFile": "At least one image name is expected in file '%s'.",
"CantWriteDataToFile": "Can not write data to the file %s. Error: %s",
"NoDataWrittenOnFile": "No data was written into the file %s",
"FileContentSynced": "Synced the file content to the disk. The content is %s.",
"DockerRegistryNotFound": "Docker registry service connection not specified."
}
}