balena-cli 20.2.3 → 20.2.4
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/CHANGELOG.md +4 -0
- package/npm-shrinkwrap.json +347 -215
- package/oclif.manifest.json +295 -295
- package/package.json +4 -4
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"commands": {
|
|
3
|
+
"app:create": {
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"args": {
|
|
6
|
+
"name": {
|
|
7
|
+
"description": "app name",
|
|
8
|
+
"name": "name",
|
|
9
|
+
"required": true
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"description": "Create an app.\n\nCreate a new balena app.\n\nYou can specify the organization the app should belong to using\nthe `--organization` option. The organization's handle, not its name,\nshould be provided. Organization handles can be listed with the\n`balena organization list` command.\n\nThe app's default device type is specified with the `--type` option.\nThe `balena device-type list` command can be used to list the available\ndevice types.\n\nInteractive dropdowns will be shown for selection if no device type or\norganization is specified and there are multiple options to choose from.\nIf there is a single option to choose from, it will be chosen automatically.\nThis interactive behavior can be disabled by explicitly specifying a device\ntype and organization.",
|
|
13
|
+
"examples": [
|
|
14
|
+
"$ balena app create MyApp",
|
|
15
|
+
"$ balena app create MyApp --organization mmyorg",
|
|
16
|
+
"$ balena app create MyApp -o myorg --type raspberry-pi"
|
|
17
|
+
],
|
|
18
|
+
"flags": {
|
|
19
|
+
"organization": {
|
|
20
|
+
"char": "o",
|
|
21
|
+
"description": "handle of the organization the app should belong to",
|
|
22
|
+
"name": "organization",
|
|
23
|
+
"hasDynamicHelp": false,
|
|
24
|
+
"multiple": false,
|
|
25
|
+
"type": "option"
|
|
26
|
+
},
|
|
27
|
+
"type": {
|
|
28
|
+
"char": "t",
|
|
29
|
+
"description": "app device type (Check available types with `balena device-type list`)",
|
|
30
|
+
"name": "type",
|
|
31
|
+
"hasDynamicHelp": false,
|
|
32
|
+
"multiple": false,
|
|
33
|
+
"type": "option"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"hasDynamicHelp": false,
|
|
37
|
+
"hiddenAliases": [],
|
|
38
|
+
"id": "app:create",
|
|
39
|
+
"pluginAlias": "balena-cli",
|
|
40
|
+
"pluginName": "balena-cli",
|
|
41
|
+
"pluginType": "core",
|
|
42
|
+
"strict": true,
|
|
43
|
+
"enableJsonFlag": false,
|
|
44
|
+
"authenticated": true,
|
|
45
|
+
"isESM": false,
|
|
46
|
+
"relativePath": [
|
|
47
|
+
"build",
|
|
48
|
+
"commands",
|
|
49
|
+
"app",
|
|
50
|
+
"create.js"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
3
53
|
"api-key:generate": {
|
|
4
54
|
"aliases": [],
|
|
5
55
|
"args": {
|
|
@@ -157,56 +207,6 @@
|
|
|
157
207
|
"create.js"
|
|
158
208
|
]
|
|
159
209
|
},
|
|
160
|
-
"app:create": {
|
|
161
|
-
"aliases": [],
|
|
162
|
-
"args": {
|
|
163
|
-
"name": {
|
|
164
|
-
"description": "app name",
|
|
165
|
-
"name": "name",
|
|
166
|
-
"required": true
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
"description": "Create an app.\n\nCreate a new balena app.\n\nYou can specify the organization the app should belong to using\nthe `--organization` option. The organization's handle, not its name,\nshould be provided. Organization handles can be listed with the\n`balena organization list` command.\n\nThe app's default device type is specified with the `--type` option.\nThe `balena device-type list` command can be used to list the available\ndevice types.\n\nInteractive dropdowns will be shown for selection if no device type or\norganization is specified and there are multiple options to choose from.\nIf there is a single option to choose from, it will be chosen automatically.\nThis interactive behavior can be disabled by explicitly specifying a device\ntype and organization.",
|
|
170
|
-
"examples": [
|
|
171
|
-
"$ balena app create MyApp",
|
|
172
|
-
"$ balena app create MyApp --organization mmyorg",
|
|
173
|
-
"$ balena app create MyApp -o myorg --type raspberry-pi"
|
|
174
|
-
],
|
|
175
|
-
"flags": {
|
|
176
|
-
"organization": {
|
|
177
|
-
"char": "o",
|
|
178
|
-
"description": "handle of the organization the app should belong to",
|
|
179
|
-
"name": "organization",
|
|
180
|
-
"hasDynamicHelp": false,
|
|
181
|
-
"multiple": false,
|
|
182
|
-
"type": "option"
|
|
183
|
-
},
|
|
184
|
-
"type": {
|
|
185
|
-
"char": "t",
|
|
186
|
-
"description": "app device type (Check available types with `balena device-type list`)",
|
|
187
|
-
"name": "type",
|
|
188
|
-
"hasDynamicHelp": false,
|
|
189
|
-
"multiple": false,
|
|
190
|
-
"type": "option"
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
"hasDynamicHelp": false,
|
|
194
|
-
"hiddenAliases": [],
|
|
195
|
-
"id": "app:create",
|
|
196
|
-
"pluginAlias": "balena-cli",
|
|
197
|
-
"pluginName": "balena-cli",
|
|
198
|
-
"pluginType": "core",
|
|
199
|
-
"strict": true,
|
|
200
|
-
"enableJsonFlag": false,
|
|
201
|
-
"authenticated": true,
|
|
202
|
-
"isESM": false,
|
|
203
|
-
"relativePath": [
|
|
204
|
-
"build",
|
|
205
|
-
"commands",
|
|
206
|
-
"app",
|
|
207
|
-
"create.js"
|
|
208
|
-
]
|
|
209
|
-
},
|
|
210
210
|
"build": {
|
|
211
211
|
"aliases": [],
|
|
212
212
|
"args": {
|
|
@@ -223,251 +223,29 @@
|
|
|
223
223
|
"$ balena build --deviceType raspberrypi3 --arch armv7hf --emulated",
|
|
224
224
|
"$ balena build --docker /var/run/docker.sock --fleet myFleet # Linux, Mac",
|
|
225
225
|
"$ balena build --docker //./pipe/docker_engine --fleet myFleet # Windows",
|
|
226
|
-
"$ balena build --dockerHost my.docker.host --dockerPort 2376 --ca ca.pem --key key.pem --cert cert.pem -f myFleet"
|
|
227
|
-
],
|
|
228
|
-
"flags": {
|
|
229
|
-
"arch": {
|
|
230
|
-
"char": "A",
|
|
231
|
-
"description": "the architecture to build for",
|
|
232
|
-
"name": "arch",
|
|
233
|
-
"hasDynamicHelp": false,
|
|
234
|
-
"multiple": false,
|
|
235
|
-
"type": "option"
|
|
236
|
-
},
|
|
237
|
-
"deviceType": {
|
|
238
|
-
"char": "d",
|
|
239
|
-
"description": "the type of device this build is for",
|
|
240
|
-
"name": "deviceType",
|
|
241
|
-
"hasDynamicHelp": false,
|
|
242
|
-
"multiple": false,
|
|
243
|
-
"type": "option"
|
|
244
|
-
},
|
|
245
|
-
"fleet": {
|
|
246
|
-
"char": "f",
|
|
247
|
-
"description": "fleet name or slug (preferred)",
|
|
248
|
-
"name": "fleet",
|
|
249
|
-
"hasDynamicHelp": false,
|
|
250
|
-
"multiple": false,
|
|
251
|
-
"type": "option"
|
|
252
|
-
},
|
|
253
|
-
"emulated": {
|
|
254
|
-
"char": "e",
|
|
255
|
-
"description": "Use QEMU for ARM architecture emulation during the image build",
|
|
256
|
-
"name": "emulated",
|
|
257
|
-
"allowNo": false,
|
|
258
|
-
"type": "boolean"
|
|
259
|
-
},
|
|
260
|
-
"dockerfile": {
|
|
261
|
-
"description": "Alternative Dockerfile name/path, relative to the source folder",
|
|
262
|
-
"name": "dockerfile",
|
|
263
|
-
"hasDynamicHelp": false,
|
|
264
|
-
"multiple": false,
|
|
265
|
-
"type": "option"
|
|
266
|
-
},
|
|
267
|
-
"nologs": {
|
|
268
|
-
"description": "Hide the image build log output (produce less verbose output)",
|
|
269
|
-
"name": "nologs",
|
|
270
|
-
"allowNo": false,
|
|
271
|
-
"type": "boolean"
|
|
272
|
-
},
|
|
273
|
-
"multi-dockerignore": {
|
|
274
|
-
"char": "m",
|
|
275
|
-
"description": "Have each service use its own .dockerignore file. See \"balena help build\".",
|
|
276
|
-
"name": "multi-dockerignore",
|
|
277
|
-
"allowNo": false,
|
|
278
|
-
"type": "boolean"
|
|
279
|
-
},
|
|
280
|
-
"noparent-check": {
|
|
281
|
-
"description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
|
|
282
|
-
"name": "noparent-check",
|
|
283
|
-
"allowNo": false,
|
|
284
|
-
"type": "boolean"
|
|
285
|
-
},
|
|
286
|
-
"registry-secrets": {
|
|
287
|
-
"char": "R",
|
|
288
|
-
"description": "Path to a YAML or JSON file with passwords for a private Docker registry",
|
|
289
|
-
"name": "registry-secrets",
|
|
290
|
-
"hasDynamicHelp": false,
|
|
291
|
-
"multiple": false,
|
|
292
|
-
"type": "option"
|
|
293
|
-
},
|
|
294
|
-
"noconvert-eol": {
|
|
295
|
-
"description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
|
|
296
|
-
"name": "noconvert-eol",
|
|
297
|
-
"allowNo": false,
|
|
298
|
-
"type": "boolean"
|
|
299
|
-
},
|
|
300
|
-
"projectName": {
|
|
301
|
-
"char": "n",
|
|
302
|
-
"description": "Name prefix for locally built images. This is the 'projectName' portion\nin 'projectName_serviceName:tag'. The default is the directory name.",
|
|
303
|
-
"name": "projectName",
|
|
304
|
-
"hasDynamicHelp": false,
|
|
305
|
-
"multiple": false,
|
|
306
|
-
"type": "option"
|
|
307
|
-
},
|
|
308
|
-
"tag": {
|
|
309
|
-
"char": "t",
|
|
310
|
-
"description": "Tag locally built Docker images. This is the 'tag' portion\nin 'projectName_serviceName:tag'. The default is 'latest'.",
|
|
311
|
-
"name": "tag",
|
|
312
|
-
"hasDynamicHelp": false,
|
|
313
|
-
"multiple": false,
|
|
314
|
-
"type": "option"
|
|
315
|
-
},
|
|
316
|
-
"buildArg": {
|
|
317
|
-
"char": "B",
|
|
318
|
-
"description": "[Deprecated] Set a build-time variable (eg. \"-B 'ARG=value'\"). Can be specified multiple times.",
|
|
319
|
-
"name": "buildArg",
|
|
320
|
-
"hasDynamicHelp": false,
|
|
321
|
-
"multiple": true,
|
|
322
|
-
"type": "option"
|
|
323
|
-
},
|
|
324
|
-
"cache-from": {
|
|
325
|
-
"description": "Comma-separated list (no spaces) of image names for build cache resolution. Implements the same feature as the \"docker build --cache-from\" option.",
|
|
326
|
-
"name": "cache-from",
|
|
327
|
-
"hasDynamicHelp": false,
|
|
328
|
-
"multiple": false,
|
|
329
|
-
"type": "option"
|
|
330
|
-
},
|
|
331
|
-
"nocache": {
|
|
332
|
-
"description": "Don't use docker layer caching when building",
|
|
333
|
-
"name": "nocache",
|
|
334
|
-
"allowNo": false,
|
|
335
|
-
"type": "boolean"
|
|
336
|
-
},
|
|
337
|
-
"pull": {
|
|
338
|
-
"description": "Pull the base images again even if they exist locally",
|
|
339
|
-
"name": "pull",
|
|
340
|
-
"allowNo": false,
|
|
341
|
-
"type": "boolean"
|
|
342
|
-
},
|
|
343
|
-
"squash": {
|
|
344
|
-
"description": "Squash newly built layers into a single new layer",
|
|
345
|
-
"name": "squash",
|
|
346
|
-
"allowNo": false,
|
|
347
|
-
"type": "boolean"
|
|
348
|
-
},
|
|
349
|
-
"docker": {
|
|
350
|
-
"char": "P",
|
|
351
|
-
"description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
|
|
352
|
-
"name": "docker",
|
|
353
|
-
"hasDynamicHelp": false,
|
|
354
|
-
"multiple": false,
|
|
355
|
-
"type": "option"
|
|
356
|
-
},
|
|
357
|
-
"dockerHost": {
|
|
358
|
-
"char": "h",
|
|
359
|
-
"description": "Docker daemon hostname or IP address (dev machine or balena device) ",
|
|
360
|
-
"name": "dockerHost",
|
|
361
|
-
"hasDynamicHelp": false,
|
|
362
|
-
"multiple": false,
|
|
363
|
-
"type": "option"
|
|
364
|
-
},
|
|
365
|
-
"dockerPort": {
|
|
366
|
-
"char": "p",
|
|
367
|
-
"description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
|
|
368
|
-
"name": "dockerPort",
|
|
369
|
-
"hasDynamicHelp": false,
|
|
370
|
-
"multiple": false,
|
|
371
|
-
"type": "option"
|
|
372
|
-
},
|
|
373
|
-
"ca": {
|
|
374
|
-
"description": "Docker host TLS certificate authority file",
|
|
375
|
-
"name": "ca",
|
|
376
|
-
"hasDynamicHelp": false,
|
|
377
|
-
"multiple": false,
|
|
378
|
-
"type": "option"
|
|
379
|
-
},
|
|
380
|
-
"cert": {
|
|
381
|
-
"description": "Docker host TLS certificate file",
|
|
382
|
-
"name": "cert",
|
|
383
|
-
"hasDynamicHelp": false,
|
|
384
|
-
"multiple": false,
|
|
385
|
-
"type": "option"
|
|
386
|
-
},
|
|
387
|
-
"key": {
|
|
388
|
-
"description": "Docker host TLS key file",
|
|
389
|
-
"name": "key",
|
|
390
|
-
"hasDynamicHelp": false,
|
|
391
|
-
"multiple": false,
|
|
392
|
-
"type": "option"
|
|
393
|
-
}
|
|
394
|
-
},
|
|
395
|
-
"hasDynamicHelp": false,
|
|
396
|
-
"hiddenAliases": [],
|
|
397
|
-
"id": "build",
|
|
398
|
-
"pluginAlias": "balena-cli",
|
|
399
|
-
"pluginName": "balena-cli",
|
|
400
|
-
"pluginType": "core",
|
|
401
|
-
"strict": true,
|
|
402
|
-
"enableJsonFlag": false,
|
|
403
|
-
"primary": true,
|
|
404
|
-
"isESM": false,
|
|
405
|
-
"relativePath": [
|
|
406
|
-
"build",
|
|
407
|
-
"commands",
|
|
408
|
-
"build",
|
|
409
|
-
"index.js"
|
|
410
|
-
]
|
|
411
|
-
},
|
|
412
|
-
"deploy": {
|
|
413
|
-
"aliases": [],
|
|
414
|
-
"args": {
|
|
415
|
-
"fleet": {
|
|
416
|
-
"description": "fleet name or slug (preferred)",
|
|
417
|
-
"name": "fleet",
|
|
418
|
-
"required": true
|
|
419
|
-
},
|
|
420
|
-
"image": {
|
|
421
|
-
"description": "the image to deploy",
|
|
422
|
-
"name": "image"
|
|
423
|
-
}
|
|
424
|
-
},
|
|
425
|
-
"description": "Deploy a single image or a multicontainer project to a balena fleet.\n\nUsage: `deploy <fleet> ([image] | --build [--source build-dir])`\n\nUse this command to deploy an image or a complete multicontainer project to a\nfleet, optionally building it first. The source images are searched for\n(and optionally built) using the docker daemon in your development machine or\nbalena device. (See also the `balena push` command for the option of building\nthe image in the balenaCloud build servers.)\n\nUnless an image is specified, this command will look into the current directory\n(or the one specified by --source) for a docker-compose.yml file. If one is\nfound, this command will deploy each service defined in the compose file,\nbuilding it first if an image for it doesn't exist. Image names will be looked\nup according to the scheme: `<projectName>_<serviceName>`.\n\nIf a compose file isn't found, the command will look for a Dockerfile[.template]\nfile (or alternative Dockerfile specified with the `-f` option), and if yet\nthat isn't found, it will try to generate one.\n\nTo deploy to a fleet where you are a collaborator, use fleet slug including the\norganization: `balena deploy <organization>/<fleet>`.\n\nREGISTRY SECRETS \nThe --registry-secrets option specifies a JSON or YAML file containing private\nDocker registry usernames and passwords to be used when pulling base images.\nSample registry-secrets YAML file:\n```\n\t'my-registry-server.com:25000':\n\t\tusername: ann\n\t\tpassword: hunter2\n\t'': # Use the empty string to refer to the Docker Hub\n\t\tusername: mike\n\t\tpassword: cze14\n\t'eu.gcr.io': # Google Container Registry\n\t\tusername: '_json_key'\n\t\tpassword: '{escaped contents of the GCR keyfile.json file}'\n```\nFor a sample project using registry secrets with the Google Container Registry,\ncheck: https://github.com/balena-io-examples/sample-gcr-registry-secrets\n\nIf the --registry-secrets option is not specified, and a secrets.yml or\nsecrets.json file exists in the balena directory (usually $HOME/.balena),\nthis file will be used instead.\n\nDOCKERIGNORE AND GITIGNORE FILES \nBy default, the balena CLI will use a single \".dockerignore\" file (if any) at\nthe project root (--source directory) in order to decide which source files to\nexclude from the \"build context\" (tar stream) sent to balenaCloud, Docker\ndaemon or balenaEngine. In a microservices (multicontainer) fleet, the\nsource directory is the directory that contains the \"docker-compose.yml\" file.\n\nThe --multi-dockerignore (-m) option may be used with microservices\n(multicontainer) fleets that define a docker-compose.yml file. When this\noption is used, each service subdirectory (defined by the `build` or\n`build.context` service properties in the docker-compose.yml file) is\nfiltered separately according to a .dockerignore file defined in the service\nsubdirectory. If no .dockerignore file exists in a service subdirectory, then\nonly the default .dockerignore patterns (see below) apply for that service\nsubdirectory.\n\nWhen the --multi-dockerignore (-m) option is used, the .dockerignore file (if\nany) defined at the overall project root will be used to filter files and\nsubdirectories other than service subdirectories. It will not have any effect\non service subdirectories, whether or not a service subdirectory defines its\nown .dockerignore file. Multiple .dockerignore files are not merged or added\ntogether, and cannot override or extend other files. This behavior maximizes\ncompatibility with the standard docker-compose tool, while still allowing a\nroot .dockerignore file (at the overall project root) to filter files and\nfolders that are outside service subdirectories.\n\nbalena CLI v11 also took .gitignore files into account. This behavior was\ndeprecated in CLI v12 and removed in CLI v13. Please use .dockerignore files\ninstead.\n\nDefault .dockerignore patterns \nA few default/hardcoded dockerignore patterns are \"merged\" (in memory) with the\npatterns found in the applicable .dockerignore files, in the following order:\n```\n **/.git\n < user's patterns from the applicable '.dockerignore' file, if any >\n !**/.balena\n !**/.resin\n !**/Dockerfile\n !**/Dockerfile.*\n !**/docker-compose.yml\n```\nThese patterns always apply, whether or not .dockerignore files exist in the\nproject. If necessary, the effect of the `**/.git` pattern may be modified by\nadding exception patterns to the applicable .dockerignore file(s), for example\n`!mysubmodule/.git`. For documentation on pattern format, see:\n- https://docs.docker.com/engine/reference/builder/#dockerignore-file\n- https://www.npmjs.com/package/@balena/dockerignore\n",
|
|
426
|
-
"examples": [
|
|
427
|
-
"$ balena deploy myFleet",
|
|
428
|
-
"$ balena deploy myorg/myfleet --build --source myBuildDir/",
|
|
429
|
-
"$ balena deploy myorg/myfleet --build --source myBuildDir/ --note \"this is the note for this release\"",
|
|
430
|
-
"$ balena deploy myorg/myfleet myRepo/myImage",
|
|
431
|
-
"$ balena deploy myFleet myRepo/myImage --release-tag key1 \"\" key2 \"value2 with spaces\""
|
|
432
|
-
],
|
|
433
|
-
"flags": {
|
|
434
|
-
"source": {
|
|
435
|
-
"char": "s",
|
|
436
|
-
"description": "specify an alternate source directory; default is the working directory",
|
|
437
|
-
"name": "source",
|
|
438
|
-
"hasDynamicHelp": false,
|
|
439
|
-
"multiple": false,
|
|
440
|
-
"type": "option"
|
|
441
|
-
},
|
|
442
|
-
"build": {
|
|
443
|
-
"char": "b",
|
|
444
|
-
"description": "force a rebuild before deploy",
|
|
445
|
-
"name": "build",
|
|
446
|
-
"allowNo": false,
|
|
447
|
-
"type": "boolean"
|
|
448
|
-
},
|
|
449
|
-
"nologupload": {
|
|
450
|
-
"description": "don't upload build logs to the dashboard with image (if building)",
|
|
451
|
-
"name": "nologupload",
|
|
452
|
-
"allowNo": false,
|
|
453
|
-
"type": "boolean"
|
|
454
|
-
},
|
|
455
|
-
"release-tag": {
|
|
456
|
-
"description": "Set release tags if the image deployment is successful. Multiple\narguments may be provided, alternating tag keys and values (see examples).\nHint: Empty values may be specified with \"\" (bash, cmd.exe) or '\"\"' (PowerShell).",
|
|
457
|
-
"name": "release-tag",
|
|
226
|
+
"$ balena build --dockerHost my.docker.host --dockerPort 2376 --ca ca.pem --key key.pem --cert cert.pem -f myFleet"
|
|
227
|
+
],
|
|
228
|
+
"flags": {
|
|
229
|
+
"arch": {
|
|
230
|
+
"char": "A",
|
|
231
|
+
"description": "the architecture to build for",
|
|
232
|
+
"name": "arch",
|
|
458
233
|
"hasDynamicHelp": false,
|
|
459
|
-
"multiple":
|
|
234
|
+
"multiple": false,
|
|
460
235
|
"type": "option"
|
|
461
236
|
},
|
|
462
|
-
"
|
|
463
|
-
"
|
|
464
|
-
"
|
|
465
|
-
"
|
|
466
|
-
"
|
|
237
|
+
"deviceType": {
|
|
238
|
+
"char": "d",
|
|
239
|
+
"description": "the type of device this build is for",
|
|
240
|
+
"name": "deviceType",
|
|
241
|
+
"hasDynamicHelp": false,
|
|
242
|
+
"multiple": false,
|
|
243
|
+
"type": "option"
|
|
467
244
|
},
|
|
468
|
-
"
|
|
469
|
-
"
|
|
470
|
-
"
|
|
245
|
+
"fleet": {
|
|
246
|
+
"char": "f",
|
|
247
|
+
"description": "fleet name or slug (preferred)",
|
|
248
|
+
"name": "fleet",
|
|
471
249
|
"hasDynamicHelp": false,
|
|
472
250
|
"multiple": false,
|
|
473
251
|
"type": "option"
|
|
@@ -616,19 +394,18 @@
|
|
|
616
394
|
},
|
|
617
395
|
"hasDynamicHelp": false,
|
|
618
396
|
"hiddenAliases": [],
|
|
619
|
-
"id": "
|
|
397
|
+
"id": "build",
|
|
620
398
|
"pluginAlias": "balena-cli",
|
|
621
399
|
"pluginName": "balena-cli",
|
|
622
400
|
"pluginType": "core",
|
|
623
401
|
"strict": true,
|
|
624
402
|
"enableJsonFlag": false,
|
|
625
|
-
"authenticated": true,
|
|
626
403
|
"primary": true,
|
|
627
404
|
"isESM": false,
|
|
628
405
|
"relativePath": [
|
|
629
406
|
"build",
|
|
630
407
|
"commands",
|
|
631
|
-
"
|
|
408
|
+
"build",
|
|
632
409
|
"index.js"
|
|
633
410
|
]
|
|
634
411
|
},
|
|
@@ -976,6 +753,229 @@
|
|
|
976
753
|
"write.js"
|
|
977
754
|
]
|
|
978
755
|
},
|
|
756
|
+
"deploy": {
|
|
757
|
+
"aliases": [],
|
|
758
|
+
"args": {
|
|
759
|
+
"fleet": {
|
|
760
|
+
"description": "fleet name or slug (preferred)",
|
|
761
|
+
"name": "fleet",
|
|
762
|
+
"required": true
|
|
763
|
+
},
|
|
764
|
+
"image": {
|
|
765
|
+
"description": "the image to deploy",
|
|
766
|
+
"name": "image"
|
|
767
|
+
}
|
|
768
|
+
},
|
|
769
|
+
"description": "Deploy a single image or a multicontainer project to a balena fleet.\n\nUsage: `deploy <fleet> ([image] | --build [--source build-dir])`\n\nUse this command to deploy an image or a complete multicontainer project to a\nfleet, optionally building it first. The source images are searched for\n(and optionally built) using the docker daemon in your development machine or\nbalena device. (See also the `balena push` command for the option of building\nthe image in the balenaCloud build servers.)\n\nUnless an image is specified, this command will look into the current directory\n(or the one specified by --source) for a docker-compose.yml file. If one is\nfound, this command will deploy each service defined in the compose file,\nbuilding it first if an image for it doesn't exist. Image names will be looked\nup according to the scheme: `<projectName>_<serviceName>`.\n\nIf a compose file isn't found, the command will look for a Dockerfile[.template]\nfile (or alternative Dockerfile specified with the `-f` option), and if yet\nthat isn't found, it will try to generate one.\n\nTo deploy to a fleet where you are a collaborator, use fleet slug including the\norganization: `balena deploy <organization>/<fleet>`.\n\nREGISTRY SECRETS \nThe --registry-secrets option specifies a JSON or YAML file containing private\nDocker registry usernames and passwords to be used when pulling base images.\nSample registry-secrets YAML file:\n```\n\t'my-registry-server.com:25000':\n\t\tusername: ann\n\t\tpassword: hunter2\n\t'': # Use the empty string to refer to the Docker Hub\n\t\tusername: mike\n\t\tpassword: cze14\n\t'eu.gcr.io': # Google Container Registry\n\t\tusername: '_json_key'\n\t\tpassword: '{escaped contents of the GCR keyfile.json file}'\n```\nFor a sample project using registry secrets with the Google Container Registry,\ncheck: https://github.com/balena-io-examples/sample-gcr-registry-secrets\n\nIf the --registry-secrets option is not specified, and a secrets.yml or\nsecrets.json file exists in the balena directory (usually $HOME/.balena),\nthis file will be used instead.\n\nDOCKERIGNORE AND GITIGNORE FILES \nBy default, the balena CLI will use a single \".dockerignore\" file (if any) at\nthe project root (--source directory) in order to decide which source files to\nexclude from the \"build context\" (tar stream) sent to balenaCloud, Docker\ndaemon or balenaEngine. In a microservices (multicontainer) fleet, the\nsource directory is the directory that contains the \"docker-compose.yml\" file.\n\nThe --multi-dockerignore (-m) option may be used with microservices\n(multicontainer) fleets that define a docker-compose.yml file. When this\noption is used, each service subdirectory (defined by the `build` or\n`build.context` service properties in the docker-compose.yml file) is\nfiltered separately according to a .dockerignore file defined in the service\nsubdirectory. If no .dockerignore file exists in a service subdirectory, then\nonly the default .dockerignore patterns (see below) apply for that service\nsubdirectory.\n\nWhen the --multi-dockerignore (-m) option is used, the .dockerignore file (if\nany) defined at the overall project root will be used to filter files and\nsubdirectories other than service subdirectories. It will not have any effect\non service subdirectories, whether or not a service subdirectory defines its\nown .dockerignore file. Multiple .dockerignore files are not merged or added\ntogether, and cannot override or extend other files. This behavior maximizes\ncompatibility with the standard docker-compose tool, while still allowing a\nroot .dockerignore file (at the overall project root) to filter files and\nfolders that are outside service subdirectories.\n\nbalena CLI v11 also took .gitignore files into account. This behavior was\ndeprecated in CLI v12 and removed in CLI v13. Please use .dockerignore files\ninstead.\n\nDefault .dockerignore patterns \nA few default/hardcoded dockerignore patterns are \"merged\" (in memory) with the\npatterns found in the applicable .dockerignore files, in the following order:\n```\n **/.git\n < user's patterns from the applicable '.dockerignore' file, if any >\n !**/.balena\n !**/.resin\n !**/Dockerfile\n !**/Dockerfile.*\n !**/docker-compose.yml\n```\nThese patterns always apply, whether or not .dockerignore files exist in the\nproject. If necessary, the effect of the `**/.git` pattern may be modified by\nadding exception patterns to the applicable .dockerignore file(s), for example\n`!mysubmodule/.git`. For documentation on pattern format, see:\n- https://docs.docker.com/engine/reference/builder/#dockerignore-file\n- https://www.npmjs.com/package/@balena/dockerignore\n",
|
|
770
|
+
"examples": [
|
|
771
|
+
"$ balena deploy myFleet",
|
|
772
|
+
"$ balena deploy myorg/myfleet --build --source myBuildDir/",
|
|
773
|
+
"$ balena deploy myorg/myfleet --build --source myBuildDir/ --note \"this is the note for this release\"",
|
|
774
|
+
"$ balena deploy myorg/myfleet myRepo/myImage",
|
|
775
|
+
"$ balena deploy myFleet myRepo/myImage --release-tag key1 \"\" key2 \"value2 with spaces\""
|
|
776
|
+
],
|
|
777
|
+
"flags": {
|
|
778
|
+
"source": {
|
|
779
|
+
"char": "s",
|
|
780
|
+
"description": "specify an alternate source directory; default is the working directory",
|
|
781
|
+
"name": "source",
|
|
782
|
+
"hasDynamicHelp": false,
|
|
783
|
+
"multiple": false,
|
|
784
|
+
"type": "option"
|
|
785
|
+
},
|
|
786
|
+
"build": {
|
|
787
|
+
"char": "b",
|
|
788
|
+
"description": "force a rebuild before deploy",
|
|
789
|
+
"name": "build",
|
|
790
|
+
"allowNo": false,
|
|
791
|
+
"type": "boolean"
|
|
792
|
+
},
|
|
793
|
+
"nologupload": {
|
|
794
|
+
"description": "don't upload build logs to the dashboard with image (if building)",
|
|
795
|
+
"name": "nologupload",
|
|
796
|
+
"allowNo": false,
|
|
797
|
+
"type": "boolean"
|
|
798
|
+
},
|
|
799
|
+
"release-tag": {
|
|
800
|
+
"description": "Set release tags if the image deployment is successful. Multiple\narguments may be provided, alternating tag keys and values (see examples).\nHint: Empty values may be specified with \"\" (bash, cmd.exe) or '\"\"' (PowerShell).",
|
|
801
|
+
"name": "release-tag",
|
|
802
|
+
"hasDynamicHelp": false,
|
|
803
|
+
"multiple": true,
|
|
804
|
+
"type": "option"
|
|
805
|
+
},
|
|
806
|
+
"draft": {
|
|
807
|
+
"description": "Deploy the release as a draft. Draft releases are ignored\nby the 'track latest' release policy but can be used through release pinning.\nDraft releases can be marked as final through the API. Releases are created\nas final by default unless this option is given.",
|
|
808
|
+
"name": "draft",
|
|
809
|
+
"allowNo": false,
|
|
810
|
+
"type": "boolean"
|
|
811
|
+
},
|
|
812
|
+
"note": {
|
|
813
|
+
"description": "The notes for this release",
|
|
814
|
+
"name": "note",
|
|
815
|
+
"hasDynamicHelp": false,
|
|
816
|
+
"multiple": false,
|
|
817
|
+
"type": "option"
|
|
818
|
+
},
|
|
819
|
+
"emulated": {
|
|
820
|
+
"char": "e",
|
|
821
|
+
"description": "Use QEMU for ARM architecture emulation during the image build",
|
|
822
|
+
"name": "emulated",
|
|
823
|
+
"allowNo": false,
|
|
824
|
+
"type": "boolean"
|
|
825
|
+
},
|
|
826
|
+
"dockerfile": {
|
|
827
|
+
"description": "Alternative Dockerfile name/path, relative to the source folder",
|
|
828
|
+
"name": "dockerfile",
|
|
829
|
+
"hasDynamicHelp": false,
|
|
830
|
+
"multiple": false,
|
|
831
|
+
"type": "option"
|
|
832
|
+
},
|
|
833
|
+
"nologs": {
|
|
834
|
+
"description": "Hide the image build log output (produce less verbose output)",
|
|
835
|
+
"name": "nologs",
|
|
836
|
+
"allowNo": false,
|
|
837
|
+
"type": "boolean"
|
|
838
|
+
},
|
|
839
|
+
"multi-dockerignore": {
|
|
840
|
+
"char": "m",
|
|
841
|
+
"description": "Have each service use its own .dockerignore file. See \"balena help build\".",
|
|
842
|
+
"name": "multi-dockerignore",
|
|
843
|
+
"allowNo": false,
|
|
844
|
+
"type": "boolean"
|
|
845
|
+
},
|
|
846
|
+
"noparent-check": {
|
|
847
|
+
"description": "Disable project validation check of 'docker-compose.yml' file in parent folder",
|
|
848
|
+
"name": "noparent-check",
|
|
849
|
+
"allowNo": false,
|
|
850
|
+
"type": "boolean"
|
|
851
|
+
},
|
|
852
|
+
"registry-secrets": {
|
|
853
|
+
"char": "R",
|
|
854
|
+
"description": "Path to a YAML or JSON file with passwords for a private Docker registry",
|
|
855
|
+
"name": "registry-secrets",
|
|
856
|
+
"hasDynamicHelp": false,
|
|
857
|
+
"multiple": false,
|
|
858
|
+
"type": "option"
|
|
859
|
+
},
|
|
860
|
+
"noconvert-eol": {
|
|
861
|
+
"description": "Don't convert line endings from CRLF (Windows format) to LF (Unix format).",
|
|
862
|
+
"name": "noconvert-eol",
|
|
863
|
+
"allowNo": false,
|
|
864
|
+
"type": "boolean"
|
|
865
|
+
},
|
|
866
|
+
"projectName": {
|
|
867
|
+
"char": "n",
|
|
868
|
+
"description": "Name prefix for locally built images. This is the 'projectName' portion\nin 'projectName_serviceName:tag'. The default is the directory name.",
|
|
869
|
+
"name": "projectName",
|
|
870
|
+
"hasDynamicHelp": false,
|
|
871
|
+
"multiple": false,
|
|
872
|
+
"type": "option"
|
|
873
|
+
},
|
|
874
|
+
"tag": {
|
|
875
|
+
"char": "t",
|
|
876
|
+
"description": "Tag locally built Docker images. This is the 'tag' portion\nin 'projectName_serviceName:tag'. The default is 'latest'.",
|
|
877
|
+
"name": "tag",
|
|
878
|
+
"hasDynamicHelp": false,
|
|
879
|
+
"multiple": false,
|
|
880
|
+
"type": "option"
|
|
881
|
+
},
|
|
882
|
+
"buildArg": {
|
|
883
|
+
"char": "B",
|
|
884
|
+
"description": "[Deprecated] Set a build-time variable (eg. \"-B 'ARG=value'\"). Can be specified multiple times.",
|
|
885
|
+
"name": "buildArg",
|
|
886
|
+
"hasDynamicHelp": false,
|
|
887
|
+
"multiple": true,
|
|
888
|
+
"type": "option"
|
|
889
|
+
},
|
|
890
|
+
"cache-from": {
|
|
891
|
+
"description": "Comma-separated list (no spaces) of image names for build cache resolution. Implements the same feature as the \"docker build --cache-from\" option.",
|
|
892
|
+
"name": "cache-from",
|
|
893
|
+
"hasDynamicHelp": false,
|
|
894
|
+
"multiple": false,
|
|
895
|
+
"type": "option"
|
|
896
|
+
},
|
|
897
|
+
"nocache": {
|
|
898
|
+
"description": "Don't use docker layer caching when building",
|
|
899
|
+
"name": "nocache",
|
|
900
|
+
"allowNo": false,
|
|
901
|
+
"type": "boolean"
|
|
902
|
+
},
|
|
903
|
+
"pull": {
|
|
904
|
+
"description": "Pull the base images again even if they exist locally",
|
|
905
|
+
"name": "pull",
|
|
906
|
+
"allowNo": false,
|
|
907
|
+
"type": "boolean"
|
|
908
|
+
},
|
|
909
|
+
"squash": {
|
|
910
|
+
"description": "Squash newly built layers into a single new layer",
|
|
911
|
+
"name": "squash",
|
|
912
|
+
"allowNo": false,
|
|
913
|
+
"type": "boolean"
|
|
914
|
+
},
|
|
915
|
+
"docker": {
|
|
916
|
+
"char": "P",
|
|
917
|
+
"description": "Path to a local docker socket (e.g. /var/run/docker.sock)",
|
|
918
|
+
"name": "docker",
|
|
919
|
+
"hasDynamicHelp": false,
|
|
920
|
+
"multiple": false,
|
|
921
|
+
"type": "option"
|
|
922
|
+
},
|
|
923
|
+
"dockerHost": {
|
|
924
|
+
"char": "h",
|
|
925
|
+
"description": "Docker daemon hostname or IP address (dev machine or balena device) ",
|
|
926
|
+
"name": "dockerHost",
|
|
927
|
+
"hasDynamicHelp": false,
|
|
928
|
+
"multiple": false,
|
|
929
|
+
"type": "option"
|
|
930
|
+
},
|
|
931
|
+
"dockerPort": {
|
|
932
|
+
"char": "p",
|
|
933
|
+
"description": "Docker daemon TCP port number (hint: 2375 for balena devices)",
|
|
934
|
+
"name": "dockerPort",
|
|
935
|
+
"hasDynamicHelp": false,
|
|
936
|
+
"multiple": false,
|
|
937
|
+
"type": "option"
|
|
938
|
+
},
|
|
939
|
+
"ca": {
|
|
940
|
+
"description": "Docker host TLS certificate authority file",
|
|
941
|
+
"name": "ca",
|
|
942
|
+
"hasDynamicHelp": false,
|
|
943
|
+
"multiple": false,
|
|
944
|
+
"type": "option"
|
|
945
|
+
},
|
|
946
|
+
"cert": {
|
|
947
|
+
"description": "Docker host TLS certificate file",
|
|
948
|
+
"name": "cert",
|
|
949
|
+
"hasDynamicHelp": false,
|
|
950
|
+
"multiple": false,
|
|
951
|
+
"type": "option"
|
|
952
|
+
},
|
|
953
|
+
"key": {
|
|
954
|
+
"description": "Docker host TLS key file",
|
|
955
|
+
"name": "key",
|
|
956
|
+
"hasDynamicHelp": false,
|
|
957
|
+
"multiple": false,
|
|
958
|
+
"type": "option"
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"hasDynamicHelp": false,
|
|
962
|
+
"hiddenAliases": [],
|
|
963
|
+
"id": "deploy",
|
|
964
|
+
"pluginAlias": "balena-cli",
|
|
965
|
+
"pluginName": "balena-cli",
|
|
966
|
+
"pluginType": "core",
|
|
967
|
+
"strict": true,
|
|
968
|
+
"enableJsonFlag": false,
|
|
969
|
+
"authenticated": true,
|
|
970
|
+
"primary": true,
|
|
971
|
+
"isESM": false,
|
|
972
|
+
"relativePath": [
|
|
973
|
+
"build",
|
|
974
|
+
"commands",
|
|
975
|
+
"deploy",
|
|
976
|
+
"index.js"
|
|
977
|
+
]
|
|
978
|
+
},
|
|
979
979
|
"device-type:list": {
|
|
980
980
|
"aliases": [
|
|
981
981
|
"devices supported"
|
|
@@ -4710,5 +4710,5 @@
|
|
|
4710
4710
|
]
|
|
4711
4711
|
}
|
|
4712
4712
|
},
|
|
4713
|
-
"version": "20.2.
|
|
4713
|
+
"version": "20.2.4"
|
|
4714
4714
|
}
|