@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.
- package/ECRDeployer.d.mts +46 -0
- package/ECRDeployer.d.mts.map +1 -0
- package/ECRDeployer.d.ts +46 -0
- package/ECRDeployer.d.ts.map +1 -0
- package/ECRDeployer.js +513 -0
- package/ECRDeployer.js.map +1 -0
- package/ECRDeployer.mjs +171 -0
- package/ECRDeployer.mjs.map +1 -0
- package/checkECRImageAccess.d.mts +1 -1
- package/checkECRImageAccess.d.mts.map +1 -1
- package/checkECRImageAccess.d.ts +1 -1
- package/checkECRImageAccess.d.ts.map +1 -1
- package/checkECRImageAccess.js +3 -3
- package/checkECRImageAccess.js.map +1 -1
- package/checkECRImageAccess.mjs +3 -3
- package/checkECRImageAccess.mjs.map +1 -1
- package/checkECRRepositoryPolicy.d.mts +1 -1
- package/checkECRRepositoryPolicy.d.mts.map +1 -1
- package/checkECRRepositoryPolicy.d.ts +1 -1
- package/checkECRRepositoryPolicy.d.ts.map +1 -1
- package/checkECRRepositoryPolicy.js +2 -2
- package/checkECRRepositoryPolicy.js.map +1 -1
- package/checkECRRepositoryPolicy.mjs +2 -2
- package/checkECRRepositoryPolicy.mjs.map +1 -1
- package/copyECRImage.d.mts +1 -1
- package/copyECRImage.d.mts.map +1 -1
- package/copyECRImage.d.ts +1 -1
- package/copyECRImage.d.ts.map +1 -1
- package/copyECRImage.js.map +1 -1
- package/ecrImageExists.d.mts +1 -1
- package/ecrImageExists.d.mts.map +1 -1
- package/ecrImageExists.d.ts +1 -1
- package/ecrImageExists.d.ts.map +1 -1
- package/index.d.mts +1 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +7 -0
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/index.mjs.map +1 -1
- package/isInteractive.d.mts +2 -0
- package/isInteractive.d.mts.map +1 -0
- package/isInteractive.d.ts +2 -0
- package/isInteractive.d.ts.map +1 -0
- package/isInteractive.js +8 -0
- package/isInteractive.js.map +1 -0
- package/isInteractive.mjs +2 -0
- package/isInteractive.mjs.map +1 -0
- package/loginToECR.d.mts +2 -2
- package/loginToECR.d.mts.map +1 -1
- package/loginToECR.d.ts +2 -2
- package/loginToECR.d.ts.map +1 -1
- package/loginToECR.js +25 -13
- package/loginToECR.js.map +1 -1
- package/loginToECR.mjs +1 -4
- package/loginToECR.mjs.map +1 -1
- package/once.d.mts +2 -0
- package/once.d.mts.map +1 -0
- package/once.d.ts +2 -0
- package/once.d.ts.map +1 -0
- package/once.js +14 -0
- package/once.js.map +1 -0
- package/once.mjs +8 -0
- package/once.mjs.map +1 -0
- package/package.json +5 -5
- package/src/ECRDeployer.ts +237 -0
- package/src/checkECRImageAccess.ts +7 -7
- package/src/checkECRRepositoryPolicy.ts +3 -3
- package/src/copyECRImage.ts +4 -4
- package/src/ecrImageExists.ts +1 -1
- package/src/formatECRImageUri.ts +1 -1
- package/src/index.ts +12 -11
- package/src/isInteractive.ts +2 -0
- package/src/loginToECR.ts +4 -7
- package/src/once.ts +7 -0
- package/src/tagECRImage.ts +2 -2
- package/src/upsertECRRepository.ts +1 -1
- package/tagECRImage.d.mts +1 -1
- package/tagECRImage.d.mts.map +1 -1
- package/tagECRImage.d.ts +1 -1
- package/tagECRImage.d.ts.map +1 -1
- package/tagECRImage.js.map +1 -1
- package/upsertECRRepository.d.mts +1 -1
- package/upsertECRRepository.d.mts.map +1 -1
- package/upsertECRRepository.d.ts +1 -1
- package/upsertECRRepository.d.ts.map +1 -1
package/index.js
CHANGED
|
@@ -4,6 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
Object.defineProperty(exports, "ECRDeployer", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _ECRDeployer.ECRDeployer;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
7
13
|
Object.defineProperty(exports, "checkECRImageAccess", {
|
|
8
14
|
enumerable: true,
|
|
9
15
|
get: function get() {
|
|
@@ -81,4 +87,5 @@ var _checkECRRepositoryPolicy = _interopRequireDefault(require("./checkECRReposi
|
|
|
81
87
|
var _checkECRImageAccess = _interopRequireDefault(require("./checkECRImageAccess.js"));
|
|
82
88
|
var _formatECRRepositoryHostname = _interopRequireDefault(require("./formatECRRepositoryHostname.js"));
|
|
83
89
|
var _formatECRImageUri = _interopRequireDefault(require("./formatECRImageUri.js"));
|
|
90
|
+
var _ECRDeployer = require("./ECRDeployer.js");
|
|
84
91
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_copyECRImage","_interopRequireDefault","require","_ecrImageExists","_loginToECR","_tagECRImage","_parseECRImageUri","_parseECRRepositoryHostname","_upsertECRRepository","_checkECRRepositoryPolicy","_checkECRImageAccess","_formatECRRepositoryHostname","_formatECRImageUri"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_copyECRImage","_interopRequireDefault","require","_ecrImageExists","_loginToECR","_tagECRImage","_parseECRImageUri","_parseECRRepositoryHostname","_upsertECRRepository","_checkECRRepositoryPolicy","_checkECRImageAccess","_formatECRRepositoryHostname","_formatECRImageUri","_ECRDeployer"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,iBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,2BAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,oBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,yBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,oBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,4BAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA","ignoreList":[]}
|
package/index.mjs
CHANGED
|
@@ -9,4 +9,5 @@ export { default as checkECRRepositoryPolicy } from "./checkECRRepositoryPolicy.
|
|
|
9
9
|
export { default as checkECRImageAccess } from "./checkECRImageAccess.mjs";
|
|
10
10
|
export { default as formatECRRepositoryHostname } from "./formatECRRepositoryHostname.mjs";
|
|
11
11
|
export { default as formatECRImageUri } from "./formatECRImageUri.mjs";
|
|
12
|
+
export { ECRDeployer } from "./ECRDeployer.mjs";
|
|
12
13
|
//# sourceMappingURL=index.mjs.map
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["default","copyECRImage","ecrImageExists","loginToECR","tagECRImage","parseECRImageUri","parseECRRepositoryHostname","upsertECRRepository","checkECRRepositoryPolicy","checkECRImageAccess","formatECRRepositoryHostname","formatECRImageUri"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,IAAIC,YAAY;AAChC,SAASD,OAAO,IAAIE,cAAc;AAClC,SAASF,OAAO,IAAIG,UAAU;AAC9B,SAASH,OAAO,IAAII,WAAW;AAC/B,SAASJ,OAAO,IAAIK,gBAAgB;AACpC,SAASL,OAAO,IAAIM,0BAA0B;AAC9C,SAASN,OAAO,IAAIO,mBAAmB;AACvC,SAASP,OAAO,IAAIQ,wBAAwB;AAC5C,SAASR,OAAO,IAAIS,mBAAmB;AACvC,SAAST,OAAO,IAAIU,2BAA2B;AAC/C,SAASV,OAAO,IAAIW,iBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["default","copyECRImage","ecrImageExists","loginToECR","tagECRImage","parseECRImageUri","parseECRRepositoryHostname","upsertECRRepository","checkECRRepositoryPolicy","checkECRImageAccess","formatECRRepositoryHostname","formatECRImageUri","ECRDeployer"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,IAAIC,YAAY;AAChC,SAASD,OAAO,IAAIE,cAAc;AAClC,SAASF,OAAO,IAAIG,UAAU;AAC9B,SAASH,OAAO,IAAII,WAAW;AAC/B,SAASJ,OAAO,IAAIK,gBAAgB;AACpC,SAASL,OAAO,IAAIM,0BAA0B;AAC9C,SAASN,OAAO,IAAIO,mBAAmB;AACvC,SAASP,OAAO,IAAIQ,wBAAwB;AAC5C,SAASR,OAAO,IAAIS,mBAAmB;AACvC,SAAST,OAAO,IAAIU,2BAA2B;AAC/C,SAASV,OAAO,IAAIW,iBAAiB;AACrC,SAASC,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isInteractive.d.mts","names":["isInteractive"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,qBAAaA,aAAa,SACqD","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isInteractive.d.ts","names":["isInteractive"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,qBAAaA,aAAa,SACqD","ignoreList":[]}
|
package/isInteractive.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isInteractive = void 0;
|
|
7
|
+
var isInteractive = exports.isInteractive = process.stdout.isTTY && process.env.TERM !== 'dumb' && !('CI' in process.env);
|
|
8
|
+
//# sourceMappingURL=isInteractive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isInteractive.js","names":["isInteractive","exports","process","stdout","isTTY","env","TERM"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GACxBE,OAAO,CAACC,MAAM,CAACC,KAAK,IAAIF,OAAO,CAACG,GAAG,CAACC,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,IAAIJ,OAAO,CAACG,GAAG,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isInteractive.mjs","names":["isInteractive","process","stdout","isTTY","env","TERM"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,MAAMA,aAAa,GACxBC,OAAO,CAACC,MAAM,CAACC,KAAK,IAAIF,OAAO,CAACG,GAAG,CAACC,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,IAAIJ,OAAO,CAACG,GAAG,CAAC","ignoreList":[]}
|
package/loginToECR.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ECRClient, ECRClientConfig } from '@aws-sdk/client-ecr';
|
|
1
|
+
import { ECRClient, type ECRClientConfig } from '@aws-sdk/client-ecr';
|
|
2
2
|
export default function loginToECR({
|
|
3
3
|
ecr,
|
|
4
4
|
forImages,
|
|
5
5
|
awsConfig
|
|
6
|
-
}
|
|
6
|
+
}?: {
|
|
7
7
|
ecr?: ECRClient;
|
|
8
8
|
forImages?: string[];
|
|
9
9
|
awsConfig?: ECRClientConfig;
|
package/loginToECR.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginToECR.d.mts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,
|
|
1
|
+
{"version":3,"file":"loginToECR.d.mts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACT,KAAKC,eAAe,QAEf,qBAAqB;AAM5B,wBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CAKI,CAJL,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CACvB,GAAGK,OAAO,CAAC,IAAI,CAAC","ignoreList":[]}
|
package/loginToECR.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ECRClient, ECRClientConfig } from '@aws-sdk/client-ecr';
|
|
1
|
+
import { ECRClient, type ECRClientConfig } from '@aws-sdk/client-ecr';
|
|
2
2
|
declare function loginToECR({
|
|
3
3
|
ecr,
|
|
4
4
|
forImages,
|
|
5
5
|
awsConfig
|
|
6
|
-
}
|
|
6
|
+
}?: {
|
|
7
7
|
ecr?: ECRClient;
|
|
8
8
|
forImages?: string[];
|
|
9
9
|
awsConfig?: ECRClientConfig;
|
package/loginToECR.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginToECR.d.ts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,
|
|
1
|
+
{"version":3,"file":"loginToECR.d.ts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACT,KAAKC,eAAe,QAEf,qBAAqB;AAM5B,iBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CAKI,CAJL,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CACvB,GAAGK,OAAO,CAAC,IAAI,CAAC;AAqErB,SAAAJ,UAAA","ignoreList":[]}
|
package/loginToECR.js
CHANGED
|
@@ -23,16 +23,34 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
23
23
|
* @prettier
|
|
24
24
|
*/
|
|
25
25
|
var log = log4jcore.logger('@jcoreio/aws-ecr-utils/loginToECR');
|
|
26
|
-
function loginToECR(
|
|
26
|
+
function loginToECR() {
|
|
27
27
|
return _loginToECR.apply(this, arguments);
|
|
28
28
|
}
|
|
29
29
|
function _loginToECR() {
|
|
30
|
-
_loginToECR = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(
|
|
31
|
-
var
|
|
30
|
+
_loginToECR = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
31
|
+
var _ref,
|
|
32
|
+
ecr,
|
|
33
|
+
forImages,
|
|
34
|
+
awsConfig,
|
|
35
|
+
regions,
|
|
36
|
+
_yield$ecr$send,
|
|
37
|
+
authorizationData,
|
|
38
|
+
_ref3,
|
|
39
|
+
authorizationToken,
|
|
40
|
+
proxyEndpoint,
|
|
41
|
+
decoded,
|
|
42
|
+
_decoded$split,
|
|
43
|
+
_decoded$split2,
|
|
44
|
+
user,
|
|
45
|
+
password,
|
|
46
|
+
dockerArgs,
|
|
47
|
+
child,
|
|
48
|
+
_args2 = arguments,
|
|
49
|
+
_t;
|
|
32
50
|
return _regenerator["default"].wrap(function (_context2) {
|
|
33
51
|
while (1) switch (_context2.prev = _context2.next) {
|
|
34
52
|
case 0:
|
|
35
|
-
ecr = _ref.ecr, forImages = _ref.forImages, awsConfig = _ref.awsConfig;
|
|
53
|
+
_ref = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, ecr = _ref.ecr, forImages = _ref.forImages, awsConfig = _ref.awsConfig;
|
|
36
54
|
if (!forImages) {
|
|
37
55
|
_context2.next = 2;
|
|
38
56
|
break;
|
|
@@ -63,7 +81,7 @@ function _loginToECR() {
|
|
|
63
81
|
}
|
|
64
82
|
}, _callee);
|
|
65
83
|
}));
|
|
66
|
-
return function (
|
|
84
|
+
return function (_x) {
|
|
67
85
|
return _ref2.apply(this, arguments);
|
|
68
86
|
};
|
|
69
87
|
}()));
|
|
@@ -109,15 +127,9 @@ function _loginToECR() {
|
|
|
109
127
|
stdio: ['pipe', 'pipe', 'inherit'],
|
|
110
128
|
encoding: 'utf8'
|
|
111
129
|
});
|
|
112
|
-
if (child.stdin) {
|
|
113
|
-
_context2.next = 7;
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
throw new Error('expected child.stdin to be defined');
|
|
117
|
-
case 7:
|
|
118
130
|
child.stdin.write(password);
|
|
119
131
|
child.stdin.end();
|
|
120
|
-
_context2.next =
|
|
132
|
+
_context2.next = 7;
|
|
121
133
|
return child.then(function () {
|
|
122
134
|
return log.debug('ECR login succeeded');
|
|
123
135
|
}, function (error) {
|
|
@@ -127,7 +139,7 @@ function _loginToECR() {
|
|
|
127
139
|
}
|
|
128
140
|
throw error;
|
|
129
141
|
});
|
|
130
|
-
case
|
|
142
|
+
case 7:
|
|
131
143
|
case "end":
|
|
132
144
|
return _context2.stop();
|
|
133
145
|
}
|
package/loginToECR.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginToECR.js","names":["_promisifyChildProcess","require","_base64Js","_interopRequireDefault","_clientEcr","_parseECRImageUri","log4jcore","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","logger","loginToECR","
|
|
1
|
+
{"version":3,"file":"loginToECR.js","names":["_promisifyChildProcess","require","_base64Js","_interopRequireDefault","_clientEcr","_parseECRImageUri","log4jcore","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","logger","loginToECR","_loginToECR","_asyncToGenerator2","_regenerator","mark","_callee2","_ref","ecr","forImages","awsConfig","regions","_yield$ecr$send","authorizationData","_ref3","authorizationToken","proxyEndpoint","decoded","_decoded$split","_decoded$split2","user","password","dockerArgs","child","_args2","_t","wrap","_context2","prev","next","undefined","debug","Set","flatMap","image","parseECRImageUri","region","_unused","Promise","all","_toConsumableArray2","map","_ref2","_callee","_context","abrupt","stop","_x","ECRClient","config","sent","send","GetAuthorizationTokenCommand","Error","Buffer","from","base64","toByteArray","toString","split","_slicedToArray2","concat","arg","test","replace","spawn","stdio","encoding","stdin","write","end","then","error","_typeof2","code","signal","module","exports","default"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/loginToECR.mjs
CHANGED
|
@@ -11,7 +11,7 @@ export default async function loginToECR({
|
|
|
11
11
|
ecr,
|
|
12
12
|
forImages,
|
|
13
13
|
awsConfig
|
|
14
|
-
}) {
|
|
14
|
+
} = {}) {
|
|
15
15
|
if (forImages) {
|
|
16
16
|
log.debug('logging into AWS ECR for images:', forImages);
|
|
17
17
|
const regions = new Set(forImages.flatMap(image => {
|
|
@@ -60,9 +60,6 @@ export default async function loginToECR({
|
|
|
60
60
|
stdio: ['pipe', 'pipe', 'inherit'],
|
|
61
61
|
encoding: 'utf8'
|
|
62
62
|
});
|
|
63
|
-
if (!child.stdin) {
|
|
64
|
-
throw new Error('expected child.stdin to be defined');
|
|
65
|
-
}
|
|
66
63
|
child.stdin.write(password);
|
|
67
64
|
child.stdin.end();
|
|
68
65
|
await child.then(() => log.debug('ECR login succeeded'), error => {
|
package/loginToECR.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginToECR.mjs","names":["spawn","base64","ECRClient","GetAuthorizationTokenCommand","parseECRImageUri","log4jcore","log","logger","loginToECR","ecr","forImages","awsConfig","debug","regions","Set","flatMap","image","region","Promise","all","map","config","authorizationData","send","authorizationToken","proxyEndpoint","Error","decoded","Buffer","from","toByteArray","toString","user","password","split","dockerArgs","arg","test","replace","child","stdio","encoding","stdin","write","end","then","error","code","signal"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,yBAAyB;AAC/C,OAAOC,MAAM,MAAM,WAAW;AAC9B,SACEC,SAAS,EAETC,4BAA4B,QACvB,qBAAqB;AAC5B,OAAOC,gBAAgB;AACvB,OAAO,KAAKC,SAAS,MAAM,WAAW;AAEtC,MAAMC,GAAG,GAAGD,SAAS,CAACE,MAAM,CAAC,mCAAmC,CAAC;AAEjE,eAAe,eAAeC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;AAKF,CAAC,EAAiB;
|
|
1
|
+
{"version":3,"file":"loginToECR.mjs","names":["spawn","base64","ECRClient","GetAuthorizationTokenCommand","parseECRImageUri","log4jcore","log","logger","loginToECR","ecr","forImages","awsConfig","debug","regions","Set","flatMap","image","region","Promise","all","map","config","authorizationData","send","authorizationToken","proxyEndpoint","Error","decoded","Buffer","from","toByteArray","toString","user","password","split","dockerArgs","arg","test","replace","child","stdio","encoding","stdin","write","end","then","error","code","signal"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/once.d.mts
ADDED
package/once.d.mts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.d.mts","names":["once","fn","args","Args","Ret"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,wBAAgBA,IAAI,CAAC,aAAa,OAAO,EAAE,EAAE,GAAG,CAAAA,CAAEC,EAAE,EAAE,CAAC,GAAGC,IAAI,EAAEC,IAAI,KAAKC,GAAG,IAElE,GAAGF,IAAA,EAAMC,IAAI,KAAAC,GAAA","ignoreList":[]}
|
package/once.d.ts
ADDED
package/once.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.d.ts","names":["once","fn","args","Args","Ret"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,wBAAgBA,IAAI,CAAC,aAAa,OAAO,EAAE,EAAE,GAAG,CAAAA,CAAEC,EAAE,EAAE,CAAC,GAAGC,IAAI,EAAEC,IAAI,KAAKC,GAAG,IAElE,GAAGF,IAAA,EAAMC,IAAI,KAAAC,GAAA","ignoreList":[]}
|
package/once.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.once = once;
|
|
7
|
+
function once(fn) {
|
|
8
|
+
var result;
|
|
9
|
+
return function () {
|
|
10
|
+
if (!result) result = [fn.apply(void 0, arguments)];
|
|
11
|
+
return result[0];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=once.js.map
|
package/once.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.js","names":["once","fn","result","apply","arguments"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAO,SAASA,IAAIA,CAA8BC,EAA0B,EAAE;EAC5E,IAAIC,MAAyB;EAC7B,OAAO,YAAmB;IACxB,IAAI,CAACA,MAAM,EAAEA,MAAM,GAAG,CAACD,EAAE,CAAAE,KAAA,SAAAC,SAAQ,CAAC,CAAC;IACnC,OAAOF,MAAM,CAAC,CAAC,CAAC;EAClB,CAAC;AACH","ignoreList":[]}
|
package/once.mjs
ADDED
package/once.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"once.mjs","names":["once","fn","result","args"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,SAASA,IAAIA,CAA8BC,EAA0B,EAAE;EAC5E,IAAIC,MAAyB;EAC7B,OAAO,CAAC,GAAGC,IAAU,KAAK;IACxB,IAAI,CAACD,MAAM,EAAEA,MAAM,GAAG,CAACD,EAAE,CAAC,GAAGE,IAAI,CAAC,CAAC;IACnC,OAAOD,MAAM,CAAC,CAAC,CAAC;EAClB,CAAC;AACH","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jcoreio/aws-ecr-utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "utilities for working with AWS Elastic Container Registry",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"repository": {
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"@aws-sdk/client-sts": "^3.577.0",
|
|
24
24
|
"@babel/runtime": "^7.26.0",
|
|
25
25
|
"base64-js": "^1.5.1",
|
|
26
|
+
"find-up": "^8.0.0",
|
|
26
27
|
"inquirer": "^8.2.6",
|
|
27
|
-
"is-interactive": "^1.0.0",
|
|
28
28
|
"log4jcore": "^4.8.0",
|
|
29
|
-
"promisify-child-process": "^
|
|
30
|
-
"zod": "^3.
|
|
29
|
+
"promisify-child-process": "^5.0.0",
|
|
30
|
+
"zod": "^3.25.76"
|
|
31
31
|
},
|
|
32
32
|
"main": "index.js",
|
|
33
33
|
"module": "index.mjs",
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
},
|
|
57
57
|
"packageManager": "pnpm@10.6.5",
|
|
58
58
|
"@jcoreio/toolchain": {
|
|
59
|
-
"migratedVersion": "5.8.
|
|
59
|
+
"migratedVersion": "5.8.8"
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BatchGetImageCommand,
|
|
3
|
+
ECRClient,
|
|
4
|
+
ECRClientConfig,
|
|
5
|
+
PutImageCommand,
|
|
6
|
+
} from '@aws-sdk/client-ecr'
|
|
7
|
+
import { spawn } from 'promisify-child-process'
|
|
8
|
+
import fs from 'fs/promises'
|
|
9
|
+
import path from 'path'
|
|
10
|
+
import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts'
|
|
11
|
+
import { once } from './once.ts'
|
|
12
|
+
import loginToECR from './loginToECR.ts'
|
|
13
|
+
import os from 'os'
|
|
14
|
+
|
|
15
|
+
export interface ECRDeployerOptions {
|
|
16
|
+
awsConfig?: ECRClientConfig
|
|
17
|
+
/**
|
|
18
|
+
* {@link ECRDeployer#release} will only add a version tag if the current git branch
|
|
19
|
+
* is one of these branches (defaults to `['master', 'main', 'release']`)
|
|
20
|
+
*/
|
|
21
|
+
releaseBranches?: string[]
|
|
22
|
+
/**
|
|
23
|
+
* The name of the ECR repository
|
|
24
|
+
*/
|
|
25
|
+
repositoryName: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Class that implements our conventional process for deploying docker images to ECR.
|
|
30
|
+
*
|
|
31
|
+
* The CI build step should build the docker image (you may want to use {@link getNpmToken}
|
|
32
|
+
* to pass an `NPM_TOKEN` build arg) and then call {@link push} to push the image to
|
|
33
|
+
* ECR tagged with the git commit hash.
|
|
34
|
+
*
|
|
35
|
+
* The CI release step should call {@link release} to add tags for the git branch and
|
|
36
|
+
* the `version` in your `package.json`.
|
|
37
|
+
*
|
|
38
|
+
* You may use the `OVERRIDE_ECR_BRANCH_TAG` and `OVERRIDE_ECR_VERSION_TAG` environment
|
|
39
|
+
* variables to force specific tags for the branch and version.
|
|
40
|
+
*/
|
|
41
|
+
export class ECRDeployer {
|
|
42
|
+
options: ECRDeployerOptions
|
|
43
|
+
|
|
44
|
+
constructor(options: ECRDeployerOptions) {
|
|
45
|
+
this.options = options
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async getBranch() {
|
|
49
|
+
return (
|
|
50
|
+
process.env.OVERRIDE_ECR_BRANCH_TAG ||
|
|
51
|
+
(
|
|
52
|
+
await spawn('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
|
|
53
|
+
encoding: 'utf8',
|
|
54
|
+
})
|
|
55
|
+
).stdout.trim()
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async getCommitHash() {
|
|
60
|
+
return (
|
|
61
|
+
await spawn('git', ['rev-parse', 'HEAD'], {
|
|
62
|
+
encoding: 'utf8',
|
|
63
|
+
})
|
|
64
|
+
).stdout.trim()
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private getAWSAccountId = once(async () => {
|
|
68
|
+
const sts = new STSClient(this.options.awsConfig || {})
|
|
69
|
+
const { Account } = await sts.send(new GetCallerIdentityCommand())
|
|
70
|
+
if (!Account) throw new Error(`failed to get AWS account id`)
|
|
71
|
+
return Account
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
private async getRegion() {
|
|
75
|
+
const ecr = new ECRClient(this.options.awsConfig || {})
|
|
76
|
+
const region = await ecr.config.region()
|
|
77
|
+
if (!region) {
|
|
78
|
+
throw new Error(`Couldn't get AWS region. Provide the AWS region by either:
|
|
79
|
+
- Setting the AWS_REGION environment variable
|
|
80
|
+
- Putting the region in your ~/.aws/config and setting AWS_SDK_LOAD_CONFIG=true
|
|
81
|
+
`)
|
|
82
|
+
}
|
|
83
|
+
return region
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
private async getECRHost() {
|
|
87
|
+
return `${await this.getAWSAccountId()}.dkr.ecr.${await this.getRegion()}.amazonaws.com`
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private async getProjectPackageJson() {
|
|
91
|
+
const { findUp } = await import('find-up')
|
|
92
|
+
|
|
93
|
+
const file = await findUp(async (dir) =>
|
|
94
|
+
(
|
|
95
|
+
!/\/node_modules\//.test(path.posix.normalize(dir)) &&
|
|
96
|
+
(await fs.stat(path.join(dir, 'package.json')).then(
|
|
97
|
+
(s) => s.isFile(),
|
|
98
|
+
() => false
|
|
99
|
+
))
|
|
100
|
+
) ?
|
|
101
|
+
path.join(dir, 'package.json')
|
|
102
|
+
: undefined
|
|
103
|
+
)
|
|
104
|
+
if (!file) {
|
|
105
|
+
throw new Error(`failed to find enclosing project package.json`)
|
|
106
|
+
}
|
|
107
|
+
return { file, contents: JSON.parse(await fs.readFile(file, 'utf8')) }
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async getDockerTags(): Promise<{
|
|
111
|
+
latest: string
|
|
112
|
+
branch: string
|
|
113
|
+
commitHash: string
|
|
114
|
+
version?: string
|
|
115
|
+
}> {
|
|
116
|
+
const [commitHash, branch, packageJson] = await Promise.all([
|
|
117
|
+
this.getCommitHash(),
|
|
118
|
+
this.getBranch(),
|
|
119
|
+
this.getProjectPackageJson(),
|
|
120
|
+
])
|
|
121
|
+
const base = this.options.repositoryName
|
|
122
|
+
const result: {
|
|
123
|
+
latest: string
|
|
124
|
+
branch: string
|
|
125
|
+
commitHash: string
|
|
126
|
+
version?: string
|
|
127
|
+
} = {
|
|
128
|
+
latest: base,
|
|
129
|
+
branch: `${base}:${branch}`,
|
|
130
|
+
commitHash: `${base}:${commitHash}`,
|
|
131
|
+
}
|
|
132
|
+
const { releaseBranches = ['master', 'main', 'release'] } = this.options
|
|
133
|
+
if (releaseBranches.includes(branch)) {
|
|
134
|
+
const version =
|
|
135
|
+
process.env.OVERRIDE_ECR_VERSION_TAG || packageJson.contents.version
|
|
136
|
+
if (typeof version !== 'string') {
|
|
137
|
+
throw new Error(
|
|
138
|
+
`failed to get version from ${path.relative(process.cwd(), packageJson.file)}`
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
result.version = `${base}:${version}`
|
|
142
|
+
}
|
|
143
|
+
return result
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
async push() {
|
|
147
|
+
const { awsConfig } = this.options
|
|
148
|
+
const [ecrHost, { commitHash }] = await Promise.all([
|
|
149
|
+
this.getECRHost(),
|
|
150
|
+
this.getDockerTags(),
|
|
151
|
+
loginToECR({ awsConfig }),
|
|
152
|
+
])
|
|
153
|
+
try {
|
|
154
|
+
await spawn('docker', ['tag', commitHash, `${ecrHost}/${commitHash}`], {
|
|
155
|
+
stdio: 'inherit',
|
|
156
|
+
})
|
|
157
|
+
} catch {
|
|
158
|
+
await spawn(
|
|
159
|
+
'docker',
|
|
160
|
+
['tag', '-f', commitHash, `${ecrHost}/${commitHash}`],
|
|
161
|
+
{
|
|
162
|
+
stdio: 'inherit',
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
await spawn('docker', ['push', `${ecrHost}/${commitHash}`])
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async release() {
|
|
170
|
+
const [commitHash, ecrHost, tags] = await Promise.all([
|
|
171
|
+
this.getCommitHash(),
|
|
172
|
+
this.getECRHost(),
|
|
173
|
+
this.getDockerTags(),
|
|
174
|
+
])
|
|
175
|
+
const ecr = new ECRClient()
|
|
176
|
+
|
|
177
|
+
const { repositoryName } = this.options
|
|
178
|
+
|
|
179
|
+
const { images: [image] = [] } = await ecr.send(
|
|
180
|
+
new BatchGetImageCommand({
|
|
181
|
+
repositoryName,
|
|
182
|
+
imageIds: [{ imageTag: commitHash }],
|
|
183
|
+
})
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
187
|
+
const imageManifest = image?.imageManifest
|
|
188
|
+
|
|
189
|
+
if (!imageManifest) {
|
|
190
|
+
throw new Error(
|
|
191
|
+
`failed to get image manifest for ${repositoryName}:${commitHash}`
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (imageManifest) {
|
|
196
|
+
// add other tags to ECR
|
|
197
|
+
for (const key of Object.keys(tags) as (keyof typeof tags)[]) {
|
|
198
|
+
if (key === 'latest' || key === 'commitHash') continue
|
|
199
|
+
const tag = tags[key]?.replace(/^[^:]+:?/, '')
|
|
200
|
+
if (!tag) continue
|
|
201
|
+
// eslint-disable-next-line no-console
|
|
202
|
+
console.error(`Adding tag ${ecrHost}/${tags[key]}`)
|
|
203
|
+
try {
|
|
204
|
+
await ecr.send(
|
|
205
|
+
new PutImageCommand({
|
|
206
|
+
repositoryName,
|
|
207
|
+
imageManifest,
|
|
208
|
+
imageTag: tag.substring(tag.indexOf(':') + 1),
|
|
209
|
+
})
|
|
210
|
+
)
|
|
211
|
+
} catch (error) {
|
|
212
|
+
if (
|
|
213
|
+
error instanceof Object &&
|
|
214
|
+
'code' in error &&
|
|
215
|
+
error.code !== 'ImageAlreadyExistsException'
|
|
216
|
+
) {
|
|
217
|
+
throw error
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
async getNpmToken(env = process.env) {
|
|
225
|
+
const { NPM_TOKEN } = env
|
|
226
|
+
if (NPM_TOKEN) return NPM_TOKEN
|
|
227
|
+
try {
|
|
228
|
+
const homedir = os.homedir()
|
|
229
|
+
const npmrc = await fs.readFile(`${homedir}/.npmrc`, 'utf8')
|
|
230
|
+
const match = /registry\.npmjs\.org\/:_authToken=(.+)/.exec(npmrc)
|
|
231
|
+
if (match) return match[1]
|
|
232
|
+
} catch {
|
|
233
|
+
// ignore
|
|
234
|
+
}
|
|
235
|
+
throw new Error('Missing process.env.NPM_TOKEN or entry in ~/.npmrc')
|
|
236
|
+
}
|
|
237
|
+
}
|
|
@@ -2,17 +2,17 @@ import {
|
|
|
2
2
|
BatchCheckLayerAvailabilityCommand,
|
|
3
3
|
BatchGetImageCommand,
|
|
4
4
|
ECRClient,
|
|
5
|
-
ECRClientConfig,
|
|
5
|
+
type ECRClientConfig,
|
|
6
6
|
GetDownloadUrlForLayerCommand,
|
|
7
7
|
GetRepositoryPolicyCommand,
|
|
8
8
|
SetRepositoryPolicyCommand,
|
|
9
9
|
} from '@aws-sdk/client-ecr'
|
|
10
10
|
import { STSClient, GetCallerIdentityCommand } from '@aws-sdk/client-sts'
|
|
11
|
-
import parseECRImageUri from './parseECRImageUri'
|
|
12
|
-
import { ImageManifestSchema } from './ImageManifestSchema'
|
|
13
|
-
import isInteractive from '
|
|
11
|
+
import parseECRImageUri from './parseECRImageUri.ts'
|
|
12
|
+
import { ImageManifestSchema } from './ImageManifestSchema.ts'
|
|
13
|
+
import { isInteractive } from './isInteractive.ts'
|
|
14
14
|
import inquirer from 'inquirer'
|
|
15
|
-
import formatECRRepositoryHostname from './formatECRRepositoryHostname'
|
|
15
|
+
import formatECRRepositoryHostname from './formatECRRepositoryHostname.ts'
|
|
16
16
|
|
|
17
17
|
export default async function checkECRImageAccess({
|
|
18
18
|
ecr,
|
|
@@ -37,7 +37,7 @@ export default async function checkECRImageAccess({
|
|
|
37
37
|
error: (...args: any[]) => void
|
|
38
38
|
}
|
|
39
39
|
}): Promise<boolean> {
|
|
40
|
-
log.error('checking access to ECR image:', imageUri, '
|
|
40
|
+
log.error('checking access to ECR image:', imageUri, '....ts')
|
|
41
41
|
|
|
42
42
|
const { registryId, region, repositoryName, imageTag } =
|
|
43
43
|
parseECRImageUri(imageUri)
|
|
@@ -114,7 +114,7 @@ The policy should include:
|
|
|
114
114
|
).replace(/\n/gm, '\n ')}
|
|
115
115
|
`)
|
|
116
116
|
|
|
117
|
-
if (repoAccountAwsConfig && isInteractive
|
|
117
|
+
if (repoAccountAwsConfig && isInteractive) {
|
|
118
118
|
const { Account } = await new STSClient({
|
|
119
119
|
credentials: ecr.config.credentials,
|
|
120
120
|
region,
|