@liflig/cdk 2.18.5 → 2.18.7
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/assets/cloudtrail-slack-integration-lambda/main.py +267 -0
- package/assets/pipeline-slack-notification-lambda/index.py +300 -0
- package/assets/prepare-cdk-source-lambda/index.py +159 -0
- package/assets/slack-alarm-lambda/index.py +103 -0
- package/lib/alarms/database-alarms.d.ts +125 -0
- package/lib/alarms/database-alarms.js +171 -0
- package/lib/alarms/index.d.ts +3 -0
- package/lib/alarms/index.js +10 -0
- package/lib/alarms/service-alarms.d.ts +145 -0
- package/lib/alarms/service-alarms.js +148 -0
- package/lib/alarms/ses-alarms.d.ts +67 -0
- package/lib/alarms/ses-alarms.js +49 -0
- package/lib/alarms/slack-alarm.d.ts +25 -0
- package/lib/alarms/slack-alarm.js +47 -0
- package/lib/bastion-host.d.ts +41 -0
- package/lib/bastion-host.js +86 -0
- package/lib/bin/cdk-create-snapshots.d.ts +2 -0
- package/lib/bin/fetch-pipeline-variables.d.ts +2 -0
- package/lib/build-artifacts/index.d.ts +68 -0
- package/lib/build-artifacts/index.js +118 -0
- package/lib/cdk-deploy/cdk-deploy.d.ts +63 -0
- package/lib/cdk-deploy/cdk-deploy.js +175 -0
- package/lib/cdk-deploy/index.d.ts +1 -0
- package/lib/cdk-deploy/index.js +6 -0
- package/lib/cdk-deploy/start-deploy-handler.d.ts +8 -0
- package/lib/cdk-deploy/start-deploy-handler.js +72 -0
- package/lib/cdk-deploy/status-handler.d.ts +6 -0
- package/lib/cdk-deploy/status-handler.js +83 -0
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.d.ts +6 -0
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.js +63 -0
- package/lib/cdk-pipelines/index.d.ts +3 -0
- package/lib/cdk-pipelines/index.js +10 -0
- package/lib/cdk-pipelines/liflig-cdk-pipeline.d.ts +110 -0
- package/lib/cdk-pipelines/liflig-cdk-pipeline.js +232 -0
- package/lib/cdk-pipelines/slack-notification.d.ts +51 -0
- package/lib/cdk-pipelines/slack-notification.js +54 -0
- package/lib/cdk-pipelines/variables.d.ts +15 -0
- package/lib/cdk-pipelines/variables.js +80 -0
- package/lib/cloudtrail-slack-integration/cloudtrail-slack-integration.d.ts +47 -0
- package/lib/cloudtrail-slack-integration/cloudtrail-slack-integration.js +211 -0
- package/lib/cloudtrail-slack-integration/index.d.ts +1 -0
- package/lib/cloudtrail-slack-integration/index.js +6 -0
- package/lib/configure-parameters/configure-parameters.d.ts +61 -0
- package/lib/configure-parameters/configure-parameters.js +94 -0
- package/lib/configure-parameters/index.d.ts +1 -0
- package/lib/configure-parameters/index.js +6 -0
- package/lib/cross-region-ssm-parameter.d.ts +13 -0
- package/lib/cross-region-ssm-parameter.js +46 -0
- package/lib/ecs/cluster.d.ts +25 -0
- package/lib/ecs/cluster.js +70 -0
- package/lib/ecs/fargate-service.d.ts +63 -0
- package/lib/ecs/fargate-service.js +98 -0
- package/lib/ecs/index.d.ts +3 -0
- package/lib/ecs/index.js +10 -0
- package/lib/ecs/listener-rule.d.ts +25 -0
- package/lib/ecs/listener-rule.js +27 -0
- package/lib/ecs-update-image/artifact-status.d.ts +39 -0
- package/lib/ecs-update-image/artifact-status.js +41 -0
- package/lib/ecs-update-image/ecs-update-image.d.ts +41 -0
- package/lib/ecs-update-image/ecs-update-image.js +98 -0
- package/lib/ecs-update-image/index.d.ts +3 -0
- package/lib/ecs-update-image/index.js +10 -0
- package/lib/ecs-update-image/start-deploy-handler.d.ts +6 -0
- package/lib/ecs-update-image/start-deploy-handler.js +104 -0
- package/lib/ecs-update-image/status-handler.d.ts +11 -0
- package/lib/ecs-update-image/status-handler.js +74 -0
- package/lib/ecs-update-image/tag.d.ts +47 -0
- package/lib/ecs-update-image/tag.js +67 -0
- package/lib/feature-flags.d.ts +18 -0
- package/lib/feature-flags.js +48 -0
- package/lib/griid/artefact-bucket.d.ts +7 -0
- package/lib/griid/artefact-bucket.js +30 -0
- package/lib/griid/index.d.ts +4 -0
- package/lib/griid/index.js +18 -0
- package/lib/hosted-zone-with-param.d.ts +29 -0
- package/lib/hosted-zone-with-param.js +65 -0
- package/lib/index.d.ts +32 -0
- package/lib/kinesis/index.d.ts +1 -0
- package/lib/kinesis/index.js +6 -0
- package/lib/kinesis/kinesis-to-datadog-stream.d.ts +28 -0
- package/lib/kinesis/kinesis-to-datadog-stream.js +126 -0
- package/lib/load-balancer/index.d.ts +1 -0
- package/lib/load-balancer/index.js +6 -0
- package/lib/load-balancer/load-balancer.d.ts +16 -0
- package/lib/load-balancer/load-balancer.js +60 -0
- package/lib/pipelines/conventions.d.ts +14 -0
- package/lib/pipelines/conventions.js +24 -0
- package/lib/pipelines/deploy-env.d.ts +18 -0
- package/lib/pipelines/deploy-env.js +96 -0
- package/lib/pipelines/index.d.ts +2 -0
- package/lib/pipelines/index.js +8 -0
- package/lib/pipelines/liflig-cdk-deployer-deps.d.ts +13 -0
- package/lib/pipelines/liflig-cdk-deployer-deps.js +35 -0
- package/lib/pipelines/pipeline.d.ts +78 -0
- package/lib/pipelines/pipeline.js +224 -0
- package/lib/platform/index.d.ts +1 -0
- package/lib/platform/index.js +7 -0
- package/lib/platform/platform.d.ts +37 -0
- package/lib/platform/platform.js +57 -0
- package/lib/rds/database.d.ts +49 -0
- package/lib/rds/database.js +60 -0
- package/lib/rds/index.d.ts +1 -0
- package/lib/rds/index.js +6 -0
- package/lib/ses/configurationsetdeliveryoptions/index.d.ts +26 -0
- package/lib/ses/configurationsetdeliveryoptions/index.js +48 -0
- package/lib/ses/configurationsetsnsdestination/handler.d.ts +17 -0
- package/lib/ses/configurationsetsnsdestination/handler.js +75 -0
- package/lib/ses/configurationsetsnsdestination/index.d.ts +29 -0
- package/lib/ses/configurationsetsnsdestination/index.js +75 -0
- package/lib/ses/index.d.ts +4 -0
- package/lib/ses/index.js +12 -0
- package/lib/ses/sesdomain/handler.d.ts +10 -0
- package/lib/ses/sesdomain/handler.js +82 -0
- package/lib/ses/sesdomain/index.d.ts +57 -0
- package/lib/ses/sesdomain/index.js +94 -0
- package/lib/ses/sesverifyemail/handler.d.ts +9 -0
- package/lib/ses/sesverifyemail/handler.js +25 -0
- package/lib/ses/sesverifyemail/index.d.ts +13 -0
- package/lib/ses/sesverifyemail/index.js +51 -0
- package/lib/snapshots.d.ts +4 -0
- package/lib/snapshots.js +214 -0
- package/lib/ssm-parameter-backed-resource.d.ts +45 -0
- package/lib/ssm-parameter-backed-resource.js +67 -0
- package/lib/ssm-parameter-reader.d.ts +21 -0
- package/lib/ssm-parameter-reader.js +48 -0
- package/lib/tags.d.ts +8 -0
- package/lib/tags.js +36 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +17 -0
- package/lib/webapp/index.d.ts +3 -0
- package/lib/webapp/index.js +10 -0
- package/lib/webapp/monitor.d.ts +187 -0
- package/lib/webapp/monitor.js +156 -0
- package/lib/webapp/security-headers.d.ts +38 -0
- package/lib/webapp/security-headers.js +129 -0
- package/lib/webapp/webapp.d.ts +116 -0
- package/lib/webapp/webapp.js +118 -0
- package/lib/webapp-deploy-via-role.d.ts +25 -0
- package/lib/webapp-deploy-via-role.js +32 -0
- package/package.json +4 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startDeployHandler = void 0;
|
|
4
|
+
// This function is inline-compiled for the lambda.
|
|
5
|
+
// It must be self-contained.
|
|
6
|
+
const startDeployHandler = async (event, context) => {
|
|
7
|
+
var _a;
|
|
8
|
+
const AWS = require("aws-sdk");
|
|
9
|
+
const codebuild = new AWS.CodeBuild();
|
|
10
|
+
const s3 = new AWS.S3();
|
|
11
|
+
function requireEnv(name) {
|
|
12
|
+
const value = process.env[name];
|
|
13
|
+
if (value === undefined) {
|
|
14
|
+
throw new Error(`Missing ${name}`);
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
const projectName = requireEnv("PROJECT_NAME");
|
|
19
|
+
const bucketName = requireEnv("BUCKET_NAME");
|
|
20
|
+
const cdkContext = JSON.parse(requireEnv("CDK_CONTEXT"));
|
|
21
|
+
// Since we pass the stack names as strings to the shell,
|
|
22
|
+
// be a bit restrictive of the valid values we can use.
|
|
23
|
+
const validStackName = /^[a-z0-9_][a-z0-9\-_]*$/i;
|
|
24
|
+
const s3KeyPrefix = `${context.awsRequestId}/`;
|
|
25
|
+
// Validate the input.
|
|
26
|
+
if (typeof event.bucketName !== "string" ||
|
|
27
|
+
typeof event.bucketKey !== "string" ||
|
|
28
|
+
!Array.isArray(event.stackNames) ||
|
|
29
|
+
!event.stackNames.every((it) => typeof it === "string" && validStackName.test(it))) {
|
|
30
|
+
throw new Error("Input invalid: " + JSON.stringify(event, undefined, " "));
|
|
31
|
+
}
|
|
32
|
+
async function put(name, data) {
|
|
33
|
+
await s3
|
|
34
|
+
.putObject({
|
|
35
|
+
Bucket: bucketName,
|
|
36
|
+
Key: `${s3KeyPrefix}${name}`,
|
|
37
|
+
Body: data,
|
|
38
|
+
})
|
|
39
|
+
.promise();
|
|
40
|
+
}
|
|
41
|
+
await put("stack-names.txt", event.stackNames.join(" "));
|
|
42
|
+
// Ensure that we run the script using same feature flags.
|
|
43
|
+
await put("cdk.json", JSON.stringify({
|
|
44
|
+
context: cdkContext,
|
|
45
|
+
}));
|
|
46
|
+
const build = await codebuild
|
|
47
|
+
.startBuild({
|
|
48
|
+
projectName,
|
|
49
|
+
sourceTypeOverride: "S3",
|
|
50
|
+
sourceLocationOverride: `${bucketName}/${s3KeyPrefix}`,
|
|
51
|
+
secondarySourcesOverride: [
|
|
52
|
+
{
|
|
53
|
+
type: "S3",
|
|
54
|
+
location: `${event.bucketName}/${event.bucketKey}`,
|
|
55
|
+
sourceIdentifier: "CLOUDASSEMBLY",
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
})
|
|
59
|
+
.promise();
|
|
60
|
+
const buildId = (_a = build.build) === null || _a === void 0 ? void 0 : _a.id;
|
|
61
|
+
if (buildId == null) {
|
|
62
|
+
throw new Error("Unknown build ID");
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
// This is the value the caller will use to fetch updated status.
|
|
66
|
+
// Avoid exposing what kind of ID this is, because we should be free
|
|
67
|
+
// to change implementation details.
|
|
68
|
+
jobId: buildId,
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
exports.startDeployHandler = startDeployHandler;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtZGVwbG95LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLWRlcGxveS9zdGFydC1kZXBsb3ktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0sa0JBQWtCLEdBRTNCLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7O0lBQzNCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUU5QixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQW9CLENBQUE7SUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFhLENBQUE7SUFFbEMsU0FBUyxVQUFVLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDOUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7SUFFeEQseURBQXlEO0lBQ3pELHVEQUF1RDtJQUN2RCxNQUFNLGNBQWMsR0FBRywwQkFBMEIsQ0FBQTtJQUVqRCxNQUFNLFdBQVcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQTtJQUU5QyxzQkFBc0I7SUFDdEIsSUFDRSxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUTtRQUNwQyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUTtRQUNuQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNoQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUNyQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQzFELEVBQ0QsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVELEtBQUssVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWlCO1FBQ2hELE1BQU0sRUFBRTthQUNMLFNBQVMsQ0FBQztZQUNULE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEdBQUcsRUFBRSxHQUFHLFdBQVcsR0FBRyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDZCxDQUFDO0lBRUQsTUFBTSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN4RCwwREFBMEQ7SUFDMUQsTUFBTSxHQUFHLENBQ1AsVUFBVSxFQUNWLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDYixPQUFPLEVBQUUsVUFBVTtLQUNwQixDQUFDLENBQ0gsQ0FBQTtJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUztTQUMxQixVQUFVLENBQUM7UUFDVixXQUFXO1FBQ1gsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixzQkFBc0IsRUFBRSxHQUFHLFVBQVUsSUFBSSxXQUFXLEVBQUU7UUFDdEQsd0JBQXdCLEVBQUU7WUFDeEI7Z0JBQ0UsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO2dCQUNsRCxnQkFBZ0IsRUFBRSxlQUFlO2FBQ2xDO1NBQ0Y7S0FDRixDQUFDO1NBQ0QsT0FBTyxFQUFFLENBQUE7SUFFWixNQUFNLE9BQU8sR0FBRyxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLEVBQUUsQ0FBQTtJQUMvQixJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCxpRUFBaUU7UUFDakUsb0VBQW9FO1FBQ3BFLG9DQUFvQztRQUNwQyxLQUFLLEVBQUUsT0FBTztLQUNmLENBQUE7QUFDSCxDQUFDLENBQUE7QUFuRlksUUFBQSxrQkFBa0Isc0JBbUY5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMgKi9cbmltcG9ydCB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYVwiXG5pbXBvcnQgdHlwZSAqIGFzIF9BV1MgZnJvbSBcImF3cy1zZGtcIlxuXG5pbnRlcmZhY2UgU3RhcnREZXBsb3lFeHBlY3RlZElucHV0IHtcbiAgYnVja2V0TmFtZTogc3RyaW5nXG4gIGJ1Y2tldEtleTogc3RyaW5nXG4gIHN0YWNrTmFtZXM6IHN0cmluZ1tdXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgaW5saW5lLWNvbXBpbGVkIGZvciB0aGUgbGFtYmRhLlxuLy8gSXQgbXVzdCBiZSBzZWxmLWNvbnRhaW5lZC5cbmV4cG9ydCBjb25zdCBzdGFydERlcGxveUhhbmRsZXI6IEhhbmRsZXI8XG4gIFBhcnRpYWw8U3RhcnREZXBsb3lFeHBlY3RlZElucHV0PlxuPiA9IGFzeW5jIChldmVudCwgY29udGV4dCkgPT4ge1xuICBjb25zdCBBV1MgPSByZXF1aXJlKFwiYXdzLXNka1wiKVxuXG4gIGNvbnN0IGNvZGVidWlsZCA9IG5ldyBBV1MuQ29kZUJ1aWxkKCkgYXMgX0FXUy5Db2RlQnVpbGRcbiAgY29uc3QgczMgPSBuZXcgQVdTLlMzKCkgYXMgX0FXUy5TM1xuXG4gIGZ1bmN0aW9uIHJlcXVpcmVFbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke25hbWV9YClcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBjb25zdCBwcm9qZWN0TmFtZSA9IHJlcXVpcmVFbnYoXCJQUk9KRUNUX05BTUVcIilcbiAgY29uc3QgYnVja2V0TmFtZSA9IHJlcXVpcmVFbnYoXCJCVUNLRVRfTkFNRVwiKVxuICBjb25zdCBjZGtDb250ZXh0ID0gSlNPTi5wYXJzZShyZXF1aXJlRW52KFwiQ0RLX0NPTlRFWFRcIikpXG5cbiAgLy8gU2luY2Ugd2UgcGFzcyB0aGUgc3RhY2sgbmFtZXMgYXMgc3RyaW5ncyB0byB0aGUgc2hlbGwsXG4gIC8vIGJlIGEgYml0IHJlc3RyaWN0aXZlIG9mIHRoZSB2YWxpZCB2YWx1ZXMgd2UgY2FuIHVzZS5cbiAgY29uc3QgdmFsaWRTdGFja05hbWUgPSAvXlthLXowLTlfXVthLXowLTlcXC1fXSokL2lcblxuICBjb25zdCBzM0tleVByZWZpeCA9IGAke2NvbnRleHQuYXdzUmVxdWVzdElkfS9gXG5cbiAgLy8gVmFsaWRhdGUgdGhlIGlucHV0LlxuICBpZiAoXG4gICAgdHlwZW9mIGV2ZW50LmJ1Y2tldE5hbWUgIT09IFwic3RyaW5nXCIgfHxcbiAgICB0eXBlb2YgZXZlbnQuYnVja2V0S2V5ICE9PSBcInN0cmluZ1wiIHx8XG4gICAgIUFycmF5LmlzQXJyYXkoZXZlbnQuc3RhY2tOYW1lcykgfHxcbiAgICAhZXZlbnQuc3RhY2tOYW1lcy5ldmVyeShcbiAgICAgIChpdCkgPT4gdHlwZW9mIGl0ID09PSBcInN0cmluZ1wiICYmIHZhbGlkU3RhY2tOYW1lLnRlc3QoaXQpLFxuICAgIClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgaW52YWxpZDogXCIgKyBKU09OLnN0cmluZ2lmeShldmVudCwgdW5kZWZpbmVkLCBcIiAgXCIpKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcHV0KG5hbWU6IHN0cmluZywgZGF0YTogQVdTLlMzLkJvZHkpIHtcbiAgICBhd2FpdCBzM1xuICAgICAgLnB1dE9iamVjdCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiBgJHtzM0tleVByZWZpeH0ke25hbWV9YCxcbiAgICAgICAgQm9keTogZGF0YSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG4gIH1cblxuICBhd2FpdCBwdXQoXCJzdGFjay1uYW1lcy50eHRcIiwgZXZlbnQuc3RhY2tOYW1lcy5qb2luKFwiIFwiKSlcbiAgLy8gRW5zdXJlIHRoYXQgd2UgcnVuIHRoZSBzY3JpcHQgdXNpbmcgc2FtZSBmZWF0dXJlIGZsYWdzLlxuICBhd2FpdCBwdXQoXG4gICAgXCJjZGsuanNvblwiLFxuICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGNvbnRleHQ6IGNka0NvbnRleHQsXG4gICAgfSksXG4gIClcblxuICBjb25zdCBidWlsZCA9IGF3YWl0IGNvZGVidWlsZFxuICAgIC5zdGFydEJ1aWxkKHtcbiAgICAgIHByb2plY3ROYW1lLFxuICAgICAgc291cmNlVHlwZU92ZXJyaWRlOiBcIlMzXCIsXG4gICAgICBzb3VyY2VMb2NhdGlvbk92ZXJyaWRlOiBgJHtidWNrZXROYW1lfS8ke3MzS2V5UHJlZml4fWAsXG4gICAgICBzZWNvbmRhcnlTb3VyY2VzT3ZlcnJpZGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiUzNcIixcbiAgICAgICAgICBsb2NhdGlvbjogYCR7ZXZlbnQuYnVja2V0TmFtZX0vJHtldmVudC5idWNrZXRLZXl9YCxcbiAgICAgICAgICBzb3VyY2VJZGVudGlmaWVyOiBcIkNMT1VEQVNTRU1CTFlcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgICAucHJvbWlzZSgpXG5cbiAgY29uc3QgYnVpbGRJZCA9IGJ1aWxkLmJ1aWxkPy5pZFxuICBpZiAoYnVpbGRJZCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBidWlsZCBJRFwiKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBUaGlzIGlzIHRoZSB2YWx1ZSB0aGUgY2FsbGVyIHdpbGwgdXNlIHRvIGZldGNoIHVwZGF0ZWQgc3RhdHVzLlxuICAgIC8vIEF2b2lkIGV4cG9zaW5nIHdoYXQga2luZCBvZiBJRCB0aGlzIGlzLCBiZWNhdXNlIHdlIHNob3VsZCBiZSBmcmVlXG4gICAgLy8gdG8gY2hhbmdlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gICAgam9iSWQ6IGJ1aWxkSWQsXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.statusHandler = void 0;
|
|
4
|
+
// This function is inline-compiled for the lambda.
|
|
5
|
+
// It must be self-contained.
|
|
6
|
+
const statusHandler = async (event) => {
|
|
7
|
+
const AWS = require("aws-sdk");
|
|
8
|
+
function requireEnv(name) {
|
|
9
|
+
const value = process.env[name];
|
|
10
|
+
if (value === undefined) {
|
|
11
|
+
throw new Error(`Missing ${name}`);
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get success status.
|
|
17
|
+
*
|
|
18
|
+
* A value of true means the job has completed successfully, while
|
|
19
|
+
* a value of false means the job did complete but not successfully.
|
|
20
|
+
*
|
|
21
|
+
* A null value means the job is still in progress and the
|
|
22
|
+
* completion status is not yet known.
|
|
23
|
+
*/
|
|
24
|
+
function getSuccess(status) {
|
|
25
|
+
if (status == "SUCCEEDED") {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
if (status == "IN_PROGRESS") {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
async function getBuild(buildId) {
|
|
34
|
+
var _a, _b, _c;
|
|
35
|
+
const codebuild = new AWS.CodeBuild();
|
|
36
|
+
const result = await codebuild.batchGetBuilds({ ids: [buildId] }).promise();
|
|
37
|
+
if (((_a = result.builds) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
|
|
38
|
+
throw new Error(`Expected 1 item, found ${(_c = (_b = result.builds) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : "unknown"}`);
|
|
39
|
+
}
|
|
40
|
+
return result.builds[0];
|
|
41
|
+
}
|
|
42
|
+
async function getLogs(build) {
|
|
43
|
+
if (build.logs == null) {
|
|
44
|
+
throw new Error("Missing logs attribute on build");
|
|
45
|
+
}
|
|
46
|
+
if (build.logs.groupName == null) {
|
|
47
|
+
throw new Error("Missing log groupName");
|
|
48
|
+
}
|
|
49
|
+
if (build.logs.streamName == null) {
|
|
50
|
+
throw new Error("Missing log streamName");
|
|
51
|
+
}
|
|
52
|
+
const cloudwatchlogs = new AWS.CloudWatchLogs();
|
|
53
|
+
const data = await cloudwatchlogs
|
|
54
|
+
.getLogEvents({
|
|
55
|
+
logGroupName: build.logs.groupName,
|
|
56
|
+
logStreamName: build.logs.streamName,
|
|
57
|
+
startFromHead: true,
|
|
58
|
+
})
|
|
59
|
+
.promise();
|
|
60
|
+
if (data.events == null) {
|
|
61
|
+
throw new Error("Failed to fetch log events");
|
|
62
|
+
}
|
|
63
|
+
// The logs contain newlines, so no need to add more.
|
|
64
|
+
return data.events.map((it) => it.message).join("");
|
|
65
|
+
}
|
|
66
|
+
const projectName = requireEnv("PROJECT_NAME");
|
|
67
|
+
// Validate the input.
|
|
68
|
+
if (typeof event.jobId !== "string" ||
|
|
69
|
+
!event.jobId.startsWith(`${projectName}:`)) {
|
|
70
|
+
throw new Error("Input invalid: " + JSON.stringify(event, undefined, " "));
|
|
71
|
+
}
|
|
72
|
+
const build = await getBuild(event.jobId);
|
|
73
|
+
const success = build.buildStatus == null ? null : getSuccess(build.buildStatus);
|
|
74
|
+
// Read logs from CloudWatch if completed.
|
|
75
|
+
const logs = success != null ? await getLogs(build) : null;
|
|
76
|
+
return {
|
|
77
|
+
jobId: event.jobId,
|
|
78
|
+
success,
|
|
79
|
+
logs,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
exports.statusHandler = statusHandler;
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLWRlcGxveS9zdGF0dXMtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0sYUFBYSxHQUEwQyxLQUFLLEVBQ3ZFLEtBQUssRUFDTCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRTlCLFNBQVMsVUFBVSxDQUFDLElBQVk7UUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTLFVBQVUsQ0FBQyxNQUFnQztRQUNsRCxJQUFJLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxLQUFLLFVBQVUsUUFBUSxDQUFDLE9BQWU7O1FBQ3JDLE1BQU0sU0FBUyxHQUFrQixJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQW9CLENBQUE7UUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTNFLElBQUksQ0FBQSxNQUFBLE1BQU0sQ0FBQyxNQUFNLDBDQUFFLE1BQU0sTUFBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLDBCQUEwQixNQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsTUFBTSxtQ0FBSSxTQUFTLEVBQUUsQ0FDL0QsQ0FBQTtRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELEtBQUssVUFBVSxPQUFPLENBQUMsS0FBMEI7UUFDL0MsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUNwRCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDMUMsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzNDLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FDbEIsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUF5QixDQUFBO1FBQ2pELE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYzthQUM5QixZQUFZLENBQUM7WUFDWixZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2xDLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDcEMsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFBO1FBRVosSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUMvQyxDQUFDO1FBRUQscURBQXFEO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUU5QyxzQkFBc0I7SUFDdEIsSUFDRSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUTtRQUMvQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsRUFDMUMsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUV6QyxNQUFNLE9BQU8sR0FDWCxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRWxFLDBDQUEwQztJQUMxQyxNQUFNLElBQUksR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBRTFELE9BQU87UUFDTCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsT0FBTztRQUNQLElBQUk7S0FDTCxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBckdZLFFBQUEsYUFBYSxpQkFxR3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuaW1wb3J0IHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCJcbmltcG9ydCB0eXBlICogYXMgX0FXUyBmcm9tIFwiYXdzLXNka1wiXG5cbmludGVyZmFjZSBTdGF0dXNFeHBlY3RlZElucHV0IHtcbiAgam9iSWQ6IHN0cmluZ1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGlubGluZS1jb21waWxlZCBmb3IgdGhlIGxhbWJkYS5cbi8vIEl0IG11c3QgYmUgc2VsZi1jb250YWluZWQuXG5leHBvcnQgY29uc3Qgc3RhdHVzSGFuZGxlcjogSGFuZGxlcjxQYXJ0aWFsPFN0YXR1c0V4cGVjdGVkSW5wdXQ+PiA9IGFzeW5jIChcbiAgZXZlbnQsXG4pID0+IHtcbiAgY29uc3QgQVdTID0gcmVxdWlyZShcImF3cy1zZGtcIilcblxuICBmdW5jdGlvbiByZXF1aXJlRW52KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgJHtuYW1lfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzdWNjZXNzIHN0YXR1cy5cbiAgICpcbiAgICogQSB2YWx1ZSBvZiB0cnVlIG1lYW5zIHRoZSBqb2IgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksIHdoaWxlXG4gICAqIGEgdmFsdWUgb2YgZmFsc2UgbWVhbnMgdGhlIGpvYiBkaWQgY29tcGxldGUgYnV0IG5vdCBzdWNjZXNzZnVsbHkuXG4gICAqXG4gICAqIEEgbnVsbCB2YWx1ZSBtZWFucyB0aGUgam9iIGlzIHN0aWxsIGluIHByb2dyZXNzIGFuZCB0aGVcbiAgICogY29tcGxldGlvbiBzdGF0dXMgaXMgbm90IHlldCBrbm93bi5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFN1Y2Nlc3Moc3RhdHVzOiBBV1MuQ29kZUJ1aWxkLlN0YXR1c1R5cGUpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgaWYgKHN0YXR1cyA9PSBcIlNVQ0NFRURFRFwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChzdGF0dXMgPT0gXCJJTl9QUk9HUkVTU1wiKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0QnVpbGQoYnVpbGRJZDogc3RyaW5nKTogUHJvbWlzZTxBV1MuQ29kZUJ1aWxkLkJ1aWxkPiB7XG4gICAgY29uc3QgY29kZWJ1aWxkOiBBV1MuQ29kZUJ1aWxkID0gbmV3IEFXUy5Db2RlQnVpbGQoKSBhcyBfQVdTLkNvZGVCdWlsZFxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvZGVidWlsZC5iYXRjaEdldEJ1aWxkcyh7IGlkczogW2J1aWxkSWRdIH0pLnByb21pc2UoKVxuXG4gICAgaWYgKHJlc3VsdC5idWlsZHM/Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgMSBpdGVtLCBmb3VuZCAke3Jlc3VsdC5idWlsZHM/Lmxlbmd0aCA/PyBcInVua25vd25cIn1gLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQuYnVpbGRzWzBdXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRMb2dzKGJ1aWxkOiBBV1MuQ29kZUJ1aWxkLkJ1aWxkKSB7XG4gICAgaWYgKGJ1aWxkLmxvZ3MgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBsb2dzIGF0dHJpYnV0ZSBvbiBidWlsZFwiKVxuICAgIH1cblxuICAgIGlmIChidWlsZC5sb2dzLmdyb3VwTmFtZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIGxvZyBncm91cE5hbWVcIilcbiAgICB9XG5cbiAgICBpZiAoYnVpbGQubG9ncy5zdHJlYW1OYW1lID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgbG9nIHN0cmVhbU5hbWVcIilcbiAgICB9XG5cbiAgICBjb25zdCBjbG91ZHdhdGNobG9nczogQVdTLkNsb3VkV2F0Y2hMb2dzID1cbiAgICAgIG5ldyBBV1MuQ2xvdWRXYXRjaExvZ3MoKSBhcyBfQVdTLkNsb3VkV2F0Y2hMb2dzXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGNsb3Vkd2F0Y2hsb2dzXG4gICAgICAuZ2V0TG9nRXZlbnRzKHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBidWlsZC5sb2dzLmdyb3VwTmFtZSxcbiAgICAgICAgbG9nU3RyZWFtTmFtZTogYnVpbGQubG9ncy5zdHJlYW1OYW1lLFxuICAgICAgICBzdGFydEZyb21IZWFkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcblxuICAgIGlmIChkYXRhLmV2ZW50cyA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggbG9nIGV2ZW50c1wiKVxuICAgIH1cblxuICAgIC8vIFRoZSBsb2dzIGNvbnRhaW4gbmV3bGluZXMsIHNvIG5vIG5lZWQgdG8gYWRkIG1vcmUuXG4gICAgcmV0dXJuIGRhdGEuZXZlbnRzLm1hcCgoaXQpID0+IGl0Lm1lc3NhZ2UpLmpvaW4oXCJcIilcbiAgfVxuXG4gIGNvbnN0IHByb2plY3ROYW1lID0gcmVxdWlyZUVudihcIlBST0pFQ1RfTkFNRVwiKVxuXG4gIC8vIFZhbGlkYXRlIHRoZSBpbnB1dC5cbiAgaWYgKFxuICAgIHR5cGVvZiBldmVudC5qb2JJZCAhPT0gXCJzdHJpbmdcIiB8fFxuICAgICFldmVudC5qb2JJZC5zdGFydHNXaXRoKGAke3Byb2plY3ROYW1lfTpgKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBpbnZhbGlkOiBcIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LCB1bmRlZmluZWQsIFwiICBcIikpXG4gIH1cblxuICBjb25zdCBidWlsZCA9IGF3YWl0IGdldEJ1aWxkKGV2ZW50LmpvYklkKVxuXG4gIGNvbnN0IHN1Y2Nlc3MgPVxuICAgIGJ1aWxkLmJ1aWxkU3RhdHVzID09IG51bGwgPyBudWxsIDogZ2V0U3VjY2VzcyhidWlsZC5idWlsZFN0YXR1cylcblxuICAvLyBSZWFkIGxvZ3MgZnJvbSBDbG91ZFdhdGNoIGlmIGNvbXBsZXRlZC5cbiAgY29uc3QgbG9ncyA9IHN1Y2Nlc3MgIT0gbnVsbCA/IGF3YWl0IGdldExvZ3MoYnVpbGQpIDogbnVsbFxuXG4gIHJldHVybiB7XG4gICAgam9iSWQ6IGV2ZW50LmpvYklkLFxuICAgIHN1Y2Nlc3MsXG4gICAgbG9ncyxcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloudAssemblyLookupHandler = void 0;
|
|
4
|
+
// This is a self-contained function that will be serialized as a lambda.
|
|
5
|
+
const cloudAssemblyLookupHandler = async (event, context) => {
|
|
6
|
+
const AWS = require("aws-sdk");
|
|
7
|
+
const s3 = new AWS.S3();
|
|
8
|
+
const codepipeline = new AWS.CodePipeline();
|
|
9
|
+
const jobId = event["CodePipeline.job"].id;
|
|
10
|
+
try {
|
|
11
|
+
const userParametersRaw = event["CodePipeline.job"].data.actionConfiguration.configuration
|
|
12
|
+
.UserParameters;
|
|
13
|
+
console.log("User parameters", userParametersRaw);
|
|
14
|
+
const userParameters = JSON.parse(userParametersRaw);
|
|
15
|
+
const referenceData = await s3
|
|
16
|
+
.getObject({
|
|
17
|
+
Bucket: userParameters.bucketName,
|
|
18
|
+
Key: userParameters.objectKey,
|
|
19
|
+
})
|
|
20
|
+
.promise()
|
|
21
|
+
.then((it) => it.Body.toString());
|
|
22
|
+
const cloudAssemblyReference = JSON.parse(referenceData);
|
|
23
|
+
const outputArtifact = event["CodePipeline.job"].data.outputArtifacts[0];
|
|
24
|
+
const s3Loc = outputArtifact.location.s3Location;
|
|
25
|
+
const cloudAssemblyZipData = await s3
|
|
26
|
+
.getObject({
|
|
27
|
+
Bucket: cloudAssemblyReference.cloudAssemblyBucketName,
|
|
28
|
+
Key: cloudAssemblyReference.cloudAssemblyBucketKey,
|
|
29
|
+
})
|
|
30
|
+
.promise();
|
|
31
|
+
console.log("Size of Cloud Assembly", cloudAssemblyZipData.ContentLength);
|
|
32
|
+
await new AWS.S3({
|
|
33
|
+
credentials: event["CodePipeline.job"].data.artifactCredentials,
|
|
34
|
+
})
|
|
35
|
+
.putObject({
|
|
36
|
+
Bucket: s3Loc.bucketName,
|
|
37
|
+
Key: s3Loc.objectKey,
|
|
38
|
+
Body: cloudAssemblyZipData.Body,
|
|
39
|
+
})
|
|
40
|
+
.promise();
|
|
41
|
+
await codepipeline
|
|
42
|
+
.putJobSuccessResult({
|
|
43
|
+
jobId,
|
|
44
|
+
})
|
|
45
|
+
.promise();
|
|
46
|
+
console.log("Success");
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
await codepipeline
|
|
50
|
+
.putJobFailureResult({
|
|
51
|
+
failureDetails: {
|
|
52
|
+
message: JSON.stringify(e),
|
|
53
|
+
type: "JobFailed",
|
|
54
|
+
externalExecutionId: context.awsRequestId,
|
|
55
|
+
},
|
|
56
|
+
jobId,
|
|
57
|
+
})
|
|
58
|
+
.promise();
|
|
59
|
+
console.error("Failed", e);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.cloudAssemblyLookupHandler = cloudAssemblyLookupHandler;
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYXNzZW1ibHktbG9va3VwLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9jbG91ZC1hc3NlbWJseS1sb29rdXAtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyQ0EseUVBQXlFO0FBQ2xFLE1BQU0sMEJBQTBCLEdBQVksS0FBSyxFQUN0RCxLQUF3QixFQUN4QixPQUFPLEVBQ1AsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQTZCLENBQUE7SUFDMUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUE7SUFDdkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7SUFFM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTFDLElBQUksQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQ3JCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhO2FBQzdELGNBQWMsQ0FBQTtRQUVuQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFFakQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDL0IsaUJBQWlCLENBQ21CLENBQUE7UUFFdEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFO2FBQzNCLFNBQVMsQ0FBQztZQUNULE1BQU0sRUFBRSxjQUFjLENBQUMsVUFBVTtZQUNqQyxHQUFHLEVBQUUsY0FBYyxDQUFDLFNBQVM7U0FDOUIsQ0FBQzthQUNELE9BQU8sRUFBRTthQUNULElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBRXBDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdkMsYUFBYSxDQUNZLENBQUE7UUFFM0IsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN4RSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQTtRQUVoRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sRUFBRTthQUNsQyxTQUFTLENBQUM7WUFDVCxNQUFNLEVBQUUsc0JBQXNCLENBQUMsdUJBQXVCO1lBQ3RELEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxzQkFBc0I7U0FDbkQsQ0FBQzthQUNELE9BQU8sRUFBRSxDQUFBO1FBRVosT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUV6RSxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1NBQ2hFLENBQUM7YUFDQyxTQUFTLENBQUM7WUFDVCxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQ3BCLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxJQUFJO1NBQ2hDLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQTtRQUVaLE1BQU0sWUFBWTthQUNmLG1CQUFtQixDQUFDO1lBQ25CLEtBQUs7U0FDTixDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQUE7UUFFWixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxZQUFZO2FBQ2YsbUJBQW1CLENBQUM7WUFDbkIsY0FBYyxFQUFFO2dCQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxZQUFZO2FBQzFDO1lBQ0QsS0FBSztTQUNOLENBQUM7YUFDRCxPQUFPLEVBQUUsQ0FBQTtRQUVaLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7QUFDSCxDQUFDLENBQUE7QUE1RVksUUFBQSwwQkFBMEIsOEJBNEV0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMgKi9cbmltcG9ydCB0eXBlIHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCJcblxuLy8gUmVsZXZhbnQgZmllbGRzIGZyb21cbi8vIGh0dHBzOi8vZG9jcy5hbWF6b25hd3MuY24vZW5fdXMvbGFtYmRhL2xhdGVzdC9kZy9zZXJ2aWNlcy1jb2RlcGlwZWxpbmUuaHRtbFxuaW50ZXJmYWNlIENvZGVQaXBlbGluZUV2ZW50IHtcbiAgXCJDb2RlUGlwZWxpbmUuam9iXCI6IHtcbiAgICBpZDogc3RyaW5nXG4gICAgZGF0YToge1xuICAgICAgYWN0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgLy8gSlNPTlxuICAgICAgICAgIFVzZXJQYXJhbWV0ZXJzOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0cHV0QXJ0aWZhY3RzOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIHMzTG9jYXRpb246IHtcbiAgICAgICAgICAgIGJ1Y2tldE5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgb2JqZWN0S2V5OiBzdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1bXVxuICAgICAgYXJ0aWZhY3RDcmVkZW50aWFsczoge1xuICAgICAgICBhY2Nlc3NLZXlJZDogc3RyaW5nXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogc3RyaW5nXG4gICAgICAgIHNlc3Npb25Ub2tlbjogc3RyaW5nXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBDbG91ZEFzc2VtYmx5UmVmZXJlbmNlIHtcbiAgY2xvdWRBc3NlbWJseUJ1Y2tldE5hbWU6IHN0cmluZ1xuICBjbG91ZEFzc2VtYmx5QnVja2V0S2V5OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEFzc2VtYmx5TG9va3VwVXNlclBhcmFtZXRlcnMge1xuICBidWNrZXROYW1lOiBzdHJpbmdcbiAgb2JqZWN0S2V5OiBzdHJpbmdcbn1cblxuLy8gVGhpcyBpcyBhIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBzZXJpYWxpemVkIGFzIGEgbGFtYmRhLlxuZXhwb3J0IGNvbnN0IGNsb3VkQXNzZW1ibHlMb29rdXBIYW5kbGVyOiBIYW5kbGVyID0gYXN5bmMgKFxuICBldmVudDogQ29kZVBpcGVsaW5lRXZlbnQsXG4gIGNvbnRleHQsXG4pID0+IHtcbiAgY29uc3QgQVdTID0gcmVxdWlyZShcImF3cy1zZGtcIikgYXMgdHlwZW9mIGltcG9ydChcImF3cy1zZGtcIilcbiAgY29uc3QgczMgPSBuZXcgQVdTLlMzKClcbiAgY29uc3QgY29kZXBpcGVsaW5lID0gbmV3IEFXUy5Db2RlUGlwZWxpbmUoKVxuXG4gIGNvbnN0IGpvYklkID0gZXZlbnRbXCJDb2RlUGlwZWxpbmUuam9iXCJdLmlkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1c2VyUGFyYW1ldGVyc1JhdyA9XG4gICAgICBldmVudFtcIkNvZGVQaXBlbGluZS5qb2JcIl0uZGF0YS5hY3Rpb25Db25maWd1cmF0aW9uLmNvbmZpZ3VyYXRpb25cbiAgICAgICAgLlVzZXJQYXJhbWV0ZXJzXG5cbiAgICBjb25zb2xlLmxvZyhcIlVzZXIgcGFyYW1ldGVyc1wiLCB1c2VyUGFyYW1ldGVyc1JhdylcblxuICAgIGNvbnN0IHVzZXJQYXJhbWV0ZXJzID0gSlNPTi5wYXJzZShcbiAgICAgIHVzZXJQYXJhbWV0ZXJzUmF3LFxuICAgICkgYXMgQ2xvdWRBc3NlbWJseUxvb2t1cFVzZXJQYXJhbWV0ZXJzXG5cbiAgICBjb25zdCByZWZlcmVuY2VEYXRhID0gYXdhaXQgczNcbiAgICAgIC5nZXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHVzZXJQYXJhbWV0ZXJzLmJ1Y2tldE5hbWUsXG4gICAgICAgIEtleTogdXNlclBhcmFtZXRlcnMub2JqZWN0S2V5LFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcbiAgICAgIC50aGVuKChpdCkgPT4gaXQuQm9keSEudG9TdHJpbmcoKSlcblxuICAgIGNvbnN0IGNsb3VkQXNzZW1ibHlSZWZlcmVuY2UgPSBKU09OLnBhcnNlKFxuICAgICAgcmVmZXJlbmNlRGF0YSxcbiAgICApIGFzIENsb3VkQXNzZW1ibHlSZWZlcmVuY2VcblxuICAgIGNvbnN0IG91dHB1dEFydGlmYWN0ID0gZXZlbnRbXCJDb2RlUGlwZWxpbmUuam9iXCJdLmRhdGEub3V0cHV0QXJ0aWZhY3RzWzBdXG4gICAgY29uc3QgczNMb2MgPSBvdXRwdXRBcnRpZmFjdC5sb2NhdGlvbi5zM0xvY2F0aW9uXG5cbiAgICBjb25zdCBjbG91ZEFzc2VtYmx5WmlwRGF0YSA9IGF3YWl0IHMzXG4gICAgICAuZ2V0T2JqZWN0KHtcbiAgICAgICAgQnVja2V0OiBjbG91ZEFzc2VtYmx5UmVmZXJlbmNlLmNsb3VkQXNzZW1ibHlCdWNrZXROYW1lLFxuICAgICAgICBLZXk6IGNsb3VkQXNzZW1ibHlSZWZlcmVuY2UuY2xvdWRBc3NlbWJseUJ1Y2tldEtleSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBjb25zb2xlLmxvZyhcIlNpemUgb2YgQ2xvdWQgQXNzZW1ibHlcIiwgY2xvdWRBc3NlbWJseVppcERhdGEuQ29udGVudExlbmd0aClcblxuICAgIGF3YWl0IG5ldyBBV1MuUzMoe1xuICAgICAgY3JlZGVudGlhbHM6IGV2ZW50W1wiQ29kZVBpcGVsaW5lLmpvYlwiXS5kYXRhLmFydGlmYWN0Q3JlZGVudGlhbHMsXG4gICAgfSlcbiAgICAgIC5wdXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHMzTG9jLmJ1Y2tldE5hbWUsXG4gICAgICAgIEtleTogczNMb2Mub2JqZWN0S2V5LFxuICAgICAgICBCb2R5OiBjbG91ZEFzc2VtYmx5WmlwRGF0YS5Cb2R5LFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcblxuICAgIGF3YWl0IGNvZGVwaXBlbGluZVxuICAgICAgLnB1dEpvYlN1Y2Nlc3NSZXN1bHQoe1xuICAgICAgICBqb2JJZCxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NcIilcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IGNvZGVwaXBlbGluZVxuICAgICAgLnB1dEpvYkZhaWx1cmVSZXN1bHQoe1xuICAgICAgICBmYWlsdXJlRGV0YWlsczoge1xuICAgICAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIHR5cGU6IFwiSm9iRmFpbGVkXCIsXG4gICAgICAgICAgZXh0ZXJuYWxFeGVjdXRpb25JZDogY29udGV4dC5hd3NSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICAgIGpvYklkLFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcblxuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWRcIiwgZSlcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVariable = exports.SlackNotification = exports.LifligCdkPipeline = void 0;
|
|
4
|
+
var liflig_cdk_pipeline_1 = require("./liflig-cdk-pipeline");
|
|
5
|
+
Object.defineProperty(exports, "LifligCdkPipeline", { enumerable: true, get: function () { return liflig_cdk_pipeline_1.LifligCdkPipeline; } });
|
|
6
|
+
var slack_notification_1 = require("./slack-notification");
|
|
7
|
+
Object.defineProperty(exports, "SlackNotification", { enumerable: true, get: function () { return slack_notification_1.SlackNotification; } });
|
|
8
|
+
var variables_1 = require("./variables");
|
|
9
|
+
Object.defineProperty(exports, "getVariable", { enumerable: true, get: function () { return variables_1.getVariable; } });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2RrLXBpcGVsaW5lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFHOEI7QUFGNUIsd0hBQUEsaUJBQWlCLE9BQUE7QUFHbkIsMkRBQWdGO0FBQXZFLHVIQUFBLGlCQUFpQixPQUFBO0FBQzFCLHlDQUF5QztBQUFoQyx3R0FBQSxXQUFXLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBMaWZsaWdDZGtQaXBlbGluZSxcbiAgTGlmbGlnQ2RrUGlwZWxpbmVQcm9wcyxcbn0gZnJvbSBcIi4vbGlmbGlnLWNkay1waXBlbGluZVwiXG5leHBvcnQgeyBTbGFja05vdGlmaWNhdGlvbiwgU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB9IGZyb20gXCIuL3NsYWNrLW5vdGlmaWNhdGlvblwiXG5leHBvcnQgeyBnZXRWYXJpYWJsZSB9IGZyb20gXCIuL3ZhcmlhYmxlc1wiXG4iXX0=
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as constructs from "constructs";
|
|
2
|
+
import * as codepipeline from "aws-cdk-lib/aws-codepipeline";
|
|
3
|
+
import * as s3 from "aws-cdk-lib/aws-s3";
|
|
4
|
+
import * as pipelines from "aws-cdk-lib/pipelines";
|
|
5
|
+
import { SlackNotificationProps } from "./slack-notification";
|
|
6
|
+
export interface LifligCdkPipelineProps {
|
|
7
|
+
/**
|
|
8
|
+
* Bucket holding pipeline configuration and trigger file.
|
|
9
|
+
*
|
|
10
|
+
* @default - use existing bucket based on Griid conventions
|
|
11
|
+
*/
|
|
12
|
+
artifactsBucket?: s3.IBucket;
|
|
13
|
+
/**
|
|
14
|
+
* Name of pipeline. This is used for the path where configuration
|
|
15
|
+
* is stored in S3.
|
|
16
|
+
*/
|
|
17
|
+
pipelineName: string;
|
|
18
|
+
/**
|
|
19
|
+
* Type of uploaded artifact. This changes the behaviour of the
|
|
20
|
+
* pipeline and what kind of process it performs.
|
|
21
|
+
*
|
|
22
|
+
* Two types are supported:
|
|
23
|
+
*
|
|
24
|
+
* - cdk-source: The uploaded artifact represents a CDK application
|
|
25
|
+
* as source code. A build step will compile this into a
|
|
26
|
+
* CDK Cloud Assembly.
|
|
27
|
+
*
|
|
28
|
+
* As part of synthesizing this into a CDK Cloud Assembly,
|
|
29
|
+
* a file "variables.json" will be written for the
|
|
30
|
+
* CDK application to parameterize the build if any
|
|
31
|
+
* variables are found in the pipeline source.
|
|
32
|
+
*
|
|
33
|
+
* - cloud-assembly: The uploaded artifact represents a
|
|
34
|
+
* CDK Cloud Assembly which is ready for deployment.
|
|
35
|
+
*
|
|
36
|
+
* This does not support reading variables at the current time
|
|
37
|
+
* since CDK Pipelines don't support parameterized deploys.
|
|
38
|
+
* See https://github.com/aws/aws-cdk/issues/9560
|
|
39
|
+
*/
|
|
40
|
+
sourceType: "cdk-source" | "cloud-assembly";
|
|
41
|
+
/**
|
|
42
|
+
* The namespace used for parameters in Parameter Store.
|
|
43
|
+
*
|
|
44
|
+
* Only relevant for sourceType of "cdk-soruce".
|
|
45
|
+
*
|
|
46
|
+
* @default default
|
|
47
|
+
*/
|
|
48
|
+
parametersNamespace?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* CDK Pipeline for Liflig.
|
|
52
|
+
*
|
|
53
|
+
* Avoid putting multiple pipelines in a stack, since the pipeline
|
|
54
|
+
* will also keep the hosting stack up-to-date.
|
|
55
|
+
*
|
|
56
|
+
* The pipeline is executed by writing an empty file to
|
|
57
|
+
* s3://<artifacts-bucket>/pipelines/<pipeline-name>/trigger
|
|
58
|
+
*
|
|
59
|
+
* Configuration files are read from S3 at the path
|
|
60
|
+
* s3://<artifacts-bucket>/pipelines/<pipeline-name>/
|
|
61
|
+
*
|
|
62
|
+
* For upload type "cdk-source":
|
|
63
|
+
*
|
|
64
|
+
* - cdk-source.json holding a pointer to the active CDK source
|
|
65
|
+
* that should be used. Schema:
|
|
66
|
+
*
|
|
67
|
+
* {
|
|
68
|
+
* bucketName: string
|
|
69
|
+
* bucketKey: string
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* - variables*.json which can be zero or more files
|
|
73
|
+
* with string-string map holding variables that will
|
|
74
|
+
* be written to variables.json and can be read by the
|
|
75
|
+
* the CDK application during synthesize.
|
|
76
|
+
*
|
|
77
|
+
* For upload type "cloud-assembly":
|
|
78
|
+
*
|
|
79
|
+
* - cloud-assembly.json holding a pointer to the active
|
|
80
|
+
* CDK Cloud Assembly that should be used: Schema:
|
|
81
|
+
*
|
|
82
|
+
* {
|
|
83
|
+
* cloudAssemblyBucketName: string
|
|
84
|
+
* cloudAssemblyBucketKey: string
|
|
85
|
+
* }
|
|
86
|
+
*
|
|
87
|
+
* Variables enables separation of IaC code and application code if
|
|
88
|
+
* they are not colocated in the same repository.
|
|
89
|
+
*/
|
|
90
|
+
export declare class LifligCdkPipeline extends constructs.Construct {
|
|
91
|
+
/**
|
|
92
|
+
* Path on S3 for pipeline configuration.
|
|
93
|
+
*/
|
|
94
|
+
static pipelineS3Prefix(pipelineName: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* Key in S3 bucket used to trigger pipeline.
|
|
97
|
+
*
|
|
98
|
+
* This is an empty file within the pipeline path.
|
|
99
|
+
*/
|
|
100
|
+
static pipelineS3TriggerKey(pipelineName: string): string;
|
|
101
|
+
readonly cdkPipeline: pipelines.CodePipeline;
|
|
102
|
+
readonly codePipeline: codepipeline.Pipeline;
|
|
103
|
+
readonly artifactsBucket: s3.IBucket;
|
|
104
|
+
readonly triggerObjectKey: string;
|
|
105
|
+
constructor(scope: constructs.Construct, id: string, props: LifligCdkPipelineProps);
|
|
106
|
+
private static getAwsCdkPackageJsonFile;
|
|
107
|
+
private cloudAssemblyStage;
|
|
108
|
+
private cdkSourceStage;
|
|
109
|
+
addSlackNotification(props: Omit<SlackNotificationProps, "pipeline" | "artifactsBucket" | "triggerObjectKey">): void;
|
|
110
|
+
}
|