@jcoreio/aws-ecr-utils 2.3.0 → 2.4.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/ECRDeployer.d.mts +19 -7
- package/ECRDeployer.d.mts.map +1 -1
- package/ECRDeployer.d.ts +19 -7
- package/ECRDeployer.d.ts.map +1 -1
- package/ECRDeployer.js +173 -96
- package/ECRDeployer.js.map +1 -1
- package/ECRDeployer.mjs +30 -9
- package/ECRDeployer.mjs.map +1 -1
- package/package.json +1 -1
- package/src/ECRDeployer.ts +52 -9
package/ECRDeployer.d.mts
CHANGED
|
@@ -10,6 +10,18 @@ export interface ECRDeployerOptions {
|
|
|
10
10
|
* The name of the ECR repository
|
|
11
11
|
*/
|
|
12
12
|
repositoryName: string;
|
|
13
|
+
/**
|
|
14
|
+
* Options for {@link ECRDeployer#build}. If a custom function is given,
|
|
15
|
+
* it will be called instead of running `docker build`.
|
|
16
|
+
*/
|
|
17
|
+
build?: (BuildOptions & {
|
|
18
|
+
args?: string[];
|
|
19
|
+
}) | ((options: {
|
|
20
|
+
/**
|
|
21
|
+
* The tag to apply to the local docker image
|
|
22
|
+
*/
|
|
23
|
+
tag: string;
|
|
24
|
+
}) => Promise<void>);
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
27
|
* Options for {@link ECRDeployer#build}
|
|
@@ -27,13 +39,11 @@ export interface BuildOptions {
|
|
|
27
39
|
/**
|
|
28
40
|
* Class that implements our conventional process for deploying docker images to ECR.
|
|
29
41
|
*
|
|
30
|
-
* The CI build step should build the docker image
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* By default {@link build} assumes that your `Dockerfile` takes an `NPM_TOKEN` arg,
|
|
36
|
-
* if not you can call `build({ noNpmTokenArg: true })`.
|
|
42
|
+
* The CI build step should build and push the docker image if necessary; you can use
|
|
43
|
+
* {@link buildAndPushIfNecessary}. If you need to customize the build you can pass
|
|
44
|
+
* options or even a custom function in {@link ECRDeployerOptions.build}, or you can
|
|
45
|
+
* even call {@link isPushed}, {@link build}, {@link push}, and {@link getNpmToken}
|
|
46
|
+
* yourself.
|
|
37
47
|
*
|
|
38
48
|
* The CI release step should call {@link release} to add tags for the git branch and
|
|
39
49
|
* the `version` in your `package.json`.
|
|
@@ -53,6 +63,8 @@ export declare class ECRDeployer {
|
|
|
53
63
|
getLocalDockerTag(): Promise<string>;
|
|
54
64
|
build(options?: BuildOptions): Promise<void>;
|
|
55
65
|
build(args: string[], options?: BuildOptions): Promise<void>;
|
|
66
|
+
isPushed(): Promise<boolean>;
|
|
67
|
+
buildAndPushIfNecessary(): Promise<void>;
|
|
56
68
|
getDockerTags(): Promise<{
|
|
57
69
|
latest: string;
|
|
58
70
|
branch: string;
|
package/ECRDeployer.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECRDeployer.d.mts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","BuildOptions","
|
|
1
|
+
{"version":3,"file":"ECRDeployer.d.mts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","build","BuildOptions","args","options","tag","Promise","path","noNpmTokenArg","ECRDeployer","getBranch","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","getLocalDockerTag","isPushed","buildAndPushIfNecessary","getDockerTags","latest","branch","commitHash","version","push","release","getNpmToken","env","NodeJS","ProcessEnv"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,eAAe,QAEV,qBAAqB;AAU5B,OAAM,UAAWC,kBAAkB;EACjCC,SAAS,CAAC,EAAEF,eAAe;EAC3B;;;;EAIAG,eAAe,CAAC,EAAE,MAAM,EAAE;EAC1B;;;EAGAC,cAAc,EAAE,MAAM;EACtB;;;;EAIAC,KAAK,CAAC,EACF,CAACC,YAAY,GAAG;IAAEC,IAAI,CAAC,EAAE,MAAM,EAAE;GAAE,CAAC,GACpC,CAAC,CAACC,OAAO,EAAE;IACT;;;IAGAC,GAAG,EAAE,MAAM;GACZ,KAAKC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAG1B;;;AAGA,OAAM,UAAWJ,YAAY;EAC3B;;;EAGAK,IAAI,CAAC,EAAE,MAAM;EACb;;;EAGAC,aAAa,CAAC,EAAE,OAAO;;AAGzB;;;;;;;;;;;;;;;AAeA,qBAAaC,WAAW;EACtBL,OAAO,EAAEP,kBAAkB;cAEfO,OAAO,EAAEP,kBAAkB;EAIjCa,SAASA,CAAA,GAAAJ,OAAA;EAWTK,aAAaA,CAAA,GAAAL,OAAA;EAMnB,QAAQM,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,iBAAiBA,CAAA,GAAAV,OAAA;EAIjBL,KAAKA,CAACG,OAAsB,CAAd,EAAEF,YAAY,GAAGI,OAAO,CAAC,IAAI,CAAC;EAC5CL,KAAKA,CAACE,IAAI,EAAE,MAAM,EAAE,EAAEC,OAAsB,CAAd,EAAEF,YAAY,GAAGI,OAAO,CAAC,IAAI,CAAC;EA4C5DW,QAAQA,CAAA,GAAAX,OAAA;EAaRY,uBAAuBA,CAAA,GAAAZ,OAAA;EAMvBa,aAAaA,CAAA,GAAIb,OAAO,CAAC;IAC7Bc,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAlB,OAAA;EAuBJmB,OAAOA,CAAA,GAAAnB,OAAA;EAuDPoB,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAvB,OAAA","ignoreList":[]}
|
package/ECRDeployer.d.ts
CHANGED
|
@@ -10,6 +10,18 @@ export interface ECRDeployerOptions {
|
|
|
10
10
|
* The name of the ECR repository
|
|
11
11
|
*/
|
|
12
12
|
repositoryName: string;
|
|
13
|
+
/**
|
|
14
|
+
* Options for {@link ECRDeployer#build}. If a custom function is given,
|
|
15
|
+
* it will be called instead of running `docker build`.
|
|
16
|
+
*/
|
|
17
|
+
build?: (BuildOptions & {
|
|
18
|
+
args?: string[];
|
|
19
|
+
}) | ((options: {
|
|
20
|
+
/**
|
|
21
|
+
* The tag to apply to the local docker image
|
|
22
|
+
*/
|
|
23
|
+
tag: string;
|
|
24
|
+
}) => Promise<void>);
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
27
|
* Options for {@link ECRDeployer#build}
|
|
@@ -27,13 +39,11 @@ export interface BuildOptions {
|
|
|
27
39
|
/**
|
|
28
40
|
* Class that implements our conventional process for deploying docker images to ECR.
|
|
29
41
|
*
|
|
30
|
-
* The CI build step should build the docker image
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* By default {@link build} assumes that your `Dockerfile` takes an `NPM_TOKEN` arg,
|
|
36
|
-
* if not you can call `build({ noNpmTokenArg: true })`.
|
|
42
|
+
* The CI build step should build and push the docker image if necessary; you can use
|
|
43
|
+
* {@link buildAndPushIfNecessary}. If you need to customize the build you can pass
|
|
44
|
+
* options or even a custom function in {@link ECRDeployerOptions.build}, or you can
|
|
45
|
+
* even call {@link isPushed}, {@link build}, {@link push}, and {@link getNpmToken}
|
|
46
|
+
* yourself.
|
|
37
47
|
*
|
|
38
48
|
* The CI release step should call {@link release} to add tags for the git branch and
|
|
39
49
|
* the `version` in your `package.json`.
|
|
@@ -53,6 +63,8 @@ export declare class ECRDeployer {
|
|
|
53
63
|
getLocalDockerTag(): Promise<string>;
|
|
54
64
|
build(options?: BuildOptions): Promise<void>;
|
|
55
65
|
build(args: string[], options?: BuildOptions): Promise<void>;
|
|
66
|
+
isPushed(): Promise<boolean>;
|
|
67
|
+
buildAndPushIfNecessary(): Promise<void>;
|
|
56
68
|
getDockerTags(): Promise<{
|
|
57
69
|
latest: string;
|
|
58
70
|
branch: string;
|
package/ECRDeployer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECRDeployer.d.ts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","BuildOptions","
|
|
1
|
+
{"version":3,"file":"ECRDeployer.d.ts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","build","BuildOptions","args","options","tag","Promise","path","noNpmTokenArg","ECRDeployer","getBranch","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","getLocalDockerTag","isPushed","buildAndPushIfNecessary","getDockerTags","latest","branch","commitHash","version","push","release","getNpmToken","env","NodeJS","ProcessEnv"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,eAAe,QAEV,qBAAqB;AAU5B,OAAM,UAAWC,kBAAkB;EACjCC,SAAS,CAAC,EAAEF,eAAe;EAC3B;;;;EAIAG,eAAe,CAAC,EAAE,MAAM,EAAE;EAC1B;;;EAGAC,cAAc,EAAE,MAAM;EACtB;;;;EAIAC,KAAK,CAAC,EACF,CAACC,YAAY,GAAG;IAAEC,IAAI,CAAC,EAAE,MAAM,EAAE;GAAE,CAAC,GACpC,CAAC,CAACC,OAAO,EAAE;IACT;;;IAGAC,GAAG,EAAE,MAAM;GACZ,KAAKC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAG1B;;;AAGA,OAAM,UAAWJ,YAAY;EAC3B;;;EAGAK,IAAI,CAAC,EAAE,MAAM;EACb;;;EAGAC,aAAa,CAAC,EAAE,OAAO;;AAGzB;;;;;;;;;;;;;;;AAeA,qBAAaC,WAAW;EACtBL,OAAO,EAAEP,kBAAkB;cAEfO,OAAO,EAAEP,kBAAkB;EAIjCa,SAASA,CAAA,GAAAJ,OAAA;EAWTK,aAAaA,CAAA,GAAAL,OAAA;EAMnB,QAAQM,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,iBAAiBA,CAAA,GAAAV,OAAA;EAIjBL,KAAKA,CAACG,OAAsB,CAAd,EAAEF,YAAY,GAAGI,OAAO,CAAC,IAAI,CAAC;EAC5CL,KAAKA,CAACE,IAAI,EAAE,MAAM,EAAE,EAAEC,OAAsB,CAAd,EAAEF,YAAY,GAAGI,OAAO,CAAC,IAAI,CAAC;EA4C5DW,QAAQA,CAAA,GAAAX,OAAA;EAaRY,uBAAuBA,CAAA,GAAAZ,OAAA;EAMvBa,aAAaA,CAAA,GAAIb,OAAO,CAAC;IAC7Bc,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAlB,OAAA;EAuBJmB,OAAOA,CAAA,GAAAnB,OAAA;EAuDPoB,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAvB,OAAA","ignoreList":[]}
|
package/ECRDeployer.js
CHANGED
|
@@ -20,19 +20,18 @@ var _clientSts = require("@aws-sdk/client-sts");
|
|
|
20
20
|
var _once = require("./once.js");
|
|
21
21
|
var _loginToECR = _interopRequireDefault(require("./loginToECR.js"));
|
|
22
22
|
var _os = _interopRequireDefault(require("os"));
|
|
23
|
+
var _ecrImageExists = _interopRequireDefault(require("./ecrImageExists.js"));
|
|
23
24
|
/**
|
|
24
25
|
* Options for {@link ECRDeployer#build}
|
|
25
26
|
*/
|
|
26
27
|
/**
|
|
27
28
|
* Class that implements our conventional process for deploying docker images to ECR.
|
|
28
29
|
*
|
|
29
|
-
* The CI build step should build the docker image
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* By default {@link build} assumes that your `Dockerfile` takes an `NPM_TOKEN` arg,
|
|
35
|
-
* if not you can call `build({ noNpmTokenArg: true })`.
|
|
30
|
+
* The CI build step should build and push the docker image if necessary; you can use
|
|
31
|
+
* {@link buildAndPushIfNecessary}. If you need to customize the build you can pass
|
|
32
|
+
* options or even a custom function in {@link ECRDeployerOptions.build}, or you can
|
|
33
|
+
* even call {@link isPushed}, {@link build}, {@link push}, and {@link getNpmToken}
|
|
34
|
+
* yourself.
|
|
36
35
|
*
|
|
37
36
|
* The CI release step should call {@link release} to add tags for the git branch and
|
|
38
37
|
* the `version` in your `package.json`.
|
|
@@ -296,8 +295,8 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
296
295
|
key: "build",
|
|
297
296
|
value: function () {
|
|
298
297
|
var _build = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9(args, options) {
|
|
299
|
-
var _options, _options$path, _options2;
|
|
300
|
-
var _yield$Promise$all, _yield$Promise$all2, npmToken, tag, _t9, _t0, _t1, _t10, _t11, _t12;
|
|
298
|
+
var _options$noNpmTokenAr, _options, _ref3, _options$path, _options2;
|
|
299
|
+
var buildOptions, _yield$Promise$all, _yield$Promise$all2, npmToken, tag, _t9, _t0, _t1, _t10, _t11, _t12;
|
|
301
300
|
return _regenerator["default"].wrap(function (_context9) {
|
|
302
301
|
while (1) switch (_context9.prev = _context9.next) {
|
|
303
302
|
case 0:
|
|
@@ -305,36 +304,48 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
305
304
|
options = args;
|
|
306
305
|
args = [];
|
|
307
306
|
}
|
|
307
|
+
buildOptions = this.options.build;
|
|
308
308
|
_context9.next = 1;
|
|
309
|
-
return Promise.all([(_options = options) !== null && _options !== void 0
|
|
309
|
+
return Promise.all([((_options$noNpmTokenAr = (_options = options) === null || _options === void 0 ? void 0 : _options.noNpmTokenArg) !== null && _options$noNpmTokenAr !== void 0 ? _options$noNpmTokenAr : typeof buildOptions === 'function' ? undefined : buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.noNpmTokenArg) ? undefined : this.getNpmToken(), this.getLocalDockerTag()]);
|
|
310
310
|
case 1:
|
|
311
311
|
_yield$Promise$all = _context9.sent;
|
|
312
312
|
_yield$Promise$all2 = (0, _slicedToArray2["default"])(_yield$Promise$all, 2);
|
|
313
313
|
npmToken = _yield$Promise$all2[0];
|
|
314
314
|
tag = _yield$Promise$all2[1];
|
|
315
|
+
if (!(typeof buildOptions === 'function')) {
|
|
316
|
+
_context9.next = 3;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
_context9.next = 2;
|
|
320
|
+
return buildOptions({
|
|
321
|
+
tag: tag
|
|
322
|
+
});
|
|
323
|
+
case 2:
|
|
324
|
+
return _context9.abrupt("return");
|
|
325
|
+
case 3:
|
|
315
326
|
_t9 = _promisifyChildProcess.spawn;
|
|
316
|
-
_t0 = ['build', (_options$path = (_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.path) !== null && _options$path !== void 0 ? _options$path : '.'];
|
|
327
|
+
_t0 = ['build', (_ref3 = (_options$path = (_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.path) !== null && _options$path !== void 0 ? _options$path : buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.path) !== null && _ref3 !== void 0 ? _ref3 : '.'];
|
|
317
328
|
_t1 = _toConsumableArray2["default"];
|
|
318
329
|
if (!npmToken) {
|
|
319
|
-
_context9.next =
|
|
330
|
+
_context9.next = 5;
|
|
320
331
|
break;
|
|
321
332
|
}
|
|
322
333
|
_t11 = "NPM_TOKEN=";
|
|
323
|
-
_context9.next =
|
|
334
|
+
_context9.next = 4;
|
|
324
335
|
return this.getNpmToken();
|
|
325
|
-
case
|
|
336
|
+
case 4:
|
|
326
337
|
_t12 = _t11.concat.call(_t11, _context9.sent);
|
|
327
338
|
_t10 = ['--build-arg', _t12];
|
|
328
|
-
_context9.next =
|
|
339
|
+
_context9.next = 6;
|
|
329
340
|
break;
|
|
330
|
-
case
|
|
341
|
+
case 5:
|
|
331
342
|
_t10 = [];
|
|
332
|
-
case
|
|
333
|
-
_context9.next =
|
|
334
|
-
return _t9('docker', _t0.concat.call(_t0, _t1(_t10), ['--tag', tag], (0, _toConsumableArray2["default"])(args)), {
|
|
343
|
+
case 6:
|
|
344
|
+
_context9.next = 7;
|
|
345
|
+
return _t9('docker', _t0.concat.call(_t0, _t1(_t10), ['--tag', tag], (0, _toConsumableArray2["default"])((buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.args) || []), (0, _toConsumableArray2["default"])(args)), {
|
|
335
346
|
stdio: 'inherit'
|
|
336
347
|
});
|
|
337
|
-
case
|
|
348
|
+
case 7:
|
|
338
349
|
case "end":
|
|
339
350
|
return _context9.stop();
|
|
340
351
|
}
|
|
@@ -346,21 +357,87 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
346
357
|
return build;
|
|
347
358
|
}()
|
|
348
359
|
}, {
|
|
349
|
-
key: "
|
|
360
|
+
key: "isPushed",
|
|
350
361
|
value: function () {
|
|
351
|
-
var
|
|
352
|
-
var _yield$Promise$all3, _yield$Promise$all4,
|
|
362
|
+
var _isPushed = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
|
|
363
|
+
var _yield$Promise$all3, _yield$Promise$all4, ecrHost, tags, awsConfig;
|
|
353
364
|
return _regenerator["default"].wrap(function (_context0) {
|
|
354
365
|
while (1) switch (_context0.prev = _context0.next) {
|
|
355
366
|
case 0:
|
|
356
367
|
_context0.next = 1;
|
|
357
|
-
return Promise.all([this.
|
|
368
|
+
return Promise.all([this.getECRHost(), this.getDockerTags()]);
|
|
358
369
|
case 1:
|
|
359
370
|
_yield$Promise$all3 = _context0.sent;
|
|
360
|
-
_yield$Promise$all4 = (0, _slicedToArray2["default"])(_yield$Promise$all3,
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
371
|
+
_yield$Promise$all4 = (0, _slicedToArray2["default"])(_yield$Promise$all3, 2);
|
|
372
|
+
ecrHost = _yield$Promise$all4[0];
|
|
373
|
+
tags = _yield$Promise$all4[1];
|
|
374
|
+
awsConfig = this.options.awsConfig;
|
|
375
|
+
_context0.next = 2;
|
|
376
|
+
return (0, _ecrImageExists["default"])({
|
|
377
|
+
awsConfig: awsConfig,
|
|
378
|
+
imageUri: "".concat(ecrHost, "/").concat(tags.commitHash)
|
|
379
|
+
});
|
|
380
|
+
case 2:
|
|
381
|
+
return _context0.abrupt("return", _context0.sent);
|
|
382
|
+
case 3:
|
|
383
|
+
case "end":
|
|
384
|
+
return _context0.stop();
|
|
385
|
+
}
|
|
386
|
+
}, _callee0, this);
|
|
387
|
+
}));
|
|
388
|
+
function isPushed() {
|
|
389
|
+
return _isPushed.apply(this, arguments);
|
|
390
|
+
}
|
|
391
|
+
return isPushed;
|
|
392
|
+
}()
|
|
393
|
+
}, {
|
|
394
|
+
key: "buildAndPushIfNecessary",
|
|
395
|
+
value: function () {
|
|
396
|
+
var _buildAndPushIfNecessary = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1() {
|
|
397
|
+
return _regenerator["default"].wrap(function (_context1) {
|
|
398
|
+
while (1) switch (_context1.prev = _context1.next) {
|
|
399
|
+
case 0:
|
|
400
|
+
_context1.next = 1;
|
|
401
|
+
return this.isPushed();
|
|
402
|
+
case 1:
|
|
403
|
+
if (!_context1.sent) {
|
|
404
|
+
_context1.next = 2;
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
return _context1.abrupt("return");
|
|
408
|
+
case 2:
|
|
409
|
+
_context1.next = 3;
|
|
410
|
+
return this.build();
|
|
411
|
+
case 3:
|
|
412
|
+
_context1.next = 4;
|
|
413
|
+
return this.push();
|
|
414
|
+
case 4:
|
|
415
|
+
case "end":
|
|
416
|
+
return _context1.stop();
|
|
417
|
+
}
|
|
418
|
+
}, _callee1, this);
|
|
419
|
+
}));
|
|
420
|
+
function buildAndPushIfNecessary() {
|
|
421
|
+
return _buildAndPushIfNecessary.apply(this, arguments);
|
|
422
|
+
}
|
|
423
|
+
return buildAndPushIfNecessary;
|
|
424
|
+
}()
|
|
425
|
+
}, {
|
|
426
|
+
key: "getDockerTags",
|
|
427
|
+
value: function () {
|
|
428
|
+
var _getDockerTags = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee10() {
|
|
429
|
+
var _yield$Promise$all5, _yield$Promise$all6, commitHash, branch, packageJson, base, result, _this$options$release, releaseBranches, version;
|
|
430
|
+
return _regenerator["default"].wrap(function (_context10) {
|
|
431
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
432
|
+
case 0:
|
|
433
|
+
_context10.next = 1;
|
|
434
|
+
return Promise.all([this.getCommitHash(), this.getBranch(), this.getProjectPackageJson()]);
|
|
435
|
+
case 1:
|
|
436
|
+
_yield$Promise$all5 = _context10.sent;
|
|
437
|
+
_yield$Promise$all6 = (0, _slicedToArray2["default"])(_yield$Promise$all5, 3);
|
|
438
|
+
commitHash = _yield$Promise$all6[0];
|
|
439
|
+
branch = _yield$Promise$all6[1];
|
|
440
|
+
packageJson = _yield$Promise$all6[2];
|
|
364
441
|
base = this.options.repositoryName;
|
|
365
442
|
result = {
|
|
366
443
|
latest: base,
|
|
@@ -369,24 +446,24 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
369
446
|
};
|
|
370
447
|
_this$options$release = this.options.releaseBranches, releaseBranches = _this$options$release === void 0 ? ['master', 'main', 'release'] : _this$options$release;
|
|
371
448
|
if (!releaseBranches.includes(branch)) {
|
|
372
|
-
|
|
449
|
+
_context10.next = 3;
|
|
373
450
|
break;
|
|
374
451
|
}
|
|
375
452
|
version = process.env.OVERRIDE_ECR_VERSION_TAG || packageJson.contents.version;
|
|
376
453
|
if (!(typeof version !== 'string')) {
|
|
377
|
-
|
|
454
|
+
_context10.next = 2;
|
|
378
455
|
break;
|
|
379
456
|
}
|
|
380
457
|
throw new Error("failed to get version from ".concat(_path["default"].relative(process.cwd(), packageJson.file)));
|
|
381
458
|
case 2:
|
|
382
459
|
result.version = "".concat(base, ":").concat(version);
|
|
383
460
|
case 3:
|
|
384
|
-
return
|
|
461
|
+
return _context10.abrupt("return", result);
|
|
385
462
|
case 4:
|
|
386
463
|
case "end":
|
|
387
|
-
return
|
|
464
|
+
return _context10.stop();
|
|
388
465
|
}
|
|
389
|
-
},
|
|
466
|
+
}, _callee10, this);
|
|
390
467
|
}));
|
|
391
468
|
function getDockerTags() {
|
|
392
469
|
return _getDockerTags.apply(this, arguments);
|
|
@@ -396,46 +473,46 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
396
473
|
}, {
|
|
397
474
|
key: "push",
|
|
398
475
|
value: function () {
|
|
399
|
-
var _push = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function
|
|
400
|
-
var awsConfig, _yield$Promise$
|
|
401
|
-
return _regenerator["default"].wrap(function (
|
|
402
|
-
while (1) switch (
|
|
476
|
+
var _push = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee11() {
|
|
477
|
+
var awsConfig, _yield$Promise$all7, _yield$Promise$all8, ecrHost, commitHash, _t13;
|
|
478
|
+
return _regenerator["default"].wrap(function (_context11) {
|
|
479
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
403
480
|
case 0:
|
|
404
481
|
awsConfig = this.options.awsConfig;
|
|
405
|
-
|
|
482
|
+
_context11.next = 1;
|
|
406
483
|
return Promise.all([this.getECRHost(), this.getDockerTags(), (0, _loginToECR["default"])({
|
|
407
484
|
awsConfig: awsConfig
|
|
408
485
|
})]);
|
|
409
486
|
case 1:
|
|
410
|
-
_yield$Promise$
|
|
411
|
-
_yield$Promise$
|
|
412
|
-
ecrHost = _yield$Promise$
|
|
413
|
-
commitHash = _yield$Promise$
|
|
414
|
-
|
|
415
|
-
|
|
487
|
+
_yield$Promise$all7 = _context11.sent;
|
|
488
|
+
_yield$Promise$all8 = (0, _slicedToArray2["default"])(_yield$Promise$all7, 2);
|
|
489
|
+
ecrHost = _yield$Promise$all8[0];
|
|
490
|
+
commitHash = _yield$Promise$all8[1].commitHash;
|
|
491
|
+
_context11.prev = 2;
|
|
492
|
+
_context11.next = 3;
|
|
416
493
|
return (0, _promisifyChildProcess.spawn)('docker', ['tag', commitHash, "".concat(ecrHost, "/").concat(commitHash)], {
|
|
417
494
|
stdio: 'inherit'
|
|
418
495
|
});
|
|
419
496
|
case 3:
|
|
420
|
-
|
|
497
|
+
_context11.next = 5;
|
|
421
498
|
break;
|
|
422
499
|
case 4:
|
|
423
|
-
|
|
424
|
-
_t13 =
|
|
425
|
-
|
|
500
|
+
_context11.prev = 4;
|
|
501
|
+
_t13 = _context11["catch"](2);
|
|
502
|
+
_context11.next = 5;
|
|
426
503
|
return (0, _promisifyChildProcess.spawn)('docker', ['tag', '-f', commitHash, "".concat(ecrHost, "/").concat(commitHash)], {
|
|
427
504
|
stdio: 'inherit'
|
|
428
505
|
});
|
|
429
506
|
case 5:
|
|
430
|
-
|
|
507
|
+
_context11.next = 6;
|
|
431
508
|
return (0, _promisifyChildProcess.spawn)('docker', ['push', "".concat(ecrHost, "/").concat(commitHash)], {
|
|
432
509
|
stdio: 'inherit'
|
|
433
510
|
});
|
|
434
511
|
case 6:
|
|
435
512
|
case "end":
|
|
436
|
-
return
|
|
513
|
+
return _context11.stop();
|
|
437
514
|
}
|
|
438
|
-
},
|
|
515
|
+
}, _callee11, this, [[2, 4]]);
|
|
439
516
|
}));
|
|
440
517
|
function push() {
|
|
441
518
|
return _push.apply(this, arguments);
|
|
@@ -445,22 +522,22 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
445
522
|
}, {
|
|
446
523
|
key: "release",
|
|
447
524
|
value: function () {
|
|
448
|
-
var _release = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function
|
|
449
|
-
var _yield$Promise$
|
|
450
|
-
return _regenerator["default"].wrap(function (
|
|
451
|
-
while (1) switch (
|
|
525
|
+
var _release = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee12() {
|
|
526
|
+
var _yield$Promise$all9, _yield$Promise$all0, commitHash, ecrHost, tags, ecr, repositoryName, _yield$ecr$send, _yield$ecr$send$image, _yield$ecr$send$image2, _yield$ecr$send$image3, image, imageManifest, _i, _arr, _tags$key, key, tag, _t14;
|
|
527
|
+
return _regenerator["default"].wrap(function (_context12) {
|
|
528
|
+
while (1) switch (_context12.prev = _context12.next) {
|
|
452
529
|
case 0:
|
|
453
|
-
|
|
530
|
+
_context12.next = 1;
|
|
454
531
|
return Promise.all([this.getCommitHash(), this.getECRHost(), this.getDockerTags()]);
|
|
455
532
|
case 1:
|
|
456
|
-
_yield$Promise$
|
|
457
|
-
_yield$Promise$
|
|
458
|
-
commitHash = _yield$Promise$
|
|
459
|
-
ecrHost = _yield$Promise$
|
|
460
|
-
tags = _yield$Promise$
|
|
533
|
+
_yield$Promise$all9 = _context12.sent;
|
|
534
|
+
_yield$Promise$all0 = (0, _slicedToArray2["default"])(_yield$Promise$all9, 3);
|
|
535
|
+
commitHash = _yield$Promise$all0[0];
|
|
536
|
+
ecrHost = _yield$Promise$all0[1];
|
|
537
|
+
tags = _yield$Promise$all0[2];
|
|
461
538
|
ecr = new _clientEcr.ECRClient();
|
|
462
539
|
repositoryName = this.options.repositoryName;
|
|
463
|
-
|
|
540
|
+
_context12.next = 2;
|
|
464
541
|
return ecr.send(new _clientEcr.BatchGetImageCommand({
|
|
465
542
|
repositoryName: repositoryName,
|
|
466
543
|
imageIds: [{
|
|
@@ -468,7 +545,7 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
468
545
|
}]
|
|
469
546
|
}));
|
|
470
547
|
case 2:
|
|
471
|
-
_yield$ecr$send =
|
|
548
|
+
_yield$ecr$send = _context12.sent;
|
|
472
549
|
_yield$ecr$send$image = _yield$ecr$send.images;
|
|
473
550
|
_yield$ecr$send$image2 = _yield$ecr$send$image === void 0 ? [] : _yield$ecr$send$image;
|
|
474
551
|
_yield$ecr$send$image3 = (0, _slicedToArray2["default"])(_yield$ecr$send$image2, 1);
|
|
@@ -476,64 +553,64 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
476
553
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
477
554
|
imageManifest = image === null || image === void 0 ? void 0 : image.imageManifest;
|
|
478
555
|
if (imageManifest) {
|
|
479
|
-
|
|
556
|
+
_context12.next = 3;
|
|
480
557
|
break;
|
|
481
558
|
}
|
|
482
559
|
throw new Error("failed to get image manifest for ".concat(repositoryName, ":").concat(commitHash));
|
|
483
560
|
case 3:
|
|
484
561
|
if (!imageManifest) {
|
|
485
|
-
|
|
562
|
+
_context12.next = 11;
|
|
486
563
|
break;
|
|
487
564
|
}
|
|
488
565
|
_i = 0, _arr = Object.keys(tags);
|
|
489
566
|
case 4:
|
|
490
567
|
if (!(_i < _arr.length)) {
|
|
491
|
-
|
|
568
|
+
_context12.next = 11;
|
|
492
569
|
break;
|
|
493
570
|
}
|
|
494
571
|
key = _arr[_i];
|
|
495
572
|
if (!(key === 'latest' || key === 'commitHash')) {
|
|
496
|
-
|
|
573
|
+
_context12.next = 5;
|
|
497
574
|
break;
|
|
498
575
|
}
|
|
499
|
-
return
|
|
576
|
+
return _context12.abrupt("continue", 10);
|
|
500
577
|
case 5:
|
|
501
578
|
tag = (_tags$key = tags[key]) === null || _tags$key === void 0 ? void 0 : _tags$key.replace(/^[^:]+:?/, '');
|
|
502
579
|
if (tag) {
|
|
503
|
-
|
|
580
|
+
_context12.next = 6;
|
|
504
581
|
break;
|
|
505
582
|
}
|
|
506
|
-
return
|
|
583
|
+
return _context12.abrupt("continue", 10);
|
|
507
584
|
case 6:
|
|
508
585
|
// eslint-disable-next-line no-console
|
|
509
586
|
console.error("Adding tag ".concat(ecrHost, "/").concat(tags[key]));
|
|
510
|
-
|
|
511
|
-
|
|
587
|
+
_context12.prev = 7;
|
|
588
|
+
_context12.next = 8;
|
|
512
589
|
return ecr.send(new _clientEcr.PutImageCommand({
|
|
513
590
|
repositoryName: repositoryName,
|
|
514
591
|
imageManifest: imageManifest,
|
|
515
592
|
imageTag: tag.substring(tag.indexOf(':') + 1)
|
|
516
593
|
}));
|
|
517
594
|
case 8:
|
|
518
|
-
|
|
595
|
+
_context12.next = 10;
|
|
519
596
|
break;
|
|
520
597
|
case 9:
|
|
521
|
-
|
|
522
|
-
_t14 =
|
|
598
|
+
_context12.prev = 9;
|
|
599
|
+
_t14 = _context12["catch"](7);
|
|
523
600
|
if (!(_t14 instanceof Object && 'code' in _t14 && _t14.code !== 'ImageAlreadyExistsException')) {
|
|
524
|
-
|
|
601
|
+
_context12.next = 10;
|
|
525
602
|
break;
|
|
526
603
|
}
|
|
527
604
|
throw _t14;
|
|
528
605
|
case 10:
|
|
529
606
|
_i++;
|
|
530
|
-
|
|
607
|
+
_context12.next = 4;
|
|
531
608
|
break;
|
|
532
609
|
case 11:
|
|
533
610
|
case "end":
|
|
534
|
-
return
|
|
611
|
+
return _context12.stop();
|
|
535
612
|
}
|
|
536
|
-
},
|
|
613
|
+
}, _callee12, this, [[7, 9]]);
|
|
537
614
|
}));
|
|
538
615
|
function release() {
|
|
539
616
|
return _release.apply(this, arguments);
|
|
@@ -543,50 +620,50 @@ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
|
|
|
543
620
|
}, {
|
|
544
621
|
key: "getNpmToken",
|
|
545
622
|
value: function () {
|
|
546
|
-
var _getNpmToken = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function
|
|
623
|
+
var _getNpmToken = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee13() {
|
|
547
624
|
var env,
|
|
548
625
|
NPM_TOKEN,
|
|
549
626
|
homedir,
|
|
550
627
|
npmrc,
|
|
551
628
|
match,
|
|
552
|
-
|
|
629
|
+
_args13 = arguments,
|
|
553
630
|
_t15;
|
|
554
|
-
return _regenerator["default"].wrap(function (
|
|
555
|
-
while (1) switch (
|
|
631
|
+
return _regenerator["default"].wrap(function (_context13) {
|
|
632
|
+
while (1) switch (_context13.prev = _context13.next) {
|
|
556
633
|
case 0:
|
|
557
|
-
env =
|
|
634
|
+
env = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : process.env;
|
|
558
635
|
NPM_TOKEN = env.NPM_TOKEN;
|
|
559
636
|
if (!NPM_TOKEN) {
|
|
560
|
-
|
|
637
|
+
_context13.next = 1;
|
|
561
638
|
break;
|
|
562
639
|
}
|
|
563
|
-
return
|
|
640
|
+
return _context13.abrupt("return", NPM_TOKEN);
|
|
564
641
|
case 1:
|
|
565
|
-
|
|
642
|
+
_context13.prev = 1;
|
|
566
643
|
homedir = _os["default"].homedir();
|
|
567
|
-
|
|
644
|
+
_context13.next = 2;
|
|
568
645
|
return _promises["default"].readFile("".concat(homedir, "/.npmrc"), 'utf8');
|
|
569
646
|
case 2:
|
|
570
|
-
npmrc =
|
|
647
|
+
npmrc = _context13.sent;
|
|
571
648
|
match = /registry\.npmjs\.org\/:_authToken=(.+)/.exec(npmrc);
|
|
572
649
|
if (!match) {
|
|
573
|
-
|
|
650
|
+
_context13.next = 3;
|
|
574
651
|
break;
|
|
575
652
|
}
|
|
576
|
-
return
|
|
653
|
+
return _context13.abrupt("return", match[1]);
|
|
577
654
|
case 3:
|
|
578
|
-
|
|
655
|
+
_context13.next = 5;
|
|
579
656
|
break;
|
|
580
657
|
case 4:
|
|
581
|
-
|
|
582
|
-
_t15 =
|
|
658
|
+
_context13.prev = 4;
|
|
659
|
+
_t15 = _context13["catch"](1);
|
|
583
660
|
case 5:
|
|
584
661
|
throw new Error('Missing process.env.NPM_TOKEN or entry in ~/.npmrc');
|
|
585
662
|
case 6:
|
|
586
663
|
case "end":
|
|
587
|
-
return
|
|
664
|
+
return _context13.stop();
|
|
588
665
|
}
|
|
589
|
-
},
|
|
666
|
+
}, _callee13, null, [[1, 4]]);
|
|
590
667
|
}));
|
|
591
668
|
function getNpmToken() {
|
|
592
669
|
return _getNpmToken.apply(this, arguments);
|
package/ECRDeployer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECRDeployer.js","names":["_clientEcr","require","_promisifyChildProcess","_promises","_interopRequireDefault","_path","_clientSts","_once","_loginToECR","_os","ECRDeployer","exports","options","_this","_classCallCheck2","_defineProperty2","once","_asyncToGenerator2","_regenerator","mark","_callee","sts","_yield$sts$send","Account","wrap","_context","prev","next","STSClient","awsConfig","send","GetCallerIdentityCommand","sent","Error","abrupt","stop","_createClass2","key","value","_getBranch","_callee2","_t","_context2","process","env","OVERRIDE_ECR_BRANCH_TAG","spawn","encoding","stdout","trim","getBranch","apply","arguments","_getCommitHash","_callee3","_context3","getCommitHash","_getRegion","_callee4","ecr","region","_context4","ECRClient","config","getRegion","_getECRHost","_callee5","_t2","_t3","_context5","getAWSAccountId","concat","call","getECRHost","_getProjectPackageJson","_callee7","_yield$import","findUp","file","_t6","_t7","_t8","_context7","_ref2","_callee6","dir","_t4","_t5","_context6","test","path","posix","normalize","fs","stat","join","then","s","isFile","undefined","_x","JSON","readFile","parse","contents","getProjectPackageJson","_getLocalDockerTag","_callee8","_context8","getDockerTags","commitHash","getLocalDockerTag","_build","_callee9","args","_options","_options$path","_options2","_yield$Promise$all","_yield$Promise$all2","npmToken","tag","_t9","_t0","_t1","_t10","_t11","_t12","_context9","Array","isArray","Promise","all","noNpmTokenArg","getNpmToken","_slicedToArray2","_toConsumableArray2","stdio","build","_x2","_x3","_getDockerTags","_callee0","_yield$Promise$all3","_yield$Promise$all4","branch","packageJson","base","result","_this$options$release","releaseBranches","version","_context0","repositoryName","latest","includes","OVERRIDE_ECR_VERSION_TAG","relative","cwd","_push","_callee1","_yield$Promise$all5","_yield$Promise$all6","ecrHost","_t13","_context1","loginToECR","push","_release","_callee10","_yield$Promise$all7","_yield$Promise$all8","tags","_yield$ecr$send","_yield$ecr$send$image","_yield$ecr$send$image2","_yield$ecr$send$image3","image","imageManifest","_i","_arr","_tags$key","_t14","_context10","BatchGetImageCommand","imageIds","imageTag","images","Object","keys","length","replace","console","error","PutImageCommand","substring","indexOf","code","release","_getNpmToken","_callee11","NPM_TOKEN","homedir","npmrc","match","_args11","_t15","_context11","os","exec"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ECRDeployer.js","names":["_clientEcr","require","_promisifyChildProcess","_promises","_interopRequireDefault","_path","_clientSts","_once","_loginToECR","_os","_ecrImageExists","ECRDeployer","exports","options","_this","_classCallCheck2","_defineProperty2","once","_asyncToGenerator2","_regenerator","mark","_callee","sts","_yield$sts$send","Account","wrap","_context","prev","next","STSClient","awsConfig","send","GetCallerIdentityCommand","sent","Error","abrupt","stop","_createClass2","key","value","_getBranch","_callee2","_t","_context2","process","env","OVERRIDE_ECR_BRANCH_TAG","spawn","encoding","stdout","trim","getBranch","apply","arguments","_getCommitHash","_callee3","_context3","getCommitHash","_getRegion","_callee4","ecr","region","_context4","ECRClient","config","getRegion","_getECRHost","_callee5","_t2","_t3","_context5","getAWSAccountId","concat","call","getECRHost","_getProjectPackageJson","_callee7","_yield$import","findUp","file","_t6","_t7","_t8","_context7","_ref2","_callee6","dir","_t4","_t5","_context6","test","path","posix","normalize","fs","stat","join","then","s","isFile","undefined","_x","JSON","readFile","parse","contents","getProjectPackageJson","_getLocalDockerTag","_callee8","_context8","getDockerTags","commitHash","getLocalDockerTag","_build","_callee9","args","_options$noNpmTokenAr","_options","_ref3","_options$path","_options2","buildOptions","_yield$Promise$all","_yield$Promise$all2","npmToken","tag","_t9","_t0","_t1","_t10","_t11","_t12","_context9","Array","isArray","build","Promise","all","noNpmTokenArg","getNpmToken","_slicedToArray2","_toConsumableArray2","stdio","_x2","_x3","_isPushed","_callee0","_yield$Promise$all3","_yield$Promise$all4","ecrHost","tags","_context0","ecrImageExists","imageUri","isPushed","_buildAndPushIfNecessary","_callee1","_context1","push","buildAndPushIfNecessary","_getDockerTags","_callee10","_yield$Promise$all5","_yield$Promise$all6","branch","packageJson","base","result","_this$options$release","releaseBranches","version","_context10","repositoryName","latest","includes","OVERRIDE_ECR_VERSION_TAG","relative","cwd","_push","_callee11","_yield$Promise$all7","_yield$Promise$all8","_t13","_context11","loginToECR","_release","_callee12","_yield$Promise$all9","_yield$Promise$all0","_yield$ecr$send","_yield$ecr$send$image","_yield$ecr$send$image2","_yield$ecr$send$image3","image","imageManifest","_i","_arr","_tags$key","_t14","_context12","BatchGetImageCommand","imageIds","imageTag","images","Object","keys","length","replace","console","error","PutImageCommand","substring","indexOf","code","release","_getNpmToken","_callee13","NPM_TOKEN","homedir","npmrc","match","_args13","_t15","_context13","os","exec"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/ECRDeployer.mjs
CHANGED
|
@@ -6,6 +6,7 @@ import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts';
|
|
|
6
6
|
import { once } from "./once.mjs";
|
|
7
7
|
import loginToECR from "./loginToECR.mjs";
|
|
8
8
|
import os from 'os';
|
|
9
|
+
import ecrImageExists from "./ecrImageExists.mjs";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Options for {@link ECRDeployer#build}
|
|
@@ -14,13 +15,11 @@ import os from 'os';
|
|
|
14
15
|
/**
|
|
15
16
|
* Class that implements our conventional process for deploying docker images to ECR.
|
|
16
17
|
*
|
|
17
|
-
* The CI build step should build the docker image
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* By default {@link build} assumes that your `Dockerfile` takes an `NPM_TOKEN` arg,
|
|
23
|
-
* if not you can call `build({ noNpmTokenArg: true })`.
|
|
18
|
+
* The CI build step should build and push the docker image if necessary; you can use
|
|
19
|
+
* {@link buildAndPushIfNecessary}. If you need to customize the build you can pass
|
|
20
|
+
* options or even a custom function in {@link ECRDeployerOptions.build}, or you can
|
|
21
|
+
* even call {@link isPushed}, {@link build}, {@link push}, and {@link getNpmToken}
|
|
22
|
+
* yourself.
|
|
24
23
|
*
|
|
25
24
|
* The CI release step should call {@link release} to add tags for the git branch and
|
|
26
25
|
* the `version` in your `package.json`.
|
|
@@ -87,11 +86,33 @@ export class ECRDeployer {
|
|
|
87
86
|
options = args;
|
|
88
87
|
args = [];
|
|
89
88
|
}
|
|
90
|
-
const
|
|
91
|
-
|
|
89
|
+
const buildOptions = this.options.build;
|
|
90
|
+
const [npmToken, tag] = await Promise.all([((_options = options) === null || _options === void 0 ? void 0 : _options.noNpmTokenArg) ?? (typeof buildOptions === 'function' ? undefined : buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.noNpmTokenArg) ? undefined : this.getNpmToken(), this.getLocalDockerTag()]);
|
|
91
|
+
if (typeof buildOptions === 'function') {
|
|
92
|
+
await buildOptions({
|
|
93
|
+
tag
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
await spawn('docker', ['build', ((_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.path) ?? (buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.path) ?? '.', ...(npmToken ? ['--build-arg', `NPM_TOKEN=${await this.getNpmToken()}`] : []), '--tag', tag, ...((buildOptions === null || buildOptions === void 0 ? void 0 : buildOptions.args) || []), ...args], {
|
|
92
98
|
stdio: 'inherit'
|
|
93
99
|
});
|
|
94
100
|
}
|
|
101
|
+
async isPushed() {
|
|
102
|
+
const [ecrHost, tags] = await Promise.all([this.getECRHost(), this.getDockerTags()]);
|
|
103
|
+
const {
|
|
104
|
+
awsConfig
|
|
105
|
+
} = this.options;
|
|
106
|
+
return await ecrImageExists({
|
|
107
|
+
awsConfig,
|
|
108
|
+
imageUri: `${ecrHost}/${tags.commitHash}`
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async buildAndPushIfNecessary() {
|
|
112
|
+
if (await this.isPushed()) return;
|
|
113
|
+
await this.build();
|
|
114
|
+
await this.push();
|
|
115
|
+
}
|
|
95
116
|
async getDockerTags() {
|
|
96
117
|
const [commitHash, branch, packageJson] = await Promise.all([this.getCommitHash(), this.getBranch(), this.getProjectPackageJson()]);
|
|
97
118
|
const base = this.options.repositoryName;
|
package/ECRDeployer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECRDeployer.mjs","names":["BatchGetImageCommand","ECRClient","PutImageCommand","spawn","fs","path","GetCallerIdentityCommand","STSClient","once","loginToECR","os","ECRDeployer","options","constructor","getBranch","process","env","OVERRIDE_ECR_BRANCH_TAG","encoding","stdout","trim","getCommitHash","getAWSAccountId","sts","awsConfig","Account","send","Error","getRegion","ecr","region","config","getECRHost","getProjectPackageJson","findUp","file","dir","test","posix","normalize","stat","join","then","s","isFile","undefined","contents","JSON","parse","readFile","getLocalDockerTag","getDockerTags","commitHash","build","args","_options","_options2","Array","isArray","npmToken","tag","Promise","all","noNpmTokenArg","getNpmToken","stdio","branch","packageJson","base","repositoryName","result","latest","releaseBranches","includes","version","OVERRIDE_ECR_VERSION_TAG","relative","cwd","
|
|
1
|
+
{"version":3,"file":"ECRDeployer.mjs","names":["BatchGetImageCommand","ECRClient","PutImageCommand","spawn","fs","path","GetCallerIdentityCommand","STSClient","once","loginToECR","os","ecrImageExists","ECRDeployer","options","constructor","getBranch","process","env","OVERRIDE_ECR_BRANCH_TAG","encoding","stdout","trim","getCommitHash","getAWSAccountId","sts","awsConfig","Account","send","Error","getRegion","ecr","region","config","getECRHost","getProjectPackageJson","findUp","file","dir","test","posix","normalize","stat","join","then","s","isFile","undefined","contents","JSON","parse","readFile","getLocalDockerTag","getDockerTags","commitHash","build","args","_options","_options2","Array","isArray","buildOptions","npmToken","tag","Promise","all","noNpmTokenArg","getNpmToken","stdio","isPushed","ecrHost","tags","imageUri","buildAndPushIfNecessary","push","branch","packageJson","base","repositoryName","result","latest","releaseBranches","includes","version","OVERRIDE_ECR_VERSION_TAG","relative","cwd","release","images","image","imageIds","imageTag","imageManifest","key","Object","keys","_tags$key","replace","console","error","substring","indexOf","code","NPM_TOKEN","homedir","npmrc","match","exec"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,oBAAoB,EACpBC,SAAS,EAETC,eAAe,QACV,qBAAqB;AAC5B,SAASC,KAAK,QAAQ,yBAAyB;AAC/C,OAAOC,EAAE,MAAM,aAAa;AAC5B,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,wBAAwB,EAAEC,SAAS,QAAQ,qBAAqB;AACzE,SAASC,IAAI;AACb,OAAOC,UAAU;AACjB,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,cAAc;;AA2BrB;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,CAAC;EACvBC,OAAO;EAEPC,WAAWA,CAACD,OAA2B,EAAE;IACvC,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEA,MAAME,SAASA,CAAA,EAAG;IAChB,OACEC,OAAO,CAACC,GAAG,CAACC,uBAAuB,IACnC,CACE,MAAMf,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;MACxDgB,QAAQ,EAAE;IACZ,CAAC,CAAC,EACFC,MAAM,CAACC,IAAI,CAAC,CAAC;EAEnB;EAEA,MAAMC,aAAaA,CAAA,EAAG;IACpB,OAAO,CACL,MAAMnB,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;MAAEgB,QAAQ,EAAE;IAAO,CAAC,CAAC,EAC/DC,MAAM,CAACC,IAAI,CAAC,CAAC;EACjB;EAEQE,eAAe,GAAGf,IAAI,CAAC,YAAY;IACzC,MAAMgB,GAAG,GAAG,IAAIjB,SAAS,CAAC,IAAI,CAACM,OAAO,CAACY,SAAS,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAMF,GAAG,CAACG,IAAI,CAAC,IAAIrB,wBAAwB,CAAC,CAAC,CAAC;IAClE,IAAI,CAACoB,OAAO,EAAE,MAAM,IAAIE,KAAK,CAAC,8BAA8B,CAAC;IAC7D,OAAOF,OAAO;EAChB,CAAC,CAAC;EAEF,MAAcG,SAASA,CAAA,EAAG;IACxB,MAAMC,GAAG,GAAG,IAAI7B,SAAS,CAAC,IAAI,CAACY,OAAO,CAACY,SAAS,IAAI,CAAC,CAAC,CAAC;IACvD,MAAMM,MAAM,GAAG,MAAMD,GAAG,CAACE,MAAM,CAACD,MAAM,CAAC,CAAC;IACxC,IAAI,CAACA,MAAM,EAAE;MACX,MAAM,IAAIH,KAAK,CAAC;AACtB;AACA;AACA,CAAC,CAAC;IACE;IACA,OAAOG,MAAM;EACf;EAEA,MAAcE,UAAUA,CAAA,EAAG;IACzB,OAAO,GAAG,MAAM,IAAI,CAACV,eAAe,CAAC,CAAC,YAAY,MAAM,IAAI,CAACM,SAAS,CAAC,CAAC,gBAAgB;EAC1F;EAEA,MAAcK,qBAAqBA,CAAA,EAAG;IACpC,MAAM;MAAEC;IAAO,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;IAE1C,MAAMC,IAAI,GAAG,MAAMD,MAAM,CAAC,MAAOE,GAAG,IAEhC,CAAC,kBAAkB,CAACC,IAAI,CAACjC,IAAI,CAACkC,KAAK,CAACC,SAAS,CAACH,GAAG,CAAC,CAAC,KAClD,MAAMjC,EAAE,CAACqC,IAAI,CAACpC,IAAI,CAACqC,IAAI,CAACL,GAAG,EAAE,cAAc,CAAC,CAAC,CAACM,IAAI,CAChDC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,CAAC,EACjB,MAAM,KACR,CAAC,CAAC,GAEFxC,IAAI,CAACqC,IAAI,CAACL,GAAG,EAAE,cAAc,CAAC,GAC9BS,SACJ,CAAC;IACD,IAAI,CAACV,IAAI,EAAE;MACT,MAAM,IAAIR,KAAK,CAAC,+CAA+C,CAAC;IAClE;IACA,OAAO;MAAEQ,IAAI;MAAEW,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAAC,MAAM7C,EAAE,CAAC8C,QAAQ,CAACd,IAAI,EAAE,MAAM,CAAC;IAAE,CAAC;EACxE;EAEA,MAAMe,iBAAiBA,CAAA,EAAG;IACxB,OAAO,CAAC,MAAM,IAAI,CAACC,aAAa,CAAC,CAAC,EAAEC,UAAU;EAChD;EAIA,MAAMC,KAAKA,CACTC,IAA8B,EAC9B1C,OAAsB,EACP;IAAA,IAAA2C,QAAA,EAAAC,SAAA;IACf,IAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;MACxB1C,OAAO,GAAG0C,IAAI;MACdA,IAAI,GAAG,EAAE;IACX;IACA,MAAMK,YAAY,GAAG,IAAI,CAAC/C,OAAO,CAACyC,KAAK;IAEvC,MAAM,CAACO,QAAQ,EAAEC,GAAG,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAErC,EAAAR,QAAA,GAAA3C,OAAO,cAAA2C,QAAA,uBAAPA,QAAA,CAASS,aAAa,MACtB,OAAOL,YAAY,KAAK,UAAU,GAAGd,SAAS,GAC7Cc,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEK,aACf,CAAC,GAEFnB,SAAS,GACT,IAAI,CAACoB,WAAW,CAAC,CAAC,EACpB,IAAI,CAACf,iBAAiB,CAAC,CAAC,CACzB,CAAC;IACF,IAAI,OAAOS,YAAY,KAAK,UAAU,EAAE;MACtC,MAAMA,YAAY,CAAC;QAAEE;MAAI,CAAC,CAAC;MAC3B;IACF;IAEA,MAAM3D,KAAK,CACT,QAAQ,EACR,CACE,OAAO,EACP,EAAAsD,SAAA,GAAA5C,OAAO,cAAA4C,SAAA,uBAAPA,SAAA,CAASpD,IAAI,MAAIuD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEvD,IAAI,KAAI,GAAG,EAC1C,IAAIwD,QAAQ,GACV,CAAC,aAAa,EAAE,aAAa,MAAM,IAAI,CAACK,WAAW,CAAC,CAAC,EAAE,CAAC,GACxD,EAAE,CAAC,EACL,OAAO,EACPJ,GAAG,EACH,IAAI,CAAAF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEL,IAAI,KAAI,EAAE,CAAC,EAC7B,GAAGA,IAAI,CACR,EACD;MAAEY,KAAK,EAAE;IAAU,CACrB,CAAC;EACH;EAEA,MAAMC,QAAQA,CAAA,EAAG;IACf,MAAM,CAACC,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMP,OAAO,CAACC,GAAG,CAAC,CACxC,IAAI,CAAC/B,UAAU,CAAC,CAAC,EACjB,IAAI,CAACmB,aAAa,CAAC,CAAC,CACrB,CAAC;IACF,MAAM;MAAE3B;IAAU,CAAC,GAAG,IAAI,CAACZ,OAAO;IAElC,OAAO,MAAMF,cAAc,CAAC;MAC1Bc,SAAS;MACT8C,QAAQ,EAAE,GAAGF,OAAO,IAAIC,IAAI,CAACjB,UAAU;IACzC,CAAC,CAAC;EACJ;EAEA,MAAMmB,uBAAuBA,CAAA,EAAG;IAC9B,IAAI,MAAM,IAAI,CAACJ,QAAQ,CAAC,CAAC,EAAE;IAC3B,MAAM,IAAI,CAACd,KAAK,CAAC,CAAC;IAClB,MAAM,IAAI,CAACmB,IAAI,CAAC,CAAC;EACnB;EAEA,MAAMrB,aAAaA,CAAA,EAKhB;IACD,MAAM,CAACC,UAAU,EAAEqB,MAAM,EAAEC,WAAW,CAAC,GAAG,MAAMZ,OAAO,CAACC,GAAG,CAAC,CAC1D,IAAI,CAAC1C,aAAa,CAAC,CAAC,EACpB,IAAI,CAACP,SAAS,CAAC,CAAC,EAChB,IAAI,CAACmB,qBAAqB,CAAC,CAAC,CAC7B,CAAC;IACF,MAAM0C,IAAI,GAAG,IAAI,CAAC/D,OAAO,CAACgE,cAAc;IACxC,MAAMC,MAKL,GAAG;MACFC,MAAM,EAAEH,IAAI;MACZF,MAAM,EAAE,GAAGE,IAAI,IAAIF,MAAM,EAAE;MAC3BrB,UAAU,EAAE,GAAGuB,IAAI,IAAIvB,UAAU;IACnC,CAAC;IACD,MAAM;MAAE2B,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS;IAAE,CAAC,GAAG,IAAI,CAACnE,OAAO;IACxE,IAAImE,eAAe,CAACC,QAAQ,CAACP,MAAM,CAAC,EAAE;MACpC,MAAMQ,OAAO,GACXlE,OAAO,CAACC,GAAG,CAACkE,wBAAwB,IAAIR,WAAW,CAAC5B,QAAQ,CAACmC,OAAO;MACtE,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAItD,KAAK,CACb,8BAA8BvB,IAAI,CAAC+E,QAAQ,CAACpE,OAAO,CAACqE,GAAG,CAAC,CAAC,EAAEV,WAAW,CAACvC,IAAI,CAAC,EAC9E,CAAC;MACH;MACA0C,MAAM,CAACI,OAAO,GAAG,GAAGN,IAAI,IAAIM,OAAO,EAAE;IACvC;IACA,OAAOJ,MAAM;EACf;EAEA,MAAML,IAAIA,CAAA,EAAG;IACX,MAAM;MAAEhD;IAAU,CAAC,GAAG,IAAI,CAACZ,OAAO;IAClC,MAAM,CAACwD,OAAO,EAAE;MAAEhB;IAAW,CAAC,CAAC,GAAG,MAAMU,OAAO,CAACC,GAAG,CAAC,CAClD,IAAI,CAAC/B,UAAU,CAAC,CAAC,EACjB,IAAI,CAACmB,aAAa,CAAC,CAAC,EACpB3C,UAAU,CAAC;MAAEgB;IAAU,CAAC,CAAC,CAC1B,CAAC;IACF,IAAI;MACF,MAAMtB,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAEkD,UAAU,EAAE,GAAGgB,OAAO,IAAIhB,UAAU,EAAE,CAAC,EAAE;QACrEc,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,MAAM;MACN,MAAMhE,KAAK,CACT,QAAQ,EACR,CAAC,KAAK,EAAE,IAAI,EAAEkD,UAAU,EAAE,GAAGgB,OAAO,IAAIhB,UAAU,EAAE,CAAC,EACrD;QAAEc,KAAK,EAAE;MAAU,CACrB,CAAC;IACH;IACA,MAAMhE,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAGkE,OAAO,IAAIhB,UAAU,EAAE,CAAC,EAAE;MAC1Dc,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEA,MAAMmB,OAAOA,CAAA,EAAG;IACd,MAAM,CAACjC,UAAU,EAAEgB,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMP,OAAO,CAACC,GAAG,CAAC,CACpD,IAAI,CAAC1C,aAAa,CAAC,CAAC,EACpB,IAAI,CAACW,UAAU,CAAC,CAAC,EACjB,IAAI,CAACmB,aAAa,CAAC,CAAC,CACrB,CAAC;IACF,MAAMtB,GAAG,GAAG,IAAI7B,SAAS,CAAC,CAAC;IAE3B,MAAM;MAAE4E;IAAe,CAAC,GAAG,IAAI,CAAChE,OAAO;IAEvC,MAAM;MAAE0E,MAAM,EAAE,CAACC,KAAK,CAAC,GAAG;IAAG,CAAC,GAAG,MAAM1D,GAAG,CAACH,IAAI,CAC7C,IAAI3B,oBAAoB,CAAC;MACvB6E,cAAc;MACdY,QAAQ,EAAE,CAAC;QAAEC,QAAQ,EAAErC;MAAW,CAAC;IACrC,CAAC,CACH,CAAC;;IAED;IACA,MAAMsC,aAAa,GAAGH,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,aAAa;IAE1C,IAAI,CAACA,aAAa,EAAE;MAClB,MAAM,IAAI/D,KAAK,CACb,oCAAoCiD,cAAc,IAAIxB,UAAU,EAClE,CAAC;IACH;IAEA,IAAIsC,aAAa,EAAE;MACjB;MACA,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACxB,IAAI,CAAC,EAA2B;QAAA,IAAAyB,SAAA;QAC5D,IAAIH,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,YAAY,EAAE;QAC9C,MAAM9B,GAAG,IAAAiC,SAAA,GAAGzB,IAAI,CAACsB,GAAG,CAAC,cAAAG,SAAA,uBAATA,SAAA,CAAWC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAClC,GAAG,EAAE;QACV;QACAmC,OAAO,CAACC,KAAK,CAAC,cAAc7B,OAAO,IAAIC,IAAI,CAACsB,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI;UACF,MAAM9D,GAAG,CAACH,IAAI,CACZ,IAAIzB,eAAe,CAAC;YAClB2E,cAAc;YACdc,aAAa;YACbD,QAAQ,EAAE5B,GAAG,CAACqC,SAAS,CAACrC,GAAG,CAACsC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;UAC9C,CAAC,CACH,CAAC;QACH,CAAC,CAAC,OAAOF,KAAK,EAAE;UACd,IACEA,KAAK,YAAYL,MAAM,IACvB,MAAM,IAAIK,KAAK,IACfA,KAAK,CAACG,IAAI,KAAK,6BAA6B,EAC5C;YACA,MAAMH,KAAK;UACb;QACF;MACF;IACF;EACF;EAEA,MAAMhC,WAAWA,CAACjD,GAAG,GAAGD,OAAO,CAACC,GAAG,EAAE;IACnC,MAAM;MAAEqF;IAAU,CAAC,GAAGrF,GAAG;IACzB,IAAIqF,SAAS,EAAE,OAAOA,SAAS;IAC/B,IAAI;MACF,MAAMC,OAAO,GAAG7F,EAAE,CAAC6F,OAAO,CAAC,CAAC;MAC5B,MAAMC,KAAK,GAAG,MAAMpG,EAAE,CAAC8C,QAAQ,CAAC,GAAGqD,OAAO,SAAS,EAAE,MAAM,CAAC;MAC5D,MAAME,KAAK,GAAG,wCAAwC,CAACC,IAAI,CAACF,KAAK,CAAC;MAClE,IAAIC,KAAK,EAAE,OAAOA,KAAK,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,MAAM;MACN;IAAA;IAEF,MAAM,IAAI7E,KAAK,CAAC,oDAAoD,CAAC;EACvE;AACF","ignoreList":[]}
|
package/package.json
CHANGED
package/src/ECRDeployer.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts'
|
|
|
11
11
|
import { once } from './once.ts'
|
|
12
12
|
import loginToECR from './loginToECR.ts'
|
|
13
13
|
import os from 'os'
|
|
14
|
+
import ecrImageExists from './ecrImageExists.ts'
|
|
14
15
|
|
|
15
16
|
export interface ECRDeployerOptions {
|
|
16
17
|
awsConfig?: ECRClientConfig
|
|
@@ -23,6 +24,18 @@ export interface ECRDeployerOptions {
|
|
|
23
24
|
* The name of the ECR repository
|
|
24
25
|
*/
|
|
25
26
|
repositoryName: string
|
|
27
|
+
/**
|
|
28
|
+
* Options for {@link ECRDeployer#build}. If a custom function is given,
|
|
29
|
+
* it will be called instead of running `docker build`.
|
|
30
|
+
*/
|
|
31
|
+
build?:
|
|
32
|
+
| (BuildOptions & { args?: string[] })
|
|
33
|
+
| ((options: {
|
|
34
|
+
/**
|
|
35
|
+
* The tag to apply to the local docker image
|
|
36
|
+
*/
|
|
37
|
+
tag: string
|
|
38
|
+
}) => Promise<void>)
|
|
26
39
|
}
|
|
27
40
|
|
|
28
41
|
/**
|
|
@@ -42,13 +55,11 @@ export interface BuildOptions {
|
|
|
42
55
|
/**
|
|
43
56
|
* Class that implements our conventional process for deploying docker images to ECR.
|
|
44
57
|
*
|
|
45
|
-
* The CI build step should build the docker image
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* By default {@link build} assumes that your `Dockerfile` takes an `NPM_TOKEN` arg,
|
|
51
|
-
* if not you can call `build({ noNpmTokenArg: true })`.
|
|
58
|
+
* The CI build step should build and push the docker image if necessary; you can use
|
|
59
|
+
* {@link buildAndPushIfNecessary}. If you need to customize the build you can pass
|
|
60
|
+
* options or even a custom function in {@link ECRDeployerOptions.build}, or you can
|
|
61
|
+
* even call {@link isPushed}, {@link build}, {@link push}, and {@link getNpmToken}
|
|
62
|
+
* yourself.
|
|
52
63
|
*
|
|
53
64
|
* The CI release step should call {@link release} to add tags for the git branch and
|
|
54
65
|
* the `version` in your `package.json`.
|
|
@@ -137,28 +148,60 @@ export class ECRDeployer {
|
|
|
137
148
|
options = args
|
|
138
149
|
args = []
|
|
139
150
|
}
|
|
151
|
+
const buildOptions = this.options.build
|
|
140
152
|
|
|
141
153
|
const [npmToken, tag] = await Promise.all([
|
|
142
|
-
|
|
154
|
+
(
|
|
155
|
+
(options?.noNpmTokenArg ??
|
|
156
|
+
(typeof buildOptions === 'function' ? undefined : (
|
|
157
|
+
buildOptions?.noNpmTokenArg
|
|
158
|
+
)))
|
|
159
|
+
) ?
|
|
160
|
+
undefined
|
|
161
|
+
: this.getNpmToken(),
|
|
143
162
|
this.getLocalDockerTag(),
|
|
144
163
|
])
|
|
164
|
+
if (typeof buildOptions === 'function') {
|
|
165
|
+
await buildOptions({ tag })
|
|
166
|
+
return
|
|
167
|
+
}
|
|
145
168
|
|
|
146
169
|
await spawn(
|
|
147
170
|
'docker',
|
|
148
171
|
[
|
|
149
172
|
'build',
|
|
150
|
-
options?.path ?? '.',
|
|
173
|
+
options?.path ?? buildOptions?.path ?? '.',
|
|
151
174
|
...(npmToken ?
|
|
152
175
|
['--build-arg', `NPM_TOKEN=${await this.getNpmToken()}`]
|
|
153
176
|
: []),
|
|
154
177
|
'--tag',
|
|
155
178
|
tag,
|
|
179
|
+
...(buildOptions?.args || []),
|
|
156
180
|
...args,
|
|
157
181
|
],
|
|
158
182
|
{ stdio: 'inherit' }
|
|
159
183
|
)
|
|
160
184
|
}
|
|
161
185
|
|
|
186
|
+
async isPushed() {
|
|
187
|
+
const [ecrHost, tags] = await Promise.all([
|
|
188
|
+
this.getECRHost(),
|
|
189
|
+
this.getDockerTags(),
|
|
190
|
+
])
|
|
191
|
+
const { awsConfig } = this.options
|
|
192
|
+
|
|
193
|
+
return await ecrImageExists({
|
|
194
|
+
awsConfig,
|
|
195
|
+
imageUri: `${ecrHost}/${tags.commitHash}`,
|
|
196
|
+
})
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async buildAndPushIfNecessary() {
|
|
200
|
+
if (await this.isPushed()) return
|
|
201
|
+
await this.build()
|
|
202
|
+
await this.push()
|
|
203
|
+
}
|
|
204
|
+
|
|
162
205
|
async getDockerTags(): Promise<{
|
|
163
206
|
latest: string
|
|
164
207
|
branch: string
|