@aws-cdk-testing/cli-integ 3.1.2 → 3.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/package.json +4 -4
- package/resources/cdk-apps/app/app.js +34 -0
- package/resources/cli-regression-patches/v2.178.1/NOTES.md +2 -0
- package/resources/cli-regression-patches/v2.178.1/skip-tests.txt +1 -0
- package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.js +74 -0
- package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.ts +83 -0
- package/tests/cli-integ-tests/cli.integtest.js +52 -1
- package/tests/cli-integ-tests/cli.integtest.ts +67 -0
- package/bin/query-github.js +0 -54
- package/bin/run-suite.d.ts +0 -1
- package/bin/run-suite.js +0 -131
- package/bin/stage-distribution.d.ts +0 -1
- package/bin/stage-distribution.js +0 -217
- package/bin/test-root.d.ts +0 -1
- package/bin/test-root.js +0 -6
- /package/{bin/query-github.d.ts → tests/cli-integ-tests/cdk-assets/smoketest.integtest.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -51,14 +51,14 @@
|
|
|
51
51
|
"constructs": "^10.0.0",
|
|
52
52
|
"eslint": "^9",
|
|
53
53
|
"eslint-config-prettier": "^9.1.0",
|
|
54
|
-
"eslint-import-resolver-typescript": "^3.
|
|
54
|
+
"eslint-import-resolver-typescript": "^3.8.3",
|
|
55
55
|
"eslint-plugin-import": "^2.31.0",
|
|
56
56
|
"eslint-plugin-jest": "^28.11.0",
|
|
57
57
|
"eslint-plugin-prettier": "^5.2.3",
|
|
58
58
|
"jest": "^29.7.0",
|
|
59
59
|
"jest-junit": "^16",
|
|
60
60
|
"prettier": "^2.8",
|
|
61
|
-
"projen": "^0.91.
|
|
61
|
+
"projen": "^0.91.13",
|
|
62
62
|
"ts-jest": "^29.2.5",
|
|
63
63
|
"typescript": "5.6"
|
|
64
64
|
},
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"@aws-sdk/client-sso": "^3",
|
|
75
75
|
"@aws-sdk/client-sts": "^3",
|
|
76
76
|
"@aws-sdk/credential-providers": "^3",
|
|
77
|
-
"@cdklabs/cdk-atmosphere-client": "^0.0.
|
|
77
|
+
"@cdklabs/cdk-atmosphere-client": "^0.0.17",
|
|
78
78
|
"@octokit/rest": "^18.12.0",
|
|
79
79
|
"@smithy/types": "^3",
|
|
80
80
|
"@smithy/util-retry": "^3",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"publishConfig": {
|
|
109
109
|
"access": "public"
|
|
110
110
|
},
|
|
111
|
-
"version": "3.
|
|
111
|
+
"version": "3.2.0",
|
|
112
112
|
"types": "lib/index.d.ts",
|
|
113
113
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
|
|
114
114
|
}
|
|
@@ -11,6 +11,7 @@ if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
|
11
11
|
var sns = require('@aws-cdk/aws-sns');
|
|
12
12
|
var sqs = require('@aws-cdk/aws-sqs');
|
|
13
13
|
var lambda = require('@aws-cdk/aws-lambda');
|
|
14
|
+
var node_lambda = require('@aws-cdk/aws-lambda-nodejs');
|
|
14
15
|
var sso = require('@aws-cdk/aws-sso');
|
|
15
16
|
var docker = require('@aws-cdk/aws-ecr-assets');
|
|
16
17
|
var appsync = require('@aws-cdk/aws-appsync');
|
|
@@ -28,6 +29,7 @@ if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
|
28
29
|
aws_sns: sns,
|
|
29
30
|
aws_sqs: sqs,
|
|
30
31
|
aws_lambda: lambda,
|
|
32
|
+
aws_lambda_nodejs: node_lambda,
|
|
31
33
|
aws_ecr_assets: docker,
|
|
32
34
|
aws_appsync: appsync,
|
|
33
35
|
Stack
|
|
@@ -264,6 +266,20 @@ class ImportableStack extends cdk.Stack {
|
|
|
264
266
|
});
|
|
265
267
|
}
|
|
266
268
|
|
|
269
|
+
if (process.env.INCLUDE_SINGLE_BUCKET === '1') {
|
|
270
|
+
const bucket = new s3.Bucket(this, 'test-bucket', {
|
|
271
|
+
removalPolicy: (process.env.RETAIN_SINGLE_BUCKET === '1') ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY,
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
new cdk.CfnOutput(this, 'BucketLogicalId', {
|
|
275
|
+
value: bucket.node.defaultChild.logicalId,
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
new cdk.CfnOutput(this, 'BucketName', {
|
|
279
|
+
value: bucket.bucketName,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
267
283
|
if (process.env.LARGE_TEMPLATE === '1') {
|
|
268
284
|
for (let i = 1; i <= 70; i++) {
|
|
269
285
|
new sqs.Queue(this, `cdk-import-queue-test${i}`, {
|
|
@@ -272,6 +288,24 @@ class ImportableStack extends cdk.Stack {
|
|
|
272
288
|
});
|
|
273
289
|
}
|
|
274
290
|
}
|
|
291
|
+
|
|
292
|
+
if (process.env.INCLUDE_NODEJS_FUNCTION_LAMBDA === '1') {
|
|
293
|
+
new node_lambda.NodejsFunction(
|
|
294
|
+
this,
|
|
295
|
+
'cdk-import-nodejs-lambda-test',
|
|
296
|
+
{
|
|
297
|
+
bundling: {
|
|
298
|
+
minify: true,
|
|
299
|
+
sourceMap: false,
|
|
300
|
+
sourcesContent: false,
|
|
301
|
+
target: 'ES2020',
|
|
302
|
+
forceDockerBundling: true,
|
|
303
|
+
},
|
|
304
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
305
|
+
entry: path.join(__dirname, 'lambda/index.js')
|
|
306
|
+
}
|
|
307
|
+
)
|
|
308
|
+
}
|
|
275
309
|
}
|
|
276
310
|
}
|
|
277
311
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sam can locally test the synthesized cdk application
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Tests for the standalone cdk-assets executable, as used by CDK Pipelines
|
|
5
|
+
*/
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const lib_1 = require("../../../lib");
|
|
9
|
+
jest.setTimeout(2 * 60 * 60000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
10
|
+
const MAJOR_VERSIONS = ['2', 'v3-latest'];
|
|
11
|
+
MAJOR_VERSIONS.forEach(MV => {
|
|
12
|
+
(0, lib_1.integTest)(`cdk-assets@${MV} smoke test`, (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
13
|
+
await fixture.shell(['npm', 'init', '-y']);
|
|
14
|
+
await fixture.shell(['npm', 'install', `cdk-assets@${MV}`]);
|
|
15
|
+
const account = await fixture.aws.account();
|
|
16
|
+
const region = fixture.aws.region;
|
|
17
|
+
const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
|
|
18
|
+
const repositoryName = `cdk-hnb659fds-container-assets-${account}-${region}`;
|
|
19
|
+
const imageDir = 'imagedir';
|
|
20
|
+
await fs_1.promises.mkdir(path.join(fixture.integTestDir, imageDir), { recursive: true });
|
|
21
|
+
// Write an asset file and a data file for the Docker image
|
|
22
|
+
const assetFile = 'testfile.txt';
|
|
23
|
+
for (const toCreate of [assetFile, `${imageDir}/datafile.txt`]) {
|
|
24
|
+
await fs_1.promises.writeFile(path.join(fixture.integTestDir, toCreate), 'some asset file');
|
|
25
|
+
}
|
|
26
|
+
// Write a Dockerfile for the image build with a data file in it
|
|
27
|
+
await fs_1.promises.writeFile(path.join(fixture.integTestDir, imageDir, 'Dockerfile'), [
|
|
28
|
+
'FROM scratch',
|
|
29
|
+
'ADD datafile.txt datafile.txt',
|
|
30
|
+
].join('\n'));
|
|
31
|
+
// Write an asset JSON file to publish to the bootstrapped environment
|
|
32
|
+
const assetsJson = {
|
|
33
|
+
version: "38.0.1",
|
|
34
|
+
files: {
|
|
35
|
+
testfile: {
|
|
36
|
+
source: {
|
|
37
|
+
path: assetFile,
|
|
38
|
+
packaging: 'file',
|
|
39
|
+
},
|
|
40
|
+
destinations: {
|
|
41
|
+
current: {
|
|
42
|
+
region,
|
|
43
|
+
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
|
|
44
|
+
bucketName,
|
|
45
|
+
objectKey: `test-file-${Date.now()}.json`,
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
dockerImages: {
|
|
51
|
+
testimage: {
|
|
52
|
+
source: {
|
|
53
|
+
directory: imageDir,
|
|
54
|
+
},
|
|
55
|
+
destinations: {
|
|
56
|
+
current: {
|
|
57
|
+
region,
|
|
58
|
+
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-image-publishing-role-${account}-${region}`,
|
|
59
|
+
repositoryName,
|
|
60
|
+
imageTag: `test-image`, // Not fresh on every run because we'll run out of tags too easily
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
await fs_1.promises.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
|
|
67
|
+
await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', '--verbose', 'publish'], {
|
|
68
|
+
modEnv: {
|
|
69
|
+
...fixture.cdkShellEnv(),
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21va2V0ZXN0LmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNtb2tldGVzdC5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7R0FFRztBQUNILDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0Isc0NBQTZEO0FBRTdELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUUxQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLElBQUEsZUFBUyxFQUNQLGNBQWMsRUFBRSxhQUFhLEVBQzdCLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ25DLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyx3QkFBd0IsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQy9ELE1BQU0sY0FBYyxHQUFHLGtDQUFrQyxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7UUFFN0UsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzVCLE1BQU0sYUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRSwyREFBMkQ7UUFDM0QsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2pDLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxRQUFRLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDMUUsY0FBYztZQUNkLCtCQUErQjtTQUNoQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWQsc0VBQXNFO1FBQ3RFLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ1IsTUFBTSxFQUFFO3dCQUNOLElBQUksRUFBRSxTQUFTO3dCQUNmLFNBQVMsRUFBRSxNQUFNO3FCQUNsQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osT0FBTyxFQUFFOzRCQUNQLE1BQU07NEJBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDRDQUE0QyxPQUFPLElBQUksTUFBTSxFQUFFOzRCQUNwSCxVQUFVOzRCQUNWLFNBQVMsRUFBRSxhQUFhLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTzt5QkFDMUM7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELFlBQVksRUFBRTtnQkFDWixTQUFTLEVBQUU7b0JBQ1QsTUFBTSxFQUFFO3dCQUNOLFNBQVMsRUFBRSxRQUFRO3FCQUNwQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osT0FBTyxFQUFFOzRCQUNQLE1BQU07NEJBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDZDQUE2QyxPQUFPLElBQUksTUFBTSxFQUFFOzRCQUNySCxjQUFjOzRCQUNkLFFBQVEsRUFBRSxZQUFZLEVBQUUsa0VBQWtFO3lCQUMzRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUMxRixNQUFNLEVBQUU7Z0JBQ04sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUZXN0cyBmb3IgdGhlIHN0YW5kYWxvbmUgY2RrLWFzc2V0cyBleGVjdXRhYmxlLCBhcyB1c2VkIGJ5IENESyBQaXBlbGluZXNcbiAqL1xuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5qZXN0LnNldFRpbWVvdXQoMiAqIDYwICogNjBfMDAwKTsgLy8gSW5jbHVkZXMgdGhlIHRpbWUgdG8gYWNxdWlyZSBsb2Nrcywgd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZVxuXG5jb25zdCBNQUpPUl9WRVJTSU9OUyA9IFsnMicsICd2My1sYXRlc3QnXTtcblxuTUFKT1JfVkVSU0lPTlMuZm9yRWFjaChNViA9PiB7XG4gIGludGVnVGVzdChcbiAgICBgY2RrLWFzc2V0c0Ake01WfSBzbW9rZSB0ZXN0YCxcbiAgICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAgIGF3YWl0IGZpeHR1cmUuc2hlbGwoWyducG0nLCAnaW5pdCcsICcteSddKTtcbiAgICAgIGF3YWl0IGZpeHR1cmUuc2hlbGwoWyducG0nLCAnaW5zdGFsbCcsIGBjZGstYXNzZXRzQCR7TVZ9YF0pO1xuXG4gICAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpO1xuICAgICAgY29uc3QgcmVnaW9uID0gZml4dHVyZS5hd3MucmVnaW9uO1xuICAgICAgY29uc3QgYnVja2V0TmFtZSA9IGBjZGstaG5iNjU5ZmRzLWFzc2V0cy0ke2FjY291bnR9LSR7cmVnaW9ufWA7XG4gICAgICBjb25zdCByZXBvc2l0b3J5TmFtZSA9IGBjZGstaG5iNjU5ZmRzLWNvbnRhaW5lci1hc3NldHMtJHthY2NvdW50fS0ke3JlZ2lvbn1gO1xuXG4gICAgICBjb25zdCBpbWFnZURpciA9ICdpbWFnZWRpcic7XG4gICAgICBhd2FpdCBmcy5ta2RpcihwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsIGltYWdlRGlyKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgIC8vIFdyaXRlIGFuIGFzc2V0IGZpbGUgYW5kIGEgZGF0YSBmaWxlIGZvciB0aGUgRG9ja2VyIGltYWdlXG4gICAgICBjb25zdCBhc3NldEZpbGUgPSAndGVzdGZpbGUudHh0JztcbiAgICAgIGZvciAoY29uc3QgdG9DcmVhdGUgb2YgW2Fzc2V0RmlsZSwgYCR7aW1hZ2VEaXJ9L2RhdGFmaWxlLnR4dGBdKSB7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsIHRvQ3JlYXRlKSwgJ3NvbWUgYXNzZXQgZmlsZScpO1xuICAgICAgfVxuXG4gICAgICAvLyBXcml0ZSBhIERvY2tlcmZpbGUgZm9yIHRoZSBpbWFnZSBidWlsZCB3aXRoIGEgZGF0YSBmaWxlIGluIGl0XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCBpbWFnZURpciwgJ0RvY2tlcmZpbGUnKSwgW1xuICAgICAgICAnRlJPTSBzY3JhdGNoJyxcbiAgICAgICAgJ0FERCBkYXRhZmlsZS50eHQgZGF0YWZpbGUudHh0JyxcbiAgICAgIF0uam9pbignXFxuJykpO1xuXG4gICAgICAvLyBXcml0ZSBhbiBhc3NldCBKU09OIGZpbGUgdG8gcHVibGlzaCB0byB0aGUgYm9vdHN0cmFwcGVkIGVudmlyb25tZW50XG4gICAgICBjb25zdCBhc3NldHNKc29uID0ge1xuICAgICAgICB2ZXJzaW9uOiBcIjM4LjAuMVwiLFxuICAgICAgICBmaWxlczoge1xuICAgICAgICAgIHRlc3RmaWxlOiB7XG4gICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgcGF0aDogYXNzZXRGaWxlLFxuICAgICAgICAgICAgICBwYWNrYWdpbmc6ICdmaWxlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHtcbiAgICAgICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgICBhc3N1bWVSb2xlQXJuOiBgYXJuOlxcJHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1maWxlLXB1Ymxpc2hpbmctcm9sZS0ke2FjY291bnR9LSR7cmVnaW9ufWAsXG4gICAgICAgICAgICAgICAgYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgICBvYmplY3RLZXk6IGB0ZXN0LWZpbGUtJHtEYXRlLm5vdygpfS5qc29uYCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZG9ja2VySW1hZ2VzOiB7XG4gICAgICAgICAgdGVzdGltYWdlOiB7XG4gICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgZGlyZWN0b3J5OiBpbWFnZURpcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHtcbiAgICAgICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgICBhc3N1bWVSb2xlQXJuOiBgYXJuOlxcJHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1pbWFnZS1wdWJsaXNoaW5nLXJvbGUtJHthY2NvdW50fS0ke3JlZ2lvbn1gLFxuICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgICAgICAgICAgICAgIGltYWdlVGFnOiBgdGVzdC1pbWFnZWAsIC8vIE5vdCBmcmVzaCBvbiBldmVyeSBydW4gYmVjYXVzZSB3ZSdsbCBydW4gb3V0IG9mIHRhZ3MgdG9vIGVhc2lseVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnYXNzZXRzLmpzb24nKSwgSlNPTi5zdHJpbmdpZnkoYXNzZXRzSnNvbiwgdW5kZWZpbmVkLCAyKSk7XG4gICAgICBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnbnB4JywgJ2Nkay1hc3NldHMnLCAnLS1wYXRoJywgJ2Fzc2V0cy5qc29uJywgJy0tdmVyYm9zZScsICdwdWJsaXNoJ10sIHtcbiAgICAgICAgbW9kRW52OiB7XG4gICAgICAgICAgLi4uZml4dHVyZS5jZGtTaGVsbEVudigpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSksXG4gICk7XG59KTsiXX0=
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for the standalone cdk-assets executable, as used by CDK Pipelines
|
|
3
|
+
*/
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { integTest, withDefaultFixture } from '../../../lib';
|
|
7
|
+
|
|
8
|
+
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
9
|
+
|
|
10
|
+
const MAJOR_VERSIONS = ['2', 'v3-latest'];
|
|
11
|
+
|
|
12
|
+
MAJOR_VERSIONS.forEach(MV => {
|
|
13
|
+
integTest(
|
|
14
|
+
`cdk-assets@${MV} smoke test`,
|
|
15
|
+
withDefaultFixture(async (fixture) => {
|
|
16
|
+
await fixture.shell(['npm', 'init', '-y']);
|
|
17
|
+
await fixture.shell(['npm', 'install', `cdk-assets@${MV}`]);
|
|
18
|
+
|
|
19
|
+
const account = await fixture.aws.account();
|
|
20
|
+
const region = fixture.aws.region;
|
|
21
|
+
const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
|
|
22
|
+
const repositoryName = `cdk-hnb659fds-container-assets-${account}-${region}`;
|
|
23
|
+
|
|
24
|
+
const imageDir = 'imagedir';
|
|
25
|
+
await fs.mkdir(path.join(fixture.integTestDir, imageDir), { recursive: true });
|
|
26
|
+
|
|
27
|
+
// Write an asset file and a data file for the Docker image
|
|
28
|
+
const assetFile = 'testfile.txt';
|
|
29
|
+
for (const toCreate of [assetFile, `${imageDir}/datafile.txt`]) {
|
|
30
|
+
await fs.writeFile(path.join(fixture.integTestDir, toCreate), 'some asset file');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Write a Dockerfile for the image build with a data file in it
|
|
34
|
+
await fs.writeFile(path.join(fixture.integTestDir, imageDir, 'Dockerfile'), [
|
|
35
|
+
'FROM scratch',
|
|
36
|
+
'ADD datafile.txt datafile.txt',
|
|
37
|
+
].join('\n'));
|
|
38
|
+
|
|
39
|
+
// Write an asset JSON file to publish to the bootstrapped environment
|
|
40
|
+
const assetsJson = {
|
|
41
|
+
version: "38.0.1",
|
|
42
|
+
files: {
|
|
43
|
+
testfile: {
|
|
44
|
+
source: {
|
|
45
|
+
path: assetFile,
|
|
46
|
+
packaging: 'file',
|
|
47
|
+
},
|
|
48
|
+
destinations: {
|
|
49
|
+
current: {
|
|
50
|
+
region,
|
|
51
|
+
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
|
|
52
|
+
bucketName,
|
|
53
|
+
objectKey: `test-file-${Date.now()}.json`,
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
dockerImages: {
|
|
59
|
+
testimage: {
|
|
60
|
+
source: {
|
|
61
|
+
directory: imageDir,
|
|
62
|
+
},
|
|
63
|
+
destinations: {
|
|
64
|
+
current: {
|
|
65
|
+
region,
|
|
66
|
+
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-image-publishing-role-${account}-${region}`,
|
|
67
|
+
repositoryName,
|
|
68
|
+
imageTag: `test-image`, // Not fresh on every run because we'll run out of tags too easily
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
await fs.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
|
|
76
|
+
await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', '--verbose', 'publish'], {
|
|
77
|
+
modEnv: {
|
|
78
|
+
...fixture.cdkShellEnv(),
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}),
|
|
82
|
+
);
|
|
83
|
+
});
|