@jcoreio/aws-ecr-utils 1.1.1 → 1.3.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/ImageManifestSchema.d.ts +58 -0
- package/ImageManifestSchema.js +22 -0
- package/ImageManifestSchema.mjs +15 -0
- package/checkECRImageAccess.d.ts +18 -0
- package/checkECRImageAccess.js +180 -0
- package/checkECRImageAccess.mjs +133 -0
- package/checkECRRepositoryPolicy.d.ts +20 -0
- package/checkECRRepositoryPolicy.js +132 -0
- package/checkECRRepositoryPolicy.mjs +100 -0
- package/copyECRImage.js +79 -104
- package/copyECRImage.mjs +67 -0
- package/ecrImageExists.js +51 -74
- package/ecrImageExists.mjs +31 -0
- package/formatECRImageUri.d.ts +6 -0
- package/formatECRImageUri.js +20 -0
- package/formatECRImageUri.mjs +13 -0
- package/formatECRRepositoryHostname.d.ts +5 -0
- package/formatECRRepositoryHostname.js +13 -0
- package/formatECRRepositoryHostname.mjs +7 -0
- package/index.d.ts +5 -0
- package/index.js +41 -13
- package/index.mjs +11 -0
- package/loginToECR.js +44 -65
- package/loginToECR.mjs +38 -0
- package/package.json +27 -105
- package/parseECRImageUri.d.ts +3 -2
- package/parseECRImageUri.js +6 -10
- package/parseECRImageUri.mjs +11 -0
- package/parseECRRepositoryHostname.d.ts +6 -0
- package/parseECRRepositoryHostname.js +22 -0
- package/parseECRRepositoryHostname.mjs +10 -0
- package/tagECRImage.js +81 -115
- package/tagECRImage.mjs +50 -0
- package/upsertECRRepository.js +45 -64
- package/upsertECRRepository.mjs +33 -0
- package/es/copyECRImage.d.ts +0 -13
- package/es/copyECRImage.js +0 -76
- package/es/ecrImageExists.d.ts +0 -9
- package/es/ecrImageExists.js +0 -45
- package/es/index.d.ts +0 -6
- package/es/index.js +0 -56
- package/es/loginToECR.d.ts +0 -8
- package/es/loginToECR.js +0 -56
- package/es/parseECRImageUri.d.ts +0 -6
- package/es/parseECRImageUri.js +0 -19
- package/es/tagECRImage.d.ts +0 -10
- package/es/tagECRImage.js +0 -65
- package/es/upsertECRRepository.d.ts +0 -6
- package/es/upsertECRRepository.js +0 -45
- /package/{es/copyECRImage.js.flow → copyECRImage.mjs.flow} +0 -0
- /package/{es/ecrImageExists.js.flow → ecrImageExists.mjs.flow} +0 -0
- /package/{es/index.js.flow → index.mjs.flow} +0 -0
- /package/{es/loginToECR.js.flow → loginToECR.mjs.flow} +0 -0
- /package/{es/parseECRImageUri.js.flow → parseECRImageUri.mjs.flow} +0 -0
- /package/{es/tagECRImage.js.flow → tagECRImage.mjs.flow} +0 -0
- /package/{es/upsertECRRepository.js.flow → upsertECRRepository.mjs.flow} +0 -0
package/tagECRImage.mjs
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import AWS from 'aws-sdk';
|
|
5
|
+
import parseECRImageUri from "./parseECRImageUri.mjs";
|
|
6
|
+
export default async function tagECRImage({
|
|
7
|
+
ecr,
|
|
8
|
+
awsConfig,
|
|
9
|
+
imageUri,
|
|
10
|
+
tags
|
|
11
|
+
}) {
|
|
12
|
+
const {
|
|
13
|
+
region,
|
|
14
|
+
repositoryName,
|
|
15
|
+
imageTag
|
|
16
|
+
} = parseECRImageUri(imageUri);
|
|
17
|
+
if (!ecr) ecr = new AWS.ECR({
|
|
18
|
+
...awsConfig,
|
|
19
|
+
region
|
|
20
|
+
});
|
|
21
|
+
const imageManifest = await ecr.batchGetImage({
|
|
22
|
+
repositoryName,
|
|
23
|
+
imageIds: [{
|
|
24
|
+
imageTag
|
|
25
|
+
}]
|
|
26
|
+
}).promise().then(r => {
|
|
27
|
+
var _r$images;
|
|
28
|
+
return r === null || r === void 0 || (_r$images = r.images) === null || _r$images === void 0 || (_r$images = _r$images[0]) === null || _r$images === void 0 ? void 0 : _r$images.imageManifest;
|
|
29
|
+
});
|
|
30
|
+
if (!imageManifest) {
|
|
31
|
+
throw new Error(`failed to get image manifest for ${imageUri}`);
|
|
32
|
+
}
|
|
33
|
+
if (imageManifest) {
|
|
34
|
+
// add other tags to ECR
|
|
35
|
+
for (const tag of tags) {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.error(`Adding tag ${repositoryName}:${tag}`);
|
|
38
|
+
try {
|
|
39
|
+
await ecr.putImage({
|
|
40
|
+
repositoryName,
|
|
41
|
+
imageManifest,
|
|
42
|
+
imageTag: tag.substring(tag.indexOf(':') + 1)
|
|
43
|
+
}).promise();
|
|
44
|
+
} catch (error) {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
if ((error === null || error === void 0 ? void 0 : error.code) !== 'ImageAlreadyExistsException') throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/upsertECRRepository.js
CHANGED
|
@@ -1,87 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = upsertECRRepository;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
15
|
-
|
|
16
11
|
// @flow
|
|
17
12
|
function upsertECRRepository(_x) {
|
|
18
13
|
return _upsertECRRepository.apply(this, arguments);
|
|
19
14
|
}
|
|
20
|
-
|
|
21
15
|
function _upsertECRRepository() {
|
|
22
16
|
_upsertECRRepository = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
|
|
23
17
|
var ecr, awsConfig, repositoryName, _yield$ecr$describeRe, repositories, _repository, _yield$ecr$createRepo, repository;
|
|
24
|
-
|
|
25
18
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
26
|
-
while (1) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!_repository) {
|
|
43
|
-
_context.next = 10;
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return _context.abrupt("return", _repository);
|
|
48
|
-
|
|
49
|
-
case 10:
|
|
50
|
-
_context.next = 14;
|
|
19
|
+
while (1) switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
ecr = _ref.ecr, awsConfig = _ref.awsConfig, repositoryName = _ref.repositoryName;
|
|
22
|
+
if (!ecr) ecr = new _awsSdk["default"].ECR(awsConfig);
|
|
23
|
+
_context.prev = 2;
|
|
24
|
+
_context.next = 5;
|
|
25
|
+
return ecr.describeRepositories({
|
|
26
|
+
repositoryNames: [repositoryName]
|
|
27
|
+
}).promise();
|
|
28
|
+
case 5:
|
|
29
|
+
_yield$ecr$describeRe = _context.sent;
|
|
30
|
+
repositories = _yield$ecr$describeRe.repositories;
|
|
31
|
+
_repository = repositories === null || repositories === void 0 ? void 0 : repositories[0];
|
|
32
|
+
if (!_repository) {
|
|
33
|
+
_context.next = 10;
|
|
51
34
|
break;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
case "end":
|
|
81
|
-
return _context.stop();
|
|
82
|
-
}
|
|
35
|
+
}
|
|
36
|
+
return _context.abrupt("return", _repository);
|
|
37
|
+
case 10:
|
|
38
|
+
_context.next = 14;
|
|
39
|
+
break;
|
|
40
|
+
case 12:
|
|
41
|
+
_context.prev = 12;
|
|
42
|
+
_context.t0 = _context["catch"](2);
|
|
43
|
+
case 14:
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.error("Creating ECR repository {bold ".concat(repositoryName, "}..."));
|
|
46
|
+
_context.next = 17;
|
|
47
|
+
return ecr.createRepository({
|
|
48
|
+
repositoryName: repositoryName
|
|
49
|
+
}).promise();
|
|
50
|
+
case 17:
|
|
51
|
+
_yield$ecr$createRepo = _context.sent;
|
|
52
|
+
repository = _yield$ecr$createRepo.repository;
|
|
53
|
+
if (repository) {
|
|
54
|
+
_context.next = 21;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
throw new Error("repository is missing from createRepository response");
|
|
58
|
+
case 21:
|
|
59
|
+
return _context.abrupt("return", repository);
|
|
60
|
+
case 22:
|
|
61
|
+
case "end":
|
|
62
|
+
return _context.stop();
|
|
83
63
|
}
|
|
84
64
|
}, _callee, null, [[2, 12]]);
|
|
85
65
|
}));
|
|
86
66
|
return _upsertECRRepository.apply(this, arguments);
|
|
87
|
-
}
|
|
67
|
+
}
|
|
68
|
+
module.exports = exports.default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import AWS from 'aws-sdk';
|
|
4
|
+
export default async function upsertECRRepository({
|
|
5
|
+
ecr,
|
|
6
|
+
awsConfig,
|
|
7
|
+
repositoryName
|
|
8
|
+
}) {
|
|
9
|
+
if (!ecr) ecr = new AWS.ECR(awsConfig);
|
|
10
|
+
try {
|
|
11
|
+
const {
|
|
12
|
+
repositories
|
|
13
|
+
} = await ecr.describeRepositories({
|
|
14
|
+
repositoryNames: [repositoryName]
|
|
15
|
+
}).promise();
|
|
16
|
+
const repository = repositories === null || repositories === void 0 ? void 0 : repositories[0];
|
|
17
|
+
if (repository) return repository;
|
|
18
|
+
} catch (error) {
|
|
19
|
+
// ignore
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.error(`Creating ECR repository {bold ${repositoryName}}...`);
|
|
24
|
+
const {
|
|
25
|
+
repository
|
|
26
|
+
} = await ecr.createRepository({
|
|
27
|
+
repositoryName
|
|
28
|
+
}).promise();
|
|
29
|
+
if (!repository) {
|
|
30
|
+
throw new Error(`repository is missing from createRepository response`);
|
|
31
|
+
}
|
|
32
|
+
return repository;
|
|
33
|
+
}
|
package/es/copyECRImage.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import AWS from 'aws-sdk';
|
|
2
|
-
export default function copyECRImage({ from, to, }: {
|
|
3
|
-
from: {
|
|
4
|
-
imageUri: string;
|
|
5
|
-
ecr?: AWS.ECR;
|
|
6
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
7
|
-
};
|
|
8
|
-
to: {
|
|
9
|
-
imageUri: string;
|
|
10
|
-
ecr?: AWS.ECR;
|
|
11
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
12
|
-
};
|
|
13
|
-
}): Promise<void>;
|
package/es/copyECRImage.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = copyECRImage;
|
|
7
|
-
|
|
8
|
-
var _promisifyChildProcess = require("promisify-child-process");
|
|
9
|
-
|
|
10
|
-
var _loginToECR = _interopRequireDefault(require("./loginToECR"));
|
|
11
|
-
|
|
12
|
-
var _ecrImageExists = _interopRequireDefault(require("./ecrImageExists"));
|
|
13
|
-
|
|
14
|
-
var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
async function copyECRImage({
|
|
19
|
-
from,
|
|
20
|
-
to
|
|
21
|
-
}) {
|
|
22
|
-
if (from.imageUri === to.imageUri) return;
|
|
23
|
-
const srcRepositoryUri = from.imageUri.replace(/:.+/, '');
|
|
24
|
-
const repositoryUri = to.imageUri.replace(/:.+/, '');
|
|
25
|
-
const {
|
|
26
|
-
region: fromRegion
|
|
27
|
-
} = (0, _parseECRImageUri.default)(from.imageUri);
|
|
28
|
-
const {
|
|
29
|
-
region: toRegion,
|
|
30
|
-
repositoryName,
|
|
31
|
-
imageTag
|
|
32
|
-
} = (0, _parseECRImageUri.default)(to.imageUri);
|
|
33
|
-
|
|
34
|
-
if (await (0, _ecrImageExists.default)({
|
|
35
|
-
awsConfig: { ...to.awsConfig,
|
|
36
|
-
region: toRegion
|
|
37
|
-
},
|
|
38
|
-
ecr: to.ecr,
|
|
39
|
-
repositoryName,
|
|
40
|
-
imageTag
|
|
41
|
-
})) {
|
|
42
|
-
// eslint-disable-next-line no-console
|
|
43
|
-
console.error(`Clarity image already exists in your ECR: ${repositoryName}:${imageTag}`);
|
|
44
|
-
} else {
|
|
45
|
-
// eslint-disable-next-line no-console
|
|
46
|
-
console.error(`Logging into source ECR: ${srcRepositoryUri.replace(/\/.*/, '')}...`);
|
|
47
|
-
await (0, _loginToECR.default)({
|
|
48
|
-
ecr: from.ecr,
|
|
49
|
-
awsConfig: { ...from.awsConfig,
|
|
50
|
-
region: fromRegion
|
|
51
|
-
}
|
|
52
|
-
}); // eslint-disable-next-line no-console
|
|
53
|
-
|
|
54
|
-
console.error(`Pulling ${from.imageUri}...`);
|
|
55
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['pull', from.imageUri], {
|
|
56
|
-
stdio: 'inherit'
|
|
57
|
-
}); // eslint-disable-next-line no-console
|
|
58
|
-
|
|
59
|
-
console.error(`Logging into dest ECR: ${repositoryUri.replace(/\/.*/, '')}...`);
|
|
60
|
-
await (0, _loginToECR.default)({
|
|
61
|
-
ecr: to.ecr,
|
|
62
|
-
awsConfig: { ...to.awsConfig,
|
|
63
|
-
region: toRegion
|
|
64
|
-
}
|
|
65
|
-
}); // eslint-disable-next-line no-console
|
|
66
|
-
|
|
67
|
-
console.error(`Pushing ${to.imageUri}...`);
|
|
68
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['tag', from.imageUri, to.imageUri], {
|
|
69
|
-
stdio: 'inherit'
|
|
70
|
-
});
|
|
71
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['push', to.imageUri], {
|
|
72
|
-
stdio: 'inherit'
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3B5RUNSSW1hZ2UudHMiXSwibmFtZXMiOlsiY29weUVDUkltYWdlIiwiZnJvbSIsInRvIiwiaW1hZ2VVcmkiLCJzcmNSZXBvc2l0b3J5VXJpIiwicmVwbGFjZSIsInJlcG9zaXRvcnlVcmkiLCJyZWdpb24iLCJmcm9tUmVnaW9uIiwidG9SZWdpb24iLCJyZXBvc2l0b3J5TmFtZSIsImltYWdlVGFnIiwiYXdzQ29uZmlnIiwiZWNyIiwiY29uc29sZSIsImVycm9yIiwic3RkaW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVlLGVBQWVBLFlBQWYsQ0FBNEI7QUFDekNDLEVBQUFBLElBRHlDO0FBRXpDQyxFQUFBQTtBQUZ5QyxDQUE1QixFQWNHO0FBQ2hCLE1BQUlELElBQUksQ0FBQ0UsUUFBTCxLQUFrQkQsRUFBRSxDQUFDQyxRQUF6QixFQUFtQztBQUNuQyxRQUFNQyxnQkFBZ0IsR0FBR0gsSUFBSSxDQUFDRSxRQUFMLENBQWNFLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsQ0FBekI7QUFDQSxRQUFNQyxhQUFhLEdBQUdKLEVBQUUsQ0FBQ0MsUUFBSCxDQUFZRSxPQUFaLENBQW9CLEtBQXBCLEVBQTJCLEVBQTNCLENBQXRCO0FBRUEsUUFBTTtBQUFFRSxJQUFBQSxNQUFNLEVBQUVDO0FBQVYsTUFBeUIsK0JBQWlCUCxJQUFJLENBQUNFLFFBQXRCLENBQS9CO0FBQ0EsUUFBTTtBQUNKSSxJQUFBQSxNQUFNLEVBQUVFLFFBREo7QUFFSkMsSUFBQUEsY0FGSTtBQUdKQyxJQUFBQTtBQUhJLE1BSUYsK0JBQWlCVCxFQUFFLENBQUNDLFFBQXBCLENBSko7O0FBTUEsTUFDRSxNQUFNLDZCQUFlO0FBQ25CUyxJQUFBQSxTQUFTLEVBQUUsRUFBRSxHQUFHVixFQUFFLENBQUNVLFNBQVI7QUFBbUJMLE1BQUFBLE1BQU0sRUFBRUU7QUFBM0IsS0FEUTtBQUVuQkksSUFBQUEsR0FBRyxFQUFFWCxFQUFFLENBQUNXLEdBRlc7QUFHbkJILElBQUFBLGNBSG1CO0FBSW5CQyxJQUFBQTtBQUptQixHQUFmLENBRFIsRUFPRTtBQUNBO0FBQ0FHLElBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUNHLDZDQUE0Q0wsY0FBZSxJQUFHQyxRQUFTLEVBRDFFO0FBR0QsR0FaRCxNQVlPO0FBQ0w7QUFDQUcsSUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQ0csNEJBQTJCWCxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUIsTUFBekIsRUFBaUMsRUFBakMsQ0FBcUMsS0FEbkU7QUFJQSxVQUFNLHlCQUFXO0FBQ2ZRLE1BQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQURLO0FBRWZELE1BQUFBLFNBQVMsRUFBRSxFQUFFLEdBQUdYLElBQUksQ0FBQ1csU0FBVjtBQUFxQkwsUUFBQUEsTUFBTSxFQUFFQztBQUE3QjtBQUZJLEtBQVgsQ0FBTixDQU5LLENBV0w7O0FBQ0FNLElBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFlLFdBQVVkLElBQUksQ0FBQ0UsUUFBUyxLQUF2QztBQUNBLFVBQU0sa0NBQU0sUUFBTixFQUFnQixDQUFDLE1BQUQsRUFBU0YsSUFBSSxDQUFDRSxRQUFkLENBQWhCLEVBQXlDO0FBQUVhLE1BQUFBLEtBQUssRUFBRTtBQUFULEtBQXpDLENBQU4sQ0FiSyxDQWVMOztBQUNBRixJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FDRywwQkFBeUJULGFBQWEsQ0FBQ0QsT0FBZCxDQUFzQixNQUF0QixFQUE4QixFQUE5QixDQUFrQyxLQUQ5RDtBQUdBLFVBQU0seUJBQVc7QUFDZlEsTUFBQUEsR0FBRyxFQUFFWCxFQUFFLENBQUNXLEdBRE87QUFFZkQsTUFBQUEsU0FBUyxFQUFFLEVBQUUsR0FBR1YsRUFBRSxDQUFDVSxTQUFSO0FBQW1CTCxRQUFBQSxNQUFNLEVBQUVFO0FBQTNCO0FBRkksS0FBWCxDQUFOLENBbkJLLENBd0JMOztBQUNBSyxJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBZSxXQUFVYixFQUFFLENBQUNDLFFBQVMsS0FBckM7QUFDQSxVQUFNLGtDQUFNLFFBQU4sRUFBZ0IsQ0FBQyxLQUFELEVBQVFGLElBQUksQ0FBQ0UsUUFBYixFQUF1QkQsRUFBRSxDQUFDQyxRQUExQixDQUFoQixFQUFxRDtBQUN6RGEsTUFBQUEsS0FBSyxFQUFFO0FBRGtELEtBQXJELENBQU47QUFHQSxVQUFNLGtDQUFNLFFBQU4sRUFBZ0IsQ0FBQyxNQUFELEVBQVNkLEVBQUUsQ0FBQ0MsUUFBWixDQUFoQixFQUF1QztBQUFFYSxNQUFBQSxLQUFLLEVBQUU7QUFBVCxLQUF2QyxDQUFOO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBV1MgZnJvbSAnYXdzLXNkaydcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAncHJvbWlzaWZ5LWNoaWxkLXByb2Nlc3MnXG5pbXBvcnQgbG9naW5Ub0VDUiBmcm9tICcuL2xvZ2luVG9FQ1InXG5pbXBvcnQgZWNySW1hZ2VFeGlzdHMgZnJvbSAnLi9lY3JJbWFnZUV4aXN0cydcbmltcG9ydCBwYXJzZUVDUkltYWdlVXJpIGZyb20gJy4vcGFyc2VFQ1JJbWFnZVVyaSdcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY29weUVDUkltYWdlKHtcbiAgZnJvbSxcbiAgdG8sXG59OiB7XG4gIGZyb206IHtcbiAgICBpbWFnZVVyaTogc3RyaW5nXG4gICAgZWNyPzogQVdTLkVDUlxuICAgIGF3c0NvbmZpZz86IEFXUy5Db25maWd1cmF0aW9uT3B0aW9uc1xuICB9XG4gIHRvOiB7XG4gICAgaW1hZ2VVcmk6IHN0cmluZ1xuICAgIGVjcj86IEFXUy5FQ1JcbiAgICBhd3NDb25maWc/OiBBV1MuQ29uZmlndXJhdGlvbk9wdGlvbnNcbiAgfVxufSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoZnJvbS5pbWFnZVVyaSA9PT0gdG8uaW1hZ2VVcmkpIHJldHVyblxuICBjb25zdCBzcmNSZXBvc2l0b3J5VXJpID0gZnJvbS5pbWFnZVVyaS5yZXBsYWNlKC86LisvLCAnJylcbiAgY29uc3QgcmVwb3NpdG9yeVVyaSA9IHRvLmltYWdlVXJpLnJlcGxhY2UoLzouKy8sICcnKVxuXG4gIGNvbnN0IHsgcmVnaW9uOiBmcm9tUmVnaW9uIH0gPSBwYXJzZUVDUkltYWdlVXJpKGZyb20uaW1hZ2VVcmkpXG4gIGNvbnN0IHtcbiAgICByZWdpb246IHRvUmVnaW9uLFxuICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgIGltYWdlVGFnLFxuICB9ID0gcGFyc2VFQ1JJbWFnZVVyaSh0by5pbWFnZVVyaSlcblxuICBpZiAoXG4gICAgYXdhaXQgZWNySW1hZ2VFeGlzdHMoe1xuICAgICAgYXdzQ29uZmlnOiB7IC4uLnRvLmF3c0NvbmZpZywgcmVnaW9uOiB0b1JlZ2lvbiB9LFxuICAgICAgZWNyOiB0by5lY3IsXG4gICAgICByZXBvc2l0b3J5TmFtZSxcbiAgICAgIGltYWdlVGFnLFxuICAgIH0pXG4gICkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBDbGFyaXR5IGltYWdlIGFscmVhZHkgZXhpc3RzIGluIHlvdXIgRUNSOiAke3JlcG9zaXRvcnlOYW1lfToke2ltYWdlVGFnfWBcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYExvZ2dpbmcgaW50byBzb3VyY2UgRUNSOiAke3NyY1JlcG9zaXRvcnlVcmkucmVwbGFjZSgvXFwvLiovLCAnJyl9Li4uYFxuICAgIClcblxuICAgIGF3YWl0IGxvZ2luVG9FQ1Ioe1xuICAgICAgZWNyOiBmcm9tLmVjcixcbiAgICAgIGF3c0NvbmZpZzogeyAuLi5mcm9tLmF3c0NvbmZpZywgcmVnaW9uOiBmcm9tUmVnaW9uIH0sXG4gICAgfSlcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihgUHVsbGluZyAke2Zyb20uaW1hZ2VVcml9Li4uYClcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWydwdWxsJywgZnJvbS5pbWFnZVVyaV0sIHsgc3RkaW86ICdpbmhlcml0JyB9KVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYExvZ2dpbmcgaW50byBkZXN0IEVDUjogJHtyZXBvc2l0b3J5VXJpLnJlcGxhY2UoL1xcLy4qLywgJycpfS4uLmBcbiAgICApXG4gICAgYXdhaXQgbG9naW5Ub0VDUih7XG4gICAgICBlY3I6IHRvLmVjcixcbiAgICAgIGF3c0NvbmZpZzogeyAuLi50by5hd3NDb25maWcsIHJlZ2lvbjogdG9SZWdpb24gfSxcbiAgICB9KVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKGBQdXNoaW5nICR7dG8uaW1hZ2VVcml9Li4uYClcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWyd0YWcnLCBmcm9tLmltYWdlVXJpLCB0by5pbWFnZVVyaV0sIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgfSlcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWydwdXNoJywgdG8uaW1hZ2VVcmldLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSlcbiAgfVxufVxuIl19
|
package/es/ecrImageExists.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import AWS from 'aws-sdk';
|
|
2
|
-
export default function ecrImageExists({ ecr, awsConfig, imageUri, registryId, repositoryName, imageTag, }: {
|
|
3
|
-
ecr?: AWS.ECR;
|
|
4
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
5
|
-
imageUri?: string;
|
|
6
|
-
registryId?: string;
|
|
7
|
-
repositoryName?: string;
|
|
8
|
-
imageTag?: string;
|
|
9
|
-
}): Promise<boolean>;
|
package/es/ecrImageExists.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = ecrImageExists;
|
|
7
|
-
|
|
8
|
-
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
async function ecrImageExists({
|
|
13
|
-
ecr,
|
|
14
|
-
awsConfig,
|
|
15
|
-
imageUri,
|
|
16
|
-
registryId,
|
|
17
|
-
repositoryName,
|
|
18
|
-
imageTag
|
|
19
|
-
}) {
|
|
20
|
-
let region;
|
|
21
|
-
|
|
22
|
-
if (imageUri) {
|
|
23
|
-
const match = /(\d+)\.dkr\.ecr\.(.+?)\.amazonaws\.com\/(.+?):(.+)/.exec(imageUri);
|
|
24
|
-
if (!match) throw new Error(`failed to parse imageUri: ${imageUri}`);
|
|
25
|
-
[, registryId, region, repositoryName, imageTag] = match;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!region) region = awsConfig === null || awsConfig === void 0 ? void 0 : awsConfig.region;
|
|
29
|
-
if (!ecr) ecr = new _awsSdk.default.ECR({ ...awsConfig,
|
|
30
|
-
region
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
if (!repositoryName || !imageTag) {
|
|
34
|
-
throw new Error(`missing repositoryName/imageTag or imageUri`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return await ecr.describeImages({
|
|
38
|
-
registryId,
|
|
39
|
-
repositoryName,
|
|
40
|
-
imageIds: [{
|
|
41
|
-
imageTag
|
|
42
|
-
}]
|
|
43
|
-
}).promise().then(() => true, () => false);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lY3JJbWFnZUV4aXN0cy50cyJdLCJuYW1lcyI6WyJlY3JJbWFnZUV4aXN0cyIsImVjciIsImF3c0NvbmZpZyIsImltYWdlVXJpIiwicmVnaXN0cnlJZCIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciLCJyZWdpb24iLCJtYXRjaCIsImV4ZWMiLCJFcnJvciIsIkFXUyIsIkVDUiIsImRlc2NyaWJlSW1hZ2VzIiwiaW1hZ2VJZHMiLCJwcm9taXNlIiwidGhlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRWUsZUFBZUEsY0FBZixDQUE4QjtBQUMzQ0MsRUFBQUEsR0FEMkM7QUFFM0NDLEVBQUFBLFNBRjJDO0FBRzNDQyxFQUFBQSxRQUgyQztBQUkzQ0MsRUFBQUEsVUFKMkM7QUFLM0NDLEVBQUFBLGNBTDJDO0FBTTNDQyxFQUFBQTtBQU4yQyxDQUE5QixFQWNNO0FBQ25CLE1BQUlDLE1BQUo7O0FBQ0EsTUFBSUosUUFBSixFQUFjO0FBQ1osVUFBTUssS0FBSyxHQUFHLHFEQUFxREMsSUFBckQsQ0FDWk4sUUFEWSxDQUFkO0FBR0EsUUFBSSxDQUFDSyxLQUFMLEVBQVksTUFBTSxJQUFJRSxLQUFKLENBQVcsNkJBQTRCUCxRQUFTLEVBQWhELENBQU47QUFDWCxPQUFHQyxVQUFILEVBQWVHLE1BQWYsRUFBdUJGLGNBQXZCLEVBQXVDQyxRQUF2QyxJQUFtREUsS0FBbkQ7QUFDRjs7QUFDRCxNQUFJLENBQUNELE1BQUwsRUFBYUEsTUFBTSxHQUFHTCxTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRUssTUFBcEI7QUFDYixNQUFJLENBQUNOLEdBQUwsRUFBVUEsR0FBRyxHQUFHLElBQUlVLGdCQUFJQyxHQUFSLENBQVksRUFBRSxHQUFHVixTQUFMO0FBQWdCSyxJQUFBQTtBQUFoQixHQUFaLENBQU47O0FBRVYsTUFBSSxDQUFDRixjQUFELElBQW1CLENBQUNDLFFBQXhCLEVBQWtDO0FBQ2hDLFVBQU0sSUFBSUksS0FBSixDQUFXLDZDQUFYLENBQU47QUFDRDs7QUFDRCxTQUFPLE1BQU1ULEdBQUcsQ0FDYlksY0FEVSxDQUNLO0FBQ2RULElBQUFBLFVBRGM7QUFFZEMsSUFBQUEsY0FGYztBQUdkUyxJQUFBQSxRQUFRLEVBQUUsQ0FBQztBQUFFUixNQUFBQTtBQUFGLEtBQUQ7QUFISSxHQURMLEVBTVZTLE9BTlUsR0FPVkMsSUFQVSxDQVFULE1BQU0sSUFSRyxFQVNULE1BQU0sS0FURyxDQUFiO0FBV0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGVjckltYWdlRXhpc3RzKHtcbiAgZWNyLFxuICBhd3NDb25maWcsXG4gIGltYWdlVXJpLFxuICByZWdpc3RyeUlkLFxuICByZXBvc2l0b3J5TmFtZSxcbiAgaW1hZ2VUYWcsXG59OiB7XG4gIGVjcj86IEFXUy5FQ1JcbiAgYXdzQ29uZmlnPzogQVdTLkNvbmZpZ3VyYXRpb25PcHRpb25zXG4gIGltYWdlVXJpPzogc3RyaW5nXG4gIHJlZ2lzdHJ5SWQ/OiBzdHJpbmdcbiAgcmVwb3NpdG9yeU5hbWU/OiBzdHJpbmdcbiAgaW1hZ2VUYWc/OiBzdHJpbmdcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgbGV0IHJlZ2lvblxuICBpZiAoaW1hZ2VVcmkpIHtcbiAgICBjb25zdCBtYXRjaCA9IC8oXFxkKylcXC5ka3JcXC5lY3JcXC4oLis/KVxcLmFtYXpvbmF3c1xcLmNvbVxcLyguKz8pOiguKykvLmV4ZWMoXG4gICAgICBpbWFnZVVyaVxuICAgIClcbiAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byBwYXJzZSBpbWFnZVVyaTogJHtpbWFnZVVyaX1gKVxuICAgIDtbLCByZWdpc3RyeUlkLCByZWdpb24sIHJlcG9zaXRvcnlOYW1lLCBpbWFnZVRhZ10gPSBtYXRjaFxuICB9XG4gIGlmICghcmVnaW9uKSByZWdpb24gPSBhd3NDb25maWc/LnJlZ2lvblxuICBpZiAoIWVjcikgZWNyID0gbmV3IEFXUy5FQ1IoeyAuLi5hd3NDb25maWcsIHJlZ2lvbiB9KVxuXG4gIGlmICghcmVwb3NpdG9yeU5hbWUgfHwgIWltYWdlVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIHJlcG9zaXRvcnlOYW1lL2ltYWdlVGFnIG9yIGltYWdlVXJpYClcbiAgfVxuICByZXR1cm4gYXdhaXQgZWNyXG4gICAgLmRlc2NyaWJlSW1hZ2VzKHtcbiAgICAgIHJlZ2lzdHJ5SWQsXG4gICAgICByZXBvc2l0b3J5TmFtZSxcbiAgICAgIGltYWdlSWRzOiBbeyBpbWFnZVRhZyB9XSxcbiAgICB9KVxuICAgIC5wcm9taXNlKClcbiAgICAudGhlbihcbiAgICAgICgpID0+IHRydWUsXG4gICAgICAoKSA9PiBmYWxzZVxuICAgIClcbn1cbiJdfQ==
|
package/es/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { default as copyECRImage } from './copyECRImage';
|
|
2
|
-
export { default as ecrImageExists } from './ecrImageExists';
|
|
3
|
-
export { default as loginToECR } from './loginToECR';
|
|
4
|
-
export { default as tagECRImage } from './tagECRImage';
|
|
5
|
-
export { default as parseECRImageUri } from './parseECRImageUri';
|
|
6
|
-
export { default as upsertECRRepository } from './upsertECRRepository';
|
package/es/index.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "copyECRImage", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _copyECRImage.default;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "ecrImageExists", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _ecrImageExists.default;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "loginToECR", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _loginToECR.default;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "parseECRImageUri", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _parseECRImageUri.default;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "tagECRImage", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _tagECRImage.default;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, "upsertECRRepository", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () {
|
|
39
|
-
return _upsertECRRepository.default;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
var _copyECRImage = _interopRequireDefault(require("./copyECRImage"));
|
|
44
|
-
|
|
45
|
-
var _ecrImageExists = _interopRequireDefault(require("./ecrImageExists"));
|
|
46
|
-
|
|
47
|
-
var _loginToECR = _interopRequireDefault(require("./loginToECR"));
|
|
48
|
-
|
|
49
|
-
var _tagECRImage = _interopRequireDefault(require("./tagECRImage"));
|
|
50
|
-
|
|
51
|
-
var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
|
|
52
|
-
|
|
53
|
-
var _upsertECRRepository = _interopRequireDefault(require("./upsertECRRepository"));
|
|
54
|
-
|
|
55
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgY29weUVDUkltYWdlIH0gZnJvbSAnLi9jb3B5RUNSSW1hZ2UnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGVjckltYWdlRXhpc3RzIH0gZnJvbSAnLi9lY3JJbWFnZUV4aXN0cydcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbG9naW5Ub0VDUiB9IGZyb20gJy4vbG9naW5Ub0VDUidcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGFnRUNSSW1hZ2UgfSBmcm9tICcuL3RhZ0VDUkltYWdlJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUVDUkltYWdlVXJpIH0gZnJvbSAnLi9wYXJzZUVDUkltYWdlVXJpJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cHNlcnRFQ1JSZXBvc2l0b3J5IH0gZnJvbSAnLi91cHNlcnRFQ1JSZXBvc2l0b3J5J1xuIl19
|
package/es/loginToECR.d.ts
DELETED
package/es/loginToECR.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = loginToECR;
|
|
7
|
-
|
|
8
|
-
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
9
|
-
|
|
10
|
-
var _promisifyChildProcess = require("promisify-child-process");
|
|
11
|
-
|
|
12
|
-
var _base64Js = _interopRequireDefault(require("base64-js"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @prettier
|
|
18
|
-
*/
|
|
19
|
-
async function loginToECR({
|
|
20
|
-
ecr,
|
|
21
|
-
awsConfig
|
|
22
|
-
}) {
|
|
23
|
-
if (!ecr) ecr = new _awsSdk.default.ECR(awsConfig);
|
|
24
|
-
const {
|
|
25
|
-
authorizationData
|
|
26
|
-
} = await ecr.getAuthorizationToken().promise();
|
|
27
|
-
const {
|
|
28
|
-
authorizationToken,
|
|
29
|
-
proxyEndpoint
|
|
30
|
-
} = (authorizationData === null || authorizationData === void 0 ? void 0 : authorizationData[0]) || {};
|
|
31
|
-
|
|
32
|
-
if (!authorizationToken) {
|
|
33
|
-
throw new Error('failed to get authorizationToken from ECR');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (!proxyEndpoint) {
|
|
37
|
-
throw new Error('failed to get proxyEndpoint from ECR');
|
|
38
|
-
} // this is silly...
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const decoded = new Buffer(_base64Js.default.toByteArray(authorizationToken)).toString('utf8');
|
|
42
|
-
const [user, password] = decoded.split(/:/);
|
|
43
|
-
const child = (0, _promisifyChildProcess.spawn)('docker', ['login', '-u', user, '--password-stdin', proxyEndpoint], {
|
|
44
|
-
stdio: 'pipe',
|
|
45
|
-
encoding: 'utf8'
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
if (!child.stdin) {
|
|
49
|
-
throw new Error('expected child.stdin to be defined');
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
child.stdin.write(password);
|
|
53
|
-
child.stdin.end();
|
|
54
|
-
await child;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dpblRvRUNSLnRzIl0sIm5hbWVzIjpbImxvZ2luVG9FQ1IiLCJlY3IiLCJhd3NDb25maWciLCJBV1MiLCJFQ1IiLCJhdXRob3JpemF0aW9uRGF0YSIsImdldEF1dGhvcml6YXRpb25Ub2tlbiIsInByb21pc2UiLCJhdXRob3JpemF0aW9uVG9rZW4iLCJwcm94eUVuZHBvaW50IiwiRXJyb3IiLCJkZWNvZGVkIiwiQnVmZmVyIiwiYmFzZTY0IiwidG9CeXRlQXJyYXkiLCJ0b1N0cmluZyIsInVzZXIiLCJwYXNzd29yZCIsInNwbGl0IiwiY2hpbGQiLCJzdGRpbyIsImVuY29kaW5nIiwic3RkaW4iLCJ3cml0ZSIsImVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUNBOztBQUNBOzs7O0FBTEE7QUFDQTtBQUNBO0FBS2UsZUFBZUEsVUFBZixDQUEwQjtBQUN2Q0MsRUFBQUEsR0FEdUM7QUFFdkNDLEVBQUFBO0FBRnVDLENBQTFCLEVBTUc7QUFDaEIsTUFBSSxDQUFDRCxHQUFMLEVBQVVBLEdBQUcsR0FBRyxJQUFJRSxnQkFBSUMsR0FBUixDQUFZRixTQUFaLENBQU47QUFDVixRQUFNO0FBQUVHLElBQUFBO0FBQUYsTUFBd0IsTUFBTUosR0FBRyxDQUFDSyxxQkFBSixHQUE0QkMsT0FBNUIsRUFBcEM7QUFDQSxRQUFNO0FBQUVDLElBQUFBLGtCQUFGO0FBQXNCQyxJQUFBQTtBQUF0QixNQUF3QyxDQUFBSixpQkFBaUIsU0FBakIsSUFBQUEsaUJBQWlCLFdBQWpCLFlBQUFBLGlCQUFpQixDQUFHLENBQUgsQ0FBakIsS0FBMEIsRUFBeEU7O0FBQ0EsTUFBSSxDQUFDRyxrQkFBTCxFQUF5QjtBQUN2QixVQUFNLElBQUlFLEtBQUosQ0FBVSwyQ0FBVixDQUFOO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDRCxhQUFMLEVBQW9CO0FBQ2xCLFVBQU0sSUFBSUMsS0FBSixDQUFVLHNDQUFWLENBQU47QUFDRCxHQVRlLENBVWhCOzs7QUFDQSxRQUFNQyxPQUFPLEdBQUcsSUFBSUMsTUFBSixDQUFXQyxrQkFBT0MsV0FBUCxDQUFtQk4sa0JBQW5CLENBQVgsRUFBbURPLFFBQW5ELENBQ2QsTUFEYyxDQUFoQjtBQUdBLFFBQU0sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLElBQW1CTixPQUFPLENBQUNPLEtBQVIsQ0FBYyxHQUFkLENBQXpCO0FBQ0EsUUFBTUMsS0FBSyxHQUFHLGtDQUNaLFFBRFksRUFFWixDQUFDLE9BQUQsRUFBVSxJQUFWLEVBQWdCSCxJQUFoQixFQUFzQixrQkFBdEIsRUFBMENQLGFBQTFDLENBRlksRUFHWjtBQUNFVyxJQUFBQSxLQUFLLEVBQUUsTUFEVDtBQUVFQyxJQUFBQSxRQUFRLEVBQUU7QUFGWixHQUhZLENBQWQ7O0FBUUEsTUFBSSxDQUFDRixLQUFLLENBQUNHLEtBQVgsRUFBa0I7QUFDaEIsVUFBTSxJQUFJWixLQUFKLENBQVUsb0NBQVYsQ0FBTjtBQUNEOztBQUNEUyxFQUFBQSxLQUFLLENBQUNHLEtBQU4sQ0FBWUMsS0FBWixDQUFrQk4sUUFBbEI7QUFDQUUsRUFBQUEsS0FBSyxDQUFDRyxLQUFOLENBQVlFLEdBQVo7QUFDQSxRQUFNTCxLQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ3Byb21pc2lmeS1jaGlsZC1wcm9jZXNzJ1xuaW1wb3J0IGJhc2U2NCBmcm9tICdiYXNlNjQtanMnXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGxvZ2luVG9FQ1Ioe1xuICBlY3IsXG4gIGF3c0NvbmZpZyxcbn06IHtcbiAgZWNyPzogQVdTLkVDUlxuICBhd3NDb25maWc/OiBBV1MuQ29uZmlndXJhdGlvbk9wdGlvbnNcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFlY3IpIGVjciA9IG5ldyBBV1MuRUNSKGF3c0NvbmZpZylcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uRGF0YSB9ID0gYXdhaXQgZWNyLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLnByb21pc2UoKVxuICBjb25zdCB7IGF1dGhvcml6YXRpb25Ub2tlbiwgcHJveHlFbmRwb2ludCB9ID0gYXV0aG9yaXphdGlvbkRhdGE/LlswXSB8fCB7fVxuICBpZiAoIWF1dGhvcml6YXRpb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGdldCBhdXRob3JpemF0aW9uVG9rZW4gZnJvbSBFQ1InKVxuICB9XG4gIGlmICghcHJveHlFbmRwb2ludCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGdldCBwcm94eUVuZHBvaW50IGZyb20gRUNSJylcbiAgfVxuICAvLyB0aGlzIGlzIHNpbGx5Li4uXG4gIGNvbnN0IGRlY29kZWQgPSBuZXcgQnVmZmVyKGJhc2U2NC50b0J5dGVBcnJheShhdXRob3JpemF0aW9uVG9rZW4pKS50b1N0cmluZyhcbiAgICAndXRmOCdcbiAgKVxuICBjb25zdCBbdXNlciwgcGFzc3dvcmRdID0gZGVjb2RlZC5zcGxpdCgvOi8pXG4gIGNvbnN0IGNoaWxkID0gc3Bhd24oXG4gICAgJ2RvY2tlcicsXG4gICAgWydsb2dpbicsICctdScsIHVzZXIsICctLXBhc3N3b3JkLXN0ZGluJywgcHJveHlFbmRwb2ludF0sXG4gICAge1xuICAgICAgc3RkaW86ICdwaXBlJyxcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgfVxuICApXG4gIGlmICghY2hpbGQuc3RkaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIGNoaWxkLnN0ZGluIHRvIGJlIGRlZmluZWQnKVxuICB9XG4gIGNoaWxkLnN0ZGluLndyaXRlKHBhc3N3b3JkKVxuICBjaGlsZC5zdGRpbi5lbmQoKVxuICBhd2FpdCBjaGlsZFxufVxuIl19
|
package/es/parseECRImageUri.d.ts
DELETED
package/es/parseECRImageUri.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = parseECRImageUri;
|
|
7
|
-
|
|
8
|
-
function parseECRImageUri(imageUri) {
|
|
9
|
-
const match = /(\d+)\.dkr\.ecr\.([^.]+)\.amazonaws\.com\/([^:]+):(.+)/.exec(imageUri);
|
|
10
|
-
if (!match) throw new Error(`invalid imageUri: ${imageUri}`);
|
|
11
|
-
const [, registryId, region, repositoryName, imageTag] = match;
|
|
12
|
-
return {
|
|
13
|
-
registryId,
|
|
14
|
-
region,
|
|
15
|
-
repositoryName,
|
|
16
|
-
imageTag
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUVDUkltYWdlVXJpLnRzIl0sIm5hbWVzIjpbInBhcnNlRUNSSW1hZ2VVcmkiLCJpbWFnZVVyaSIsIm1hdGNoIiwiZXhlYyIsIkVycm9yIiwicmVnaXN0cnlJZCIsInJlZ2lvbiIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZSxTQUFTQSxnQkFBVCxDQUEwQkMsUUFBMUIsRUFLYjtBQUNBLFFBQU1DLEtBQUssR0FBRyx5REFBeURDLElBQXpELENBQ1pGLFFBRFksQ0FBZDtBQUdBLE1BQUksQ0FBQ0MsS0FBTCxFQUFZLE1BQU0sSUFBSUUsS0FBSixDQUFXLHFCQUFvQkgsUUFBUyxFQUF4QyxDQUFOO0FBQ1osUUFBTSxHQUFHSSxVQUFILEVBQWVDLE1BQWYsRUFBdUJDLGNBQXZCLEVBQXVDQyxRQUF2QyxJQUFtRE4sS0FBekQ7QUFDQSxTQUFPO0FBQUVHLElBQUFBLFVBQUY7QUFBY0MsSUFBQUEsTUFBZDtBQUFzQkMsSUFBQUEsY0FBdEI7QUFBc0NDLElBQUFBO0FBQXRDLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlRUNSSW1hZ2VVcmkoaW1hZ2VVcmk6IHN0cmluZyk6IHtcbiAgcmVnaXN0cnlJZDogc3RyaW5nXG4gIHJlZ2lvbjogc3RyaW5nXG4gIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmdcbiAgaW1hZ2VUYWc6IHN0cmluZ1xufSB7XG4gIGNvbnN0IG1hdGNoID0gLyhcXGQrKVxcLmRrclxcLmVjclxcLihbXi5dKylcXC5hbWF6b25hd3NcXC5jb21cXC8oW146XSspOiguKykvLmV4ZWMoXG4gICAgaW1hZ2VVcmlcbiAgKVxuICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW1hZ2VVcmk6ICR7aW1hZ2VVcml9YClcbiAgY29uc3QgWywgcmVnaXN0cnlJZCwgcmVnaW9uLCByZXBvc2l0b3J5TmFtZSwgaW1hZ2VUYWddID0gbWF0Y2hcbiAgcmV0dXJuIHsgcmVnaXN0cnlJZCwgcmVnaW9uLCByZXBvc2l0b3J5TmFtZSwgaW1hZ2VUYWcgfVxufVxuIl19
|
package/es/tagECRImage.d.ts
DELETED
package/es/tagECRImage.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = tagECRImage;
|
|
7
|
-
|
|
8
|
-
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
9
|
-
|
|
10
|
-
var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @prettier
|
|
16
|
-
*/
|
|
17
|
-
async function tagECRImage({
|
|
18
|
-
ecr,
|
|
19
|
-
awsConfig,
|
|
20
|
-
imageUri,
|
|
21
|
-
tags
|
|
22
|
-
}) {
|
|
23
|
-
const {
|
|
24
|
-
region,
|
|
25
|
-
repositoryName,
|
|
26
|
-
imageTag
|
|
27
|
-
} = (0, _parseECRImageUri.default)(imageUri);
|
|
28
|
-
if (!ecr) ecr = new _awsSdk.default.ECR({ ...awsConfig,
|
|
29
|
-
region
|
|
30
|
-
});
|
|
31
|
-
const imageManifest = await ecr.batchGetImage({
|
|
32
|
-
repositoryName,
|
|
33
|
-
imageIds: [{
|
|
34
|
-
imageTag
|
|
35
|
-
}]
|
|
36
|
-
}).promise().then(r => {
|
|
37
|
-
var _r$images, _r$images$;
|
|
38
|
-
|
|
39
|
-
return r === null || r === void 0 ? void 0 : (_r$images = r.images) === null || _r$images === void 0 ? void 0 : (_r$images$ = _r$images[0]) === null || _r$images$ === void 0 ? void 0 : _r$images$.imageManifest;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
if (!imageManifest) {
|
|
43
|
-
throw new Error(`failed to get image manifest for ${imageUri}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (imageManifest) {
|
|
47
|
-
// add other tags to ECR
|
|
48
|
-
for (const tag of tags) {
|
|
49
|
-
// eslint-disable-next-line no-console
|
|
50
|
-
console.error(`Adding tag ${repositoryName}:${tag}`);
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
await ecr.putImage({
|
|
54
|
-
repositoryName,
|
|
55
|
-
imageManifest,
|
|
56
|
-
imageTag: tag.substring(tag.indexOf(':') + 1)
|
|
57
|
-
}).promise();
|
|
58
|
-
} catch (error) {
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
-
if ((error === null || error === void 0 ? void 0 : error.code) !== 'ImageAlreadyExistsException') throw error;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdFQ1JJbWFnZS50cyJdLCJuYW1lcyI6WyJ0YWdFQ1JJbWFnZSIsImVjciIsImF3c0NvbmZpZyIsImltYWdlVXJpIiwidGFncyIsInJlZ2lvbiIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciLCJBV1MiLCJFQ1IiLCJpbWFnZU1hbmlmZXN0IiwiYmF0Y2hHZXRJbWFnZSIsImltYWdlSWRzIiwicHJvbWlzZSIsInRoZW4iLCJyIiwiaW1hZ2VzIiwiRXJyb3IiLCJ0YWciLCJjb25zb2xlIiwiZXJyb3IiLCJwdXRJbWFnZSIsInN1YnN0cmluZyIsImluZGV4T2YiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0E7O0FBQ0E7Ozs7QUFKQTtBQUNBO0FBQ0E7QUFJZSxlQUFlQSxXQUFmLENBQTJCO0FBQ3hDQyxFQUFBQSxHQUR3QztBQUV4Q0MsRUFBQUEsU0FGd0M7QUFHeENDLEVBQUFBLFFBSHdDO0FBSXhDQyxFQUFBQTtBQUp3QyxDQUEzQixFQVVHO0FBQ2hCLFFBQU07QUFBRUMsSUFBQUEsTUFBRjtBQUFVQyxJQUFBQSxjQUFWO0FBQTBCQyxJQUFBQTtBQUExQixNQUF1QywrQkFBaUJKLFFBQWpCLENBQTdDO0FBQ0EsTUFBSSxDQUFDRixHQUFMLEVBQVVBLEdBQUcsR0FBRyxJQUFJTyxnQkFBSUMsR0FBUixDQUFZLEVBQUUsR0FBR1AsU0FBTDtBQUFnQkcsSUFBQUE7QUFBaEIsR0FBWixDQUFOO0FBRVYsUUFBTUssYUFBYSxHQUFHLE1BQU1ULEdBQUcsQ0FDNUJVLGFBRHlCLENBQ1g7QUFDYkwsSUFBQUEsY0FEYTtBQUViTSxJQUFBQSxRQUFRLEVBQUUsQ0FBQztBQUFFTCxNQUFBQTtBQUFGLEtBQUQ7QUFGRyxHQURXLEVBS3pCTSxPQUx5QixHQU16QkMsSUFOeUIsQ0FNbkJDLENBQUQ7QUFBQTs7QUFBQSxXQUFPQSxDQUFQLGFBQU9BLENBQVAsb0NBQU9BLENBQUMsQ0FBRUMsTUFBViw0REFBTyxVQUFZLENBQVosQ0FBUCwrQ0FBTyxXQUFnQk4sYUFBdkI7QUFBQSxHQU5vQixDQUE1Qjs7QUFRQSxNQUFJLENBQUNBLGFBQUwsRUFBb0I7QUFDbEIsVUFBTSxJQUFJTyxLQUFKLENBQVcsb0NBQW1DZCxRQUFTLEVBQXZELENBQU47QUFDRDs7QUFFRCxNQUFJTyxhQUFKLEVBQW1CO0FBQ2pCO0FBQ0EsU0FBSyxNQUFNUSxHQUFYLElBQWtCZCxJQUFsQixFQUF3QjtBQUN0QjtBQUNBZSxNQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBZSxjQUFhZCxjQUFlLElBQUdZLEdBQUksRUFBbEQ7O0FBQ0EsVUFBSTtBQUNGLGNBQU1qQixHQUFHLENBQ05vQixRQURHLENBQ007QUFDUmYsVUFBQUEsY0FEUTtBQUVSSSxVQUFBQSxhQUZRO0FBR1JILFVBQUFBLFFBQVEsRUFBRVcsR0FBRyxDQUFDSSxTQUFKLENBQWNKLEdBQUcsQ0FBQ0ssT0FBSixDQUFZLEdBQVosSUFBbUIsQ0FBakM7QUFIRixTQUROLEVBTUhWLE9BTkcsRUFBTjtBQU9ELE9BUkQsQ0FRRSxPQUFPTyxLQUFQLEVBQWM7QUFDZDtBQUNBLFlBQUksQ0FBQ0EsS0FBRCxhQUFDQSxLQUFELHVCQUFDQSxLQUFELENBQWdCSSxJQUFoQixNQUF5Qiw2QkFBN0IsRUFBNEQsTUFBTUosS0FBTjtBQUM3RDtBQUNGO0FBQ0Y7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBBV1MgZnJvbSAnYXdzLXNkaydcbmltcG9ydCBwYXJzZUVDUkltYWdlVXJpIGZyb20gJy4vcGFyc2VFQ1JJbWFnZVVyaSdcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdGFnRUNSSW1hZ2Uoe1xuICBlY3IsXG4gIGF3c0NvbmZpZyxcbiAgaW1hZ2VVcmksXG4gIHRhZ3MsXG59OiB7XG4gIGVjcj86IEFXUy5FQ1JcbiAgYXdzQ29uZmlnPzogQVdTLkNvbmZpZ3VyYXRpb25PcHRpb25zXG4gIGltYWdlVXJpOiBzdHJpbmdcbiAgdGFnczogc3RyaW5nW11cbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyByZWdpb24sIHJlcG9zaXRvcnlOYW1lLCBpbWFnZVRhZyB9ID0gcGFyc2VFQ1JJbWFnZVVyaShpbWFnZVVyaSlcbiAgaWYgKCFlY3IpIGVjciA9IG5ldyBBV1MuRUNSKHsgLi4uYXdzQ29uZmlnLCByZWdpb24gfSlcblxuICBjb25zdCBpbWFnZU1hbmlmZXN0ID0gYXdhaXQgZWNyXG4gICAgLmJhdGNoR2V0SW1hZ2Uoe1xuICAgICAgcmVwb3NpdG9yeU5hbWUsXG4gICAgICBpbWFnZUlkczogW3sgaW1hZ2VUYWcgfV0sXG4gICAgfSlcbiAgICAucHJvbWlzZSgpXG4gICAgLnRoZW4oKHIpID0+IHI/LmltYWdlcz8uWzBdPy5pbWFnZU1hbmlmZXN0KVxuXG4gIGlmICghaW1hZ2VNYW5pZmVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGdldCBpbWFnZSBtYW5pZmVzdCBmb3IgJHtpbWFnZVVyaX1gKVxuICB9XG5cbiAgaWYgKGltYWdlTWFuaWZlc3QpIHtcbiAgICAvLyBhZGQgb3RoZXIgdGFncyB0byBFQ1JcbiAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihgQWRkaW5nIHRhZyAke3JlcG9zaXRvcnlOYW1lfToke3RhZ31gKVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZWNyXG4gICAgICAgICAgLnB1dEltYWdlKHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgICAgICAgICAgaW1hZ2VNYW5pZmVzdCxcbiAgICAgICAgICAgIGltYWdlVGFnOiB0YWcuc3Vic3RyaW5nKHRhZy5pbmRleE9mKCc6JykgKyAxKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5wcm9taXNlKClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGlmICgoZXJyb3IgYXMgYW55KT8uY29kZSAhPT0gJ0ltYWdlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbicpIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|