@jcoreio/aws-ecr-utils 2.1.0 → 2.2.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.
Files changed (87) hide show
  1. package/ECRDeployer.d.mts +46 -0
  2. package/ECRDeployer.d.mts.map +1 -0
  3. package/ECRDeployer.d.ts +46 -0
  4. package/ECRDeployer.d.ts.map +1 -0
  5. package/ECRDeployer.js +513 -0
  6. package/ECRDeployer.js.map +1 -0
  7. package/ECRDeployer.mjs +171 -0
  8. package/ECRDeployer.mjs.map +1 -0
  9. package/checkECRImageAccess.d.mts +1 -1
  10. package/checkECRImageAccess.d.mts.map +1 -1
  11. package/checkECRImageAccess.d.ts +1 -1
  12. package/checkECRImageAccess.d.ts.map +1 -1
  13. package/checkECRImageAccess.js +3 -3
  14. package/checkECRImageAccess.js.map +1 -1
  15. package/checkECRImageAccess.mjs +3 -3
  16. package/checkECRImageAccess.mjs.map +1 -1
  17. package/checkECRRepositoryPolicy.d.mts +1 -1
  18. package/checkECRRepositoryPolicy.d.mts.map +1 -1
  19. package/checkECRRepositoryPolicy.d.ts +1 -1
  20. package/checkECRRepositoryPolicy.d.ts.map +1 -1
  21. package/checkECRRepositoryPolicy.js +2 -2
  22. package/checkECRRepositoryPolicy.js.map +1 -1
  23. package/checkECRRepositoryPolicy.mjs +2 -2
  24. package/checkECRRepositoryPolicy.mjs.map +1 -1
  25. package/copyECRImage.d.mts +1 -1
  26. package/copyECRImage.d.mts.map +1 -1
  27. package/copyECRImage.d.ts +1 -1
  28. package/copyECRImage.d.ts.map +1 -1
  29. package/copyECRImage.js.map +1 -1
  30. package/ecrImageExists.d.mts +1 -1
  31. package/ecrImageExists.d.mts.map +1 -1
  32. package/ecrImageExists.d.ts +1 -1
  33. package/ecrImageExists.d.ts.map +1 -1
  34. package/index.d.mts +1 -0
  35. package/index.d.mts.map +1 -1
  36. package/index.d.ts +1 -0
  37. package/index.d.ts.map +1 -1
  38. package/index.js +7 -0
  39. package/index.js.map +1 -1
  40. package/index.mjs +1 -0
  41. package/index.mjs.map +1 -1
  42. package/isInteractive.d.mts +2 -0
  43. package/isInteractive.d.mts.map +1 -0
  44. package/isInteractive.d.ts +2 -0
  45. package/isInteractive.d.ts.map +1 -0
  46. package/isInteractive.js +8 -0
  47. package/isInteractive.js.map +1 -0
  48. package/isInteractive.mjs +2 -0
  49. package/isInteractive.mjs.map +1 -0
  50. package/loginToECR.d.mts +2 -2
  51. package/loginToECR.d.mts.map +1 -1
  52. package/loginToECR.d.ts +2 -2
  53. package/loginToECR.d.ts.map +1 -1
  54. package/loginToECR.js +25 -13
  55. package/loginToECR.js.map +1 -1
  56. package/loginToECR.mjs +1 -4
  57. package/loginToECR.mjs.map +1 -1
  58. package/once.d.mts +2 -0
  59. package/once.d.mts.map +1 -0
  60. package/once.d.ts +2 -0
  61. package/once.d.ts.map +1 -0
  62. package/once.js +14 -0
  63. package/once.js.map +1 -0
  64. package/once.mjs +8 -0
  65. package/once.mjs.map +1 -0
  66. package/package.json +5 -5
  67. package/src/ECRDeployer.ts +237 -0
  68. package/src/checkECRImageAccess.ts +7 -7
  69. package/src/checkECRRepositoryPolicy.ts +3 -3
  70. package/src/copyECRImage.ts +4 -4
  71. package/src/ecrImageExists.ts +1 -1
  72. package/src/formatECRImageUri.ts +1 -1
  73. package/src/index.ts +12 -11
  74. package/src/isInteractive.ts +2 -0
  75. package/src/loginToECR.ts +4 -7
  76. package/src/once.ts +7 -0
  77. package/src/tagECRImage.ts +2 -2
  78. package/src/upsertECRRepository.ts +1 -1
  79. package/tagECRImage.d.mts +1 -1
  80. package/tagECRImage.d.mts.map +1 -1
  81. package/tagECRImage.d.ts +1 -1
  82. package/tagECRImage.d.ts.map +1 -1
  83. package/tagECRImage.js.map +1 -1
  84. package/upsertECRRepository.d.mts +1 -1
  85. package/upsertECRRepository.d.mts.map +1 -1
  86. package/upsertECRRepository.d.ts +1 -1
  87. package/upsertECRRepository.d.ts.map +1 -1
@@ -0,0 +1,46 @@
1
+ import { ECRClientConfig } from '@aws-sdk/client-ecr';
2
+ export interface ECRDeployerOptions {
3
+ awsConfig?: ECRClientConfig;
4
+ /**
5
+ * {@link ECRDeployer#release} will only add a version tag if the current git branch
6
+ * is one of these branches (defaults to `['master', 'main', 'release']`)
7
+ */
8
+ releaseBranches?: string[];
9
+ /**
10
+ * The name of the ECR repository
11
+ */
12
+ repositoryName: string;
13
+ }
14
+ /**
15
+ * Class that implements our conventional process for deploying docker images to ECR.
16
+ *
17
+ * The CI build step should build the docker image (you may want to use {@link getNpmToken}
18
+ * to pass an `NPM_TOKEN` build arg) and then call {@link push} to push the image to
19
+ * ECR tagged with the git commit hash.
20
+ *
21
+ * The CI release step should call {@link release} to add tags for the git branch and
22
+ * the `version` in your `package.json`.
23
+ *
24
+ * You may use the `OVERRIDE_ECR_BRANCH_TAG` and `OVERRIDE_ECR_VERSION_TAG` environment
25
+ * variables to force specific tags for the branch and version.
26
+ */
27
+ export declare class ECRDeployer {
28
+ options: ECRDeployerOptions;
29
+ constructor(options: ECRDeployerOptions);
30
+ getBranch(): Promise<string>;
31
+ getCommitHash(): Promise<string>;
32
+ private getAWSAccountId;
33
+ private getRegion;
34
+ private getECRHost;
35
+ private getProjectPackageJson;
36
+ getDockerTags(): Promise<{
37
+ latest: string;
38
+ branch: string;
39
+ commitHash: string;
40
+ version?: string;
41
+ }>;
42
+ push(): Promise<void>;
43
+ release(): Promise<void>;
44
+ getNpmToken(env?: NodeJS.ProcessEnv): Promise<string>;
45
+ }
46
+ //# sourceMappingURL=ECRDeployer.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECRDeployer.d.mts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","ECRDeployer","options","getBranch","Promise","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","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;;;;;;;;;;;;;AAaA,qBAAaC,WAAW;EACtBC,OAAO,EAAEL,kBAAkB;cAEfK,OAAO,EAAEL,kBAAkB;EAIjCM,SAASA,CAAA,GAAAC,OAAA;EAWTC,aAAaA,CAAA,GAAAD,OAAA;EAQnB,QAAQE,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,aAAaA,CAAA,GAAIN,OAAO,CAAC;IAC7BO,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAX,OAAA;EAuBJY,OAAOA,CAAA,GAAAZ,OAAA;EAuDPa,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAhB,OAAA","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import { ECRClientConfig } from '@aws-sdk/client-ecr';
2
+ export interface ECRDeployerOptions {
3
+ awsConfig?: ECRClientConfig;
4
+ /**
5
+ * {@link ECRDeployer#release} will only add a version tag if the current git branch
6
+ * is one of these branches (defaults to `['master', 'main', 'release']`)
7
+ */
8
+ releaseBranches?: string[];
9
+ /**
10
+ * The name of the ECR repository
11
+ */
12
+ repositoryName: string;
13
+ }
14
+ /**
15
+ * Class that implements our conventional process for deploying docker images to ECR.
16
+ *
17
+ * The CI build step should build the docker image (you may want to use {@link getNpmToken}
18
+ * to pass an `NPM_TOKEN` build arg) and then call {@link push} to push the image to
19
+ * ECR tagged with the git commit hash.
20
+ *
21
+ * The CI release step should call {@link release} to add tags for the git branch and
22
+ * the `version` in your `package.json`.
23
+ *
24
+ * You may use the `OVERRIDE_ECR_BRANCH_TAG` and `OVERRIDE_ECR_VERSION_TAG` environment
25
+ * variables to force specific tags for the branch and version.
26
+ */
27
+ export declare class ECRDeployer {
28
+ options: ECRDeployerOptions;
29
+ constructor(options: ECRDeployerOptions);
30
+ getBranch(): Promise<string>;
31
+ getCommitHash(): Promise<string>;
32
+ private getAWSAccountId;
33
+ private getRegion;
34
+ private getECRHost;
35
+ private getProjectPackageJson;
36
+ getDockerTags(): Promise<{
37
+ latest: string;
38
+ branch: string;
39
+ commitHash: string;
40
+ version?: string;
41
+ }>;
42
+ push(): Promise<void>;
43
+ release(): Promise<void>;
44
+ getNpmToken(env?: NodeJS.ProcessEnv): Promise<string>;
45
+ }
46
+ //# sourceMappingURL=ECRDeployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ECRDeployer.d.ts","names":["ECRClientConfig","ECRDeployerOptions","awsConfig","releaseBranches","repositoryName","ECRDeployer","options","getBranch","Promise","getCommitHash","getAWSAccountId","getRegion","getECRHost","getProjectPackageJson","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;;;;;;;;;;;;;AAaA,qBAAaC,WAAW;EACtBC,OAAO,EAAEL,kBAAkB;cAEfK,OAAO,EAAEL,kBAAkB;EAIjCM,SAASA,CAAA,GAAAC,OAAA;EAWTC,aAAaA,CAAA,GAAAD,OAAA;EAQnB,QAAQE,eAAe;UAOTC,SAAS;UAYTC,UAAU;UAIVC,qBAAqB;EAoB7BC,aAAaA,CAAA,GAAIN,OAAO,CAAC;IAC7BO,MAAM,EAAE,MAAM;IACdC,MAAM,EAAE,MAAM;IACdC,UAAU,EAAE,MAAM;IAClBC,OAAO,CAAC,EAAE,MAAM;GACjB,CAAC;EA+BIC,IAAIA,CAAA,GAAAX,OAAA;EAuBJY,OAAOA,CAAA,GAAAZ,OAAA;EAuDPa,WAAWA,CAACC,GAAiB,CAAd,EAAAC,MAAA,CAAAC,UAAc,GAAAhB,OAAA","ignoreList":[]}
package/ECRDeployer.js ADDED
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ECRDeployer = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _clientEcr = require("@aws-sdk/client-ecr");
15
+ var _promisifyChildProcess = require("promisify-child-process");
16
+ var _promises = _interopRequireDefault(require("fs/promises"));
17
+ var _path = _interopRequireDefault(require("path"));
18
+ var _clientSts = require("@aws-sdk/client-sts");
19
+ var _once = require("./once.js");
20
+ var _loginToECR = _interopRequireDefault(require("./loginToECR.js"));
21
+ var _os = _interopRequireDefault(require("os"));
22
+ /**
23
+ * Class that implements our conventional process for deploying docker images to ECR.
24
+ *
25
+ * The CI build step should build the docker image (you may want to use {@link getNpmToken}
26
+ * to pass an `NPM_TOKEN` build arg) and then call {@link push} to push the image to
27
+ * ECR tagged with the git commit hash.
28
+ *
29
+ * The CI release step should call {@link release} to add tags for the git branch and
30
+ * the `version` in your `package.json`.
31
+ *
32
+ * You may use the `OVERRIDE_ECR_BRANCH_TAG` and `OVERRIDE_ECR_VERSION_TAG` environment
33
+ * variables to force specific tags for the branch and version.
34
+ */
35
+ var ECRDeployer = exports.ECRDeployer = /*#__PURE__*/function () {
36
+ function ECRDeployer(options) {
37
+ var _this = this;
38
+ (0, _classCallCheck2["default"])(this, ECRDeployer);
39
+ (0, _defineProperty2["default"])(this, "options", void 0);
40
+ (0, _defineProperty2["default"])(this, "getAWSAccountId", (0, _once.once)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
41
+ var sts, _yield$sts$send, Account;
42
+ return _regenerator["default"].wrap(function (_context) {
43
+ while (1) switch (_context.prev = _context.next) {
44
+ case 0:
45
+ sts = new _clientSts.STSClient(_this.options.awsConfig || {});
46
+ _context.next = 1;
47
+ return sts.send(new _clientSts.GetCallerIdentityCommand());
48
+ case 1:
49
+ _yield$sts$send = _context.sent;
50
+ Account = _yield$sts$send.Account;
51
+ if (Account) {
52
+ _context.next = 2;
53
+ break;
54
+ }
55
+ throw new Error("failed to get AWS account id");
56
+ case 2:
57
+ return _context.abrupt("return", Account);
58
+ case 3:
59
+ case "end":
60
+ return _context.stop();
61
+ }
62
+ }, _callee);
63
+ }))));
64
+ this.options = options;
65
+ }
66
+ return (0, _createClass2["default"])(ECRDeployer, [{
67
+ key: "getBranch",
68
+ value: function () {
69
+ var _getBranch = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
70
+ var _t;
71
+ return _regenerator["default"].wrap(function (_context2) {
72
+ while (1) switch (_context2.prev = _context2.next) {
73
+ case 0:
74
+ _t = process.env.OVERRIDE_ECR_BRANCH_TAG;
75
+ if (_t) {
76
+ _context2.next = 2;
77
+ break;
78
+ }
79
+ _context2.next = 1;
80
+ return (0, _promisifyChildProcess.spawn)('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
81
+ encoding: 'utf8'
82
+ });
83
+ case 1:
84
+ _t = _context2.sent.stdout.trim();
85
+ case 2:
86
+ return _context2.abrupt("return", _t);
87
+ case 3:
88
+ case "end":
89
+ return _context2.stop();
90
+ }
91
+ }, _callee2);
92
+ }));
93
+ function getBranch() {
94
+ return _getBranch.apply(this, arguments);
95
+ }
96
+ return getBranch;
97
+ }()
98
+ }, {
99
+ key: "getCommitHash",
100
+ value: function () {
101
+ var _getCommitHash = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
102
+ return _regenerator["default"].wrap(function (_context3) {
103
+ while (1) switch (_context3.prev = _context3.next) {
104
+ case 0:
105
+ _context3.next = 1;
106
+ return (0, _promisifyChildProcess.spawn)('git', ['rev-parse', 'HEAD'], {
107
+ encoding: 'utf8'
108
+ });
109
+ case 1:
110
+ return _context3.abrupt("return", _context3.sent.stdout.trim());
111
+ case 2:
112
+ case "end":
113
+ return _context3.stop();
114
+ }
115
+ }, _callee3);
116
+ }));
117
+ function getCommitHash() {
118
+ return _getCommitHash.apply(this, arguments);
119
+ }
120
+ return getCommitHash;
121
+ }()
122
+ }, {
123
+ key: "getRegion",
124
+ value: function () {
125
+ var _getRegion = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
126
+ var ecr, region;
127
+ return _regenerator["default"].wrap(function (_context4) {
128
+ while (1) switch (_context4.prev = _context4.next) {
129
+ case 0:
130
+ ecr = new _clientEcr.ECRClient(this.options.awsConfig || {});
131
+ _context4.next = 1;
132
+ return ecr.config.region();
133
+ case 1:
134
+ region = _context4.sent;
135
+ if (region) {
136
+ _context4.next = 2;
137
+ break;
138
+ }
139
+ throw new Error("Couldn't get AWS region. Provide the AWS region by either:\n- Setting the AWS_REGION environment variable\n- Putting the region in your ~/.aws/config and setting AWS_SDK_LOAD_CONFIG=true\n");
140
+ case 2:
141
+ return _context4.abrupt("return", region);
142
+ case 3:
143
+ case "end":
144
+ return _context4.stop();
145
+ }
146
+ }, _callee4, this);
147
+ }));
148
+ function getRegion() {
149
+ return _getRegion.apply(this, arguments);
150
+ }
151
+ return getRegion;
152
+ }()
153
+ }, {
154
+ key: "getECRHost",
155
+ value: function () {
156
+ var _getECRHost = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
157
+ var _t2, _t3;
158
+ return _regenerator["default"].wrap(function (_context5) {
159
+ while (1) switch (_context5.prev = _context5.next) {
160
+ case 0:
161
+ _t3 = "";
162
+ _context5.next = 1;
163
+ return this.getAWSAccountId();
164
+ case 1:
165
+ _t2 = _t3.concat.call(_t3, _context5.sent, ".dkr.ecr.");
166
+ _context5.next = 2;
167
+ return this.getRegion();
168
+ case 2:
169
+ return _context5.abrupt("return", _t2.concat.call(_t2, _context5.sent, ".amazonaws.com"));
170
+ case 3:
171
+ case "end":
172
+ return _context5.stop();
173
+ }
174
+ }, _callee5, this);
175
+ }));
176
+ function getECRHost() {
177
+ return _getECRHost.apply(this, arguments);
178
+ }
179
+ return getECRHost;
180
+ }()
181
+ }, {
182
+ key: "getProjectPackageJson",
183
+ value: function () {
184
+ var _getProjectPackageJson = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
185
+ var _yield$import, findUp, file, _t6, _t7, _t8;
186
+ return _regenerator["default"].wrap(function (_context7) {
187
+ while (1) switch (_context7.prev = _context7.next) {
188
+ case 0:
189
+ _context7.next = 1;
190
+ return import('find-up');
191
+ case 1:
192
+ _yield$import = _context7.sent;
193
+ findUp = _yield$import.findUp;
194
+ _context7.next = 2;
195
+ return findUp(/*#__PURE__*/function () {
196
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6(dir) {
197
+ var _t4, _t5;
198
+ return _regenerator["default"].wrap(function (_context6) {
199
+ while (1) switch (_context6.prev = _context6.next) {
200
+ case 0:
201
+ _t4 = !/\/node_modules\//.test(_path["default"].posix.normalize(dir));
202
+ if (!_t4) {
203
+ _context6.next = 2;
204
+ break;
205
+ }
206
+ _context6.next = 1;
207
+ return _promises["default"].stat(_path["default"].join(dir, 'package.json')).then(function (s) {
208
+ return s.isFile();
209
+ }, function () {
210
+ return false;
211
+ });
212
+ case 1:
213
+ _t4 = _context6.sent;
214
+ case 2:
215
+ if (!_t4) {
216
+ _context6.next = 3;
217
+ break;
218
+ }
219
+ _t5 = _path["default"].join(dir, 'package.json');
220
+ _context6.next = 4;
221
+ break;
222
+ case 3:
223
+ _t5 = undefined;
224
+ case 4:
225
+ return _context6.abrupt("return", _t5);
226
+ case 5:
227
+ case "end":
228
+ return _context6.stop();
229
+ }
230
+ }, _callee6);
231
+ }));
232
+ return function (_x) {
233
+ return _ref2.apply(this, arguments);
234
+ };
235
+ }());
236
+ case 2:
237
+ file = _context7.sent;
238
+ if (file) {
239
+ _context7.next = 3;
240
+ break;
241
+ }
242
+ throw new Error("failed to find enclosing project package.json");
243
+ case 3:
244
+ _t6 = file;
245
+ _t7 = JSON;
246
+ _context7.next = 4;
247
+ return _promises["default"].readFile(file, 'utf8');
248
+ case 4:
249
+ _t8 = _t7.parse.call(_t7, _context7.sent);
250
+ return _context7.abrupt("return", {
251
+ file: _t6,
252
+ contents: _t8
253
+ });
254
+ case 5:
255
+ case "end":
256
+ return _context7.stop();
257
+ }
258
+ }, _callee7);
259
+ }));
260
+ function getProjectPackageJson() {
261
+ return _getProjectPackageJson.apply(this, arguments);
262
+ }
263
+ return getProjectPackageJson;
264
+ }()
265
+ }, {
266
+ key: "getDockerTags",
267
+ value: function () {
268
+ var _getDockerTags = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8() {
269
+ var _yield$Promise$all, _yield$Promise$all2, commitHash, branch, packageJson, base, result, _this$options$release, releaseBranches, version;
270
+ return _regenerator["default"].wrap(function (_context8) {
271
+ while (1) switch (_context8.prev = _context8.next) {
272
+ case 0:
273
+ _context8.next = 1;
274
+ return Promise.all([this.getCommitHash(), this.getBranch(), this.getProjectPackageJson()]);
275
+ case 1:
276
+ _yield$Promise$all = _context8.sent;
277
+ _yield$Promise$all2 = (0, _slicedToArray2["default"])(_yield$Promise$all, 3);
278
+ commitHash = _yield$Promise$all2[0];
279
+ branch = _yield$Promise$all2[1];
280
+ packageJson = _yield$Promise$all2[2];
281
+ base = this.options.repositoryName;
282
+ result = {
283
+ latest: base,
284
+ branch: "".concat(base, ":").concat(branch),
285
+ commitHash: "".concat(base, ":").concat(commitHash)
286
+ };
287
+ _this$options$release = this.options.releaseBranches, releaseBranches = _this$options$release === void 0 ? ['master', 'main', 'release'] : _this$options$release;
288
+ if (!releaseBranches.includes(branch)) {
289
+ _context8.next = 3;
290
+ break;
291
+ }
292
+ version = process.env.OVERRIDE_ECR_VERSION_TAG || packageJson.contents.version;
293
+ if (!(typeof version !== 'string')) {
294
+ _context8.next = 2;
295
+ break;
296
+ }
297
+ throw new Error("failed to get version from ".concat(_path["default"].relative(process.cwd(), packageJson.file)));
298
+ case 2:
299
+ result.version = "".concat(base, ":").concat(version);
300
+ case 3:
301
+ return _context8.abrupt("return", result);
302
+ case 4:
303
+ case "end":
304
+ return _context8.stop();
305
+ }
306
+ }, _callee8, this);
307
+ }));
308
+ function getDockerTags() {
309
+ return _getDockerTags.apply(this, arguments);
310
+ }
311
+ return getDockerTags;
312
+ }()
313
+ }, {
314
+ key: "push",
315
+ value: function () {
316
+ var _push = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9() {
317
+ var awsConfig, _yield$Promise$all3, _yield$Promise$all4, ecrHost, commitHash, _t9;
318
+ return _regenerator["default"].wrap(function (_context9) {
319
+ while (1) switch (_context9.prev = _context9.next) {
320
+ case 0:
321
+ awsConfig = this.options.awsConfig;
322
+ _context9.next = 1;
323
+ return Promise.all([this.getECRHost(), this.getDockerTags(), (0, _loginToECR["default"])({
324
+ awsConfig: awsConfig
325
+ })]);
326
+ case 1:
327
+ _yield$Promise$all3 = _context9.sent;
328
+ _yield$Promise$all4 = (0, _slicedToArray2["default"])(_yield$Promise$all3, 2);
329
+ ecrHost = _yield$Promise$all4[0];
330
+ commitHash = _yield$Promise$all4[1].commitHash;
331
+ _context9.prev = 2;
332
+ _context9.next = 3;
333
+ return (0, _promisifyChildProcess.spawn)('docker', ['tag', commitHash, "".concat(ecrHost, "/").concat(commitHash)], {
334
+ stdio: 'inherit'
335
+ });
336
+ case 3:
337
+ _context9.next = 5;
338
+ break;
339
+ case 4:
340
+ _context9.prev = 4;
341
+ _t9 = _context9["catch"](2);
342
+ _context9.next = 5;
343
+ return (0, _promisifyChildProcess.spawn)('docker', ['tag', '-f', commitHash, "".concat(ecrHost, "/").concat(commitHash)], {
344
+ stdio: 'inherit'
345
+ });
346
+ case 5:
347
+ _context9.next = 6;
348
+ return (0, _promisifyChildProcess.spawn)('docker', ['push', "".concat(ecrHost, "/").concat(commitHash)]);
349
+ case 6:
350
+ case "end":
351
+ return _context9.stop();
352
+ }
353
+ }, _callee9, this, [[2, 4]]);
354
+ }));
355
+ function push() {
356
+ return _push.apply(this, arguments);
357
+ }
358
+ return push;
359
+ }()
360
+ }, {
361
+ key: "release",
362
+ value: function () {
363
+ var _release = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
364
+ var _yield$Promise$all5, _yield$Promise$all6, 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, _t0;
365
+ return _regenerator["default"].wrap(function (_context0) {
366
+ while (1) switch (_context0.prev = _context0.next) {
367
+ case 0:
368
+ _context0.next = 1;
369
+ return Promise.all([this.getCommitHash(), this.getECRHost(), this.getDockerTags()]);
370
+ case 1:
371
+ _yield$Promise$all5 = _context0.sent;
372
+ _yield$Promise$all6 = (0, _slicedToArray2["default"])(_yield$Promise$all5, 3);
373
+ commitHash = _yield$Promise$all6[0];
374
+ ecrHost = _yield$Promise$all6[1];
375
+ tags = _yield$Promise$all6[2];
376
+ ecr = new _clientEcr.ECRClient();
377
+ repositoryName = this.options.repositoryName;
378
+ _context0.next = 2;
379
+ return ecr.send(new _clientEcr.BatchGetImageCommand({
380
+ repositoryName: repositoryName,
381
+ imageIds: [{
382
+ imageTag: commitHash
383
+ }]
384
+ }));
385
+ case 2:
386
+ _yield$ecr$send = _context0.sent;
387
+ _yield$ecr$send$image = _yield$ecr$send.images;
388
+ _yield$ecr$send$image2 = _yield$ecr$send$image === void 0 ? [] : _yield$ecr$send$image;
389
+ _yield$ecr$send$image3 = (0, _slicedToArray2["default"])(_yield$ecr$send$image2, 1);
390
+ image = _yield$ecr$send$image3[0];
391
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
392
+ imageManifest = image === null || image === void 0 ? void 0 : image.imageManifest;
393
+ if (imageManifest) {
394
+ _context0.next = 3;
395
+ break;
396
+ }
397
+ throw new Error("failed to get image manifest for ".concat(repositoryName, ":").concat(commitHash));
398
+ case 3:
399
+ if (!imageManifest) {
400
+ _context0.next = 11;
401
+ break;
402
+ }
403
+ _i = 0, _arr = Object.keys(tags);
404
+ case 4:
405
+ if (!(_i < _arr.length)) {
406
+ _context0.next = 11;
407
+ break;
408
+ }
409
+ key = _arr[_i];
410
+ if (!(key === 'latest' || key === 'commitHash')) {
411
+ _context0.next = 5;
412
+ break;
413
+ }
414
+ return _context0.abrupt("continue", 10);
415
+ case 5:
416
+ tag = (_tags$key = tags[key]) === null || _tags$key === void 0 ? void 0 : _tags$key.replace(/^[^:]+:?/, '');
417
+ if (tag) {
418
+ _context0.next = 6;
419
+ break;
420
+ }
421
+ return _context0.abrupt("continue", 10);
422
+ case 6:
423
+ // eslint-disable-next-line no-console
424
+ console.error("Adding tag ".concat(ecrHost, "/").concat(tags[key]));
425
+ _context0.prev = 7;
426
+ _context0.next = 8;
427
+ return ecr.send(new _clientEcr.PutImageCommand({
428
+ repositoryName: repositoryName,
429
+ imageManifest: imageManifest,
430
+ imageTag: tag.substring(tag.indexOf(':') + 1)
431
+ }));
432
+ case 8:
433
+ _context0.next = 10;
434
+ break;
435
+ case 9:
436
+ _context0.prev = 9;
437
+ _t0 = _context0["catch"](7);
438
+ if (!(_t0 instanceof Object && 'code' in _t0 && _t0.code !== 'ImageAlreadyExistsException')) {
439
+ _context0.next = 10;
440
+ break;
441
+ }
442
+ throw _t0;
443
+ case 10:
444
+ _i++;
445
+ _context0.next = 4;
446
+ break;
447
+ case 11:
448
+ case "end":
449
+ return _context0.stop();
450
+ }
451
+ }, _callee0, this, [[7, 9]]);
452
+ }));
453
+ function release() {
454
+ return _release.apply(this, arguments);
455
+ }
456
+ return release;
457
+ }()
458
+ }, {
459
+ key: "getNpmToken",
460
+ value: function () {
461
+ var _getNpmToken = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1() {
462
+ var env,
463
+ NPM_TOKEN,
464
+ homedir,
465
+ npmrc,
466
+ match,
467
+ _args1 = arguments,
468
+ _t1;
469
+ return _regenerator["default"].wrap(function (_context1) {
470
+ while (1) switch (_context1.prev = _context1.next) {
471
+ case 0:
472
+ env = _args1.length > 0 && _args1[0] !== undefined ? _args1[0] : process.env;
473
+ NPM_TOKEN = env.NPM_TOKEN;
474
+ if (!NPM_TOKEN) {
475
+ _context1.next = 1;
476
+ break;
477
+ }
478
+ return _context1.abrupt("return", NPM_TOKEN);
479
+ case 1:
480
+ _context1.prev = 1;
481
+ homedir = _os["default"].homedir();
482
+ _context1.next = 2;
483
+ return _promises["default"].readFile("".concat(homedir, "/.npmrc"), 'utf8');
484
+ case 2:
485
+ npmrc = _context1.sent;
486
+ match = /registry\.npmjs\.org\/:_authToken=(.+)/.exec(npmrc);
487
+ if (!match) {
488
+ _context1.next = 3;
489
+ break;
490
+ }
491
+ return _context1.abrupt("return", match[1]);
492
+ case 3:
493
+ _context1.next = 5;
494
+ break;
495
+ case 4:
496
+ _context1.prev = 4;
497
+ _t1 = _context1["catch"](1);
498
+ case 5:
499
+ throw new Error('Missing process.env.NPM_TOKEN or entry in ~/.npmrc');
500
+ case 6:
501
+ case "end":
502
+ return _context1.stop();
503
+ }
504
+ }, _callee1, null, [[1, 4]]);
505
+ }));
506
+ function getNpmToken() {
507
+ return _getNpmToken.apply(this, arguments);
508
+ }
509
+ return getNpmToken;
510
+ }()
511
+ }]);
512
+ }();
513
+ //# sourceMappingURL=ECRDeployer.js.map
@@ -0,0 +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","_getDockerTags","_callee8","_yield$Promise$all","_yield$Promise$all2","commitHash","branch","packageJson","base","result","_this$options$release","releaseBranches","version","_context8","Promise","all","_slicedToArray2","repositoryName","latest","includes","OVERRIDE_ECR_VERSION_TAG","relative","cwd","getDockerTags","_push","_callee9","_yield$Promise$all3","_yield$Promise$all4","ecrHost","_t9","_context9","loginToECR","stdio","push","_release","_callee0","_yield$Promise$all5","_yield$Promise$all6","tags","_yield$ecr$send","_yield$ecr$send$image","_yield$ecr$send$image2","_yield$ecr$send$image3","image","imageManifest","_i","_arr","_tags$key","tag","_t0","_context0","BatchGetImageCommand","imageIds","imageTag","images","Object","keys","length","replace","console","error","PutImageCommand","substring","indexOf","code","release","_getNpmToken","_callee1","NPM_TOKEN","homedir","npmrc","match","_args1","_t1","_context1","os","exec","getNpmToken"],"sources":["src/ECRDeployer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}