@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 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 (you may want to use {@link build},
31
- * or {@link getLocalDockerTag} and {@link getNpmToken} if running the build command
32
- * yourself) and then call {@link push} to push the image to ECR tagged with the git
33
- * commit hash.
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;
@@ -1 +1 @@
1
- {"version":3,"file":"ECRDeployer.d.mts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","BuildOptions","path","noNpmTokenArg","ECRDeployer","options","getBranch","Promise","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","getLocalDockerTag","build","args","getDockerTags","latest","branch","commitHash","version","push","release","getNpmToken","env","NodeJS","ProcessEnv"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,eAAe,QAEV,qBAAqB;AAS5B,OAAM,UAAWC,kBAAkB;EACjCC,SAAS,CAAC,EAAEF,eAAe;EAC3B;;;;EAIAG,eAAe,CAAC,EAAE,MAAM,EAAE;EAC1B;;;EAGAC,cAAc,EAAE,MAAM;;AAGxB;;;AAGA,OAAM,UAAWC,YAAY;EAC3B;;;EAGAC,IAAI,CAAC,EAAE,MAAM;EACb;;;EAGAC,aAAa,CAAC,EAAE,OAAO;;AAGzB;;;;;;;;;;;;;;;;;AAiBA,qBAAaC,WAAW;EACtBC,OAAO,EAAER,kBAAkB;cAEfQ,OAAO,EAAER,kBAAkB;EAIjCS,SAASA,CAAA,GAAAC,OAAA;EAWTC,aAAaA,CAAA,GAAAD,OAAA;EAMnB,QAAQE,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,iBAAiBA,CAAA,GAAAN,OAAA;EAIjBO,KAAKA,CAACT,OAAsB,CAAd,EAAEJ,YAAY,GAAGM,OAAO,CAAC,IAAI,CAAC;EAC5CO,KAAKA,CAACC,IAAI,EAAE,MAAM,EAAE,EAAEV,OAAsB,CAAd,EAAEJ,YAAY,GAAGM,OAAO,CAAC,IAAI,CAAC;EA+B5DS,aAAaA,CAAA,GAAIT,OAAO,CAAC;IAC7BU,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAd,OAAA;EAuBJe,OAAOA,CAAA,GAAAf,OAAA;EAuDPgB,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAnB,OAAA","ignoreList":[]}
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 (you may want to use {@link build},
31
- * or {@link getLocalDockerTag} and {@link getNpmToken} if running the build command
32
- * yourself) and then call {@link push} to push the image to ECR tagged with the git
33
- * commit hash.
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;
@@ -1 +1 @@
1
- {"version":3,"file":"ECRDeployer.d.ts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","BuildOptions","path","noNpmTokenArg","ECRDeployer","options","getBranch","Promise","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","getLocalDockerTag","build","args","getDockerTags","latest","branch","commitHash","version","push","release","getNpmToken","env","NodeJS","ProcessEnv"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,eAAe,QAEV,qBAAqB;AAS5B,OAAM,UAAWC,kBAAkB;EACjCC,SAAS,CAAC,EAAEF,eAAe;EAC3B;;;;EAIAG,eAAe,CAAC,EAAE,MAAM,EAAE;EAC1B;;;EAGAC,cAAc,EAAE,MAAM;;AAGxB;;;AAGA,OAAM,UAAWC,YAAY;EAC3B;;;EAGAC,IAAI,CAAC,EAAE,MAAM;EACb;;;EAGAC,aAAa,CAAC,EAAE,OAAO;;AAGzB;;;;;;;;;;;;;;;;;AAiBA,qBAAaC,WAAW;EACtBC,OAAO,EAAER,kBAAkB;cAEfQ,OAAO,EAAER,kBAAkB;EAIjCS,SAASA,CAAA,GAAAC,OAAA;EAWTC,aAAaA,CAAA,GAAAD,OAAA;EAMnB,QAAQE,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,iBAAiBA,CAAA,GAAAN,OAAA;EAIjBO,KAAKA,CAACT,OAAsB,CAAd,EAAEJ,YAAY,GAAGM,OAAO,CAAC,IAAI,CAAC;EAC5CO,KAAKA,CAACC,IAAI,EAAE,MAAM,EAAE,EAAEV,OAAsB,CAAd,EAAEJ,YAAY,GAAGM,OAAO,CAAC,IAAI,CAAC;EA+B5DS,aAAaA,CAAA,GAAIT,OAAO,CAAC;IAC7BU,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAd,OAAA;EAuBJe,OAAOA,CAAA,GAAAf,OAAA;EAuDPgB,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAnB,OAAA","ignoreList":[]}
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 (you may want to use {@link build},
30
- * or {@link getLocalDockerTag} and {@link getNpmToken} if running the build command
31
- * yourself) and then call {@link push} to push the image to ECR tagged with the git
32
- * commit hash.
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 && _options.noNpmTokenArg ? undefined : this.getNpmToken(), this.getLocalDockerTag()]);
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 = 3;
330
+ _context9.next = 5;
320
331
  break;
321
332
  }
322
333
  _t11 = "NPM_TOKEN=";
323
- _context9.next = 2;
334
+ _context9.next = 4;
324
335
  return this.getNpmToken();
325
- case 2:
336
+ case 4:
326
337
  _t12 = _t11.concat.call(_t11, _context9.sent);
327
338
  _t10 = ['--build-arg', _t12];
328
- _context9.next = 4;
339
+ _context9.next = 6;
329
340
  break;
330
- case 3:
341
+ case 5:
331
342
  _t10 = [];
332
- case 4:
333
- _context9.next = 5;
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 5:
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: "getDockerTags",
360
+ key: "isPushed",
350
361
  value: function () {
351
- var _getDockerTags = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
352
- var _yield$Promise$all3, _yield$Promise$all4, commitHash, branch, packageJson, base, result, _this$options$release, releaseBranches, version;
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.getCommitHash(), this.getBranch(), this.getProjectPackageJson()]);
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, 3);
361
- commitHash = _yield$Promise$all4[0];
362
- branch = _yield$Promise$all4[1];
363
- packageJson = _yield$Promise$all4[2];
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
- _context0.next = 3;
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
- _context0.next = 2;
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 _context0.abrupt("return", result);
461
+ return _context10.abrupt("return", result);
385
462
  case 4:
386
463
  case "end":
387
- return _context0.stop();
464
+ return _context10.stop();
388
465
  }
389
- }, _callee0, this);
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 _callee1() {
400
- var awsConfig, _yield$Promise$all5, _yield$Promise$all6, ecrHost, commitHash, _t13;
401
- return _regenerator["default"].wrap(function (_context1) {
402
- while (1) switch (_context1.prev = _context1.next) {
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
- _context1.next = 1;
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$all5 = _context1.sent;
411
- _yield$Promise$all6 = (0, _slicedToArray2["default"])(_yield$Promise$all5, 2);
412
- ecrHost = _yield$Promise$all6[0];
413
- commitHash = _yield$Promise$all6[1].commitHash;
414
- _context1.prev = 2;
415
- _context1.next = 3;
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
- _context1.next = 5;
497
+ _context11.next = 5;
421
498
  break;
422
499
  case 4:
423
- _context1.prev = 4;
424
- _t13 = _context1["catch"](2);
425
- _context1.next = 5;
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
- _context1.next = 6;
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 _context1.stop();
513
+ return _context11.stop();
437
514
  }
438
- }, _callee1, this, [[2, 4]]);
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 _callee10() {
449
- var _yield$Promise$all7, _yield$Promise$all8, 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;
450
- return _regenerator["default"].wrap(function (_context10) {
451
- while (1) switch (_context10.prev = _context10.next) {
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
- _context10.next = 1;
530
+ _context12.next = 1;
454
531
  return Promise.all([this.getCommitHash(), this.getECRHost(), this.getDockerTags()]);
455
532
  case 1:
456
- _yield$Promise$all7 = _context10.sent;
457
- _yield$Promise$all8 = (0, _slicedToArray2["default"])(_yield$Promise$all7, 3);
458
- commitHash = _yield$Promise$all8[0];
459
- ecrHost = _yield$Promise$all8[1];
460
- tags = _yield$Promise$all8[2];
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
- _context10.next = 2;
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 = _context10.sent;
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
- _context10.next = 3;
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
- _context10.next = 11;
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
- _context10.next = 11;
568
+ _context12.next = 11;
492
569
  break;
493
570
  }
494
571
  key = _arr[_i];
495
572
  if (!(key === 'latest' || key === 'commitHash')) {
496
- _context10.next = 5;
573
+ _context12.next = 5;
497
574
  break;
498
575
  }
499
- return _context10.abrupt("continue", 10);
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
- _context10.next = 6;
580
+ _context12.next = 6;
504
581
  break;
505
582
  }
506
- return _context10.abrupt("continue", 10);
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
- _context10.prev = 7;
511
- _context10.next = 8;
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
- _context10.next = 10;
595
+ _context12.next = 10;
519
596
  break;
520
597
  case 9:
521
- _context10.prev = 9;
522
- _t14 = _context10["catch"](7);
598
+ _context12.prev = 9;
599
+ _t14 = _context12["catch"](7);
523
600
  if (!(_t14 instanceof Object && 'code' in _t14 && _t14.code !== 'ImageAlreadyExistsException')) {
524
- _context10.next = 10;
601
+ _context12.next = 10;
525
602
  break;
526
603
  }
527
604
  throw _t14;
528
605
  case 10:
529
606
  _i++;
530
- _context10.next = 4;
607
+ _context12.next = 4;
531
608
  break;
532
609
  case 11:
533
610
  case "end":
534
- return _context10.stop();
611
+ return _context12.stop();
535
612
  }
536
- }, _callee10, this, [[7, 9]]);
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 _callee11() {
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
- _args11 = arguments,
629
+ _args13 = arguments,
553
630
  _t15;
554
- return _regenerator["default"].wrap(function (_context11) {
555
- while (1) switch (_context11.prev = _context11.next) {
631
+ return _regenerator["default"].wrap(function (_context13) {
632
+ while (1) switch (_context13.prev = _context13.next) {
556
633
  case 0:
557
- env = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : process.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
- _context11.next = 1;
637
+ _context13.next = 1;
561
638
  break;
562
639
  }
563
- return _context11.abrupt("return", NPM_TOKEN);
640
+ return _context13.abrupt("return", NPM_TOKEN);
564
641
  case 1:
565
- _context11.prev = 1;
642
+ _context13.prev = 1;
566
643
  homedir = _os["default"].homedir();
567
- _context11.next = 2;
644
+ _context13.next = 2;
568
645
  return _promises["default"].readFile("".concat(homedir, "/.npmrc"), 'utf8');
569
646
  case 2:
570
- npmrc = _context11.sent;
647
+ npmrc = _context13.sent;
571
648
  match = /registry\.npmjs\.org\/:_authToken=(.+)/.exec(npmrc);
572
649
  if (!match) {
573
- _context11.next = 3;
650
+ _context13.next = 3;
574
651
  break;
575
652
  }
576
- return _context11.abrupt("return", match[1]);
653
+ return _context13.abrupt("return", match[1]);
577
654
  case 3:
578
- _context11.next = 5;
655
+ _context13.next = 5;
579
656
  break;
580
657
  case 4:
581
- _context11.prev = 4;
582
- _t15 = _context11["catch"](1);
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 _context11.stop();
664
+ return _context13.stop();
588
665
  }
589
- }, _callee11, null, [[1, 4]]);
666
+ }, _callee13, null, [[1, 4]]);
590
667
  }));
591
668
  function getNpmToken() {
592
669
  return _getNpmToken.apply(this, arguments);
@@ -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 (you may want to use {@link build},
18
- * or {@link getLocalDockerTag} and {@link getNpmToken} if running the build command
19
- * yourself) and then call {@link push} to push the image to ECR tagged with the git
20
- * commit hash.
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 [npmToken, tag] = await Promise.all([(_options = options) !== null && _options !== void 0 && _options.noNpmTokenArg ? undefined : this.getNpmToken(), this.getLocalDockerTag()]);
91
- await spawn('docker', ['build', ((_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.path) ?? '.', ...(npmToken ? ['--build-arg', `NPM_TOKEN=${await this.getNpmToken()}`] : []), '--tag', tag, ...args], {
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;
@@ -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","push","ecrHost","release","tags","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":"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","ignoreList":[]}
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":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jcoreio/aws-ecr-utils",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "utilities for working with AWS Elastic Container Registry",
5
5
  "sideEffects": false,
6
6
  "repository": {
@@ -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 (you may want to use {@link build},
46
- * or {@link getLocalDockerTag} and {@link getNpmToken} if running the build command
47
- * yourself) and then call {@link push} to push the image to ECR tagged with the git
48
- * commit hash.
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
- options?.noNpmTokenArg ? undefined : this.getNpmToken(),
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