aws-delivlib 13.7.8 → 14.0.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/cdk.out/asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1/__entrypoint__.js +119 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.d.ts +0 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.js +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/create-release.js +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package-lock.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/publish.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/sign-files.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/with-signing-key.sh +1 -7
- package/cdk.out/{asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353 → asset.e19d749b07bbd934525eb394410d55ee53675290fe2eef6ca5eafb1ea78764bc}/index.js +29 -34
- package/cdk.out/cdk.out +1 -1
- package/cdk.out/delivlib-test.assets.json +12 -12
- package/cdk.out/delivlib-test.template.json +7135 -7704
- package/cdk.out/manifest.json +152 -2498
- package/cdk.out/tree.json +1059 -1427
- package/lib/auto-build.d.ts +2 -1
- package/lib/auto-build.js +8 -7
- package/lib/auto-build.ts +3 -2
- package/lib/build-env.d.ts +1 -1
- package/lib/build-env.js +4 -4
- package/lib/build-env.ts +1 -1
- package/lib/canary.d.ts +2 -1
- package/lib/canary.js +7 -6
- package/lib/canary.ts +2 -2
- package/lib/change-controller.d.ts +2 -1
- package/lib/change-controller.js +20 -18
- package/lib/change-controller.ts +6 -5
- package/lib/chime-notifier/chime-notifier.d.ts +2 -1
- package/lib/chime-notifier/chime-notifier.js +12 -11
- package/lib/chime-notifier/chime-notifier.ts +3 -2
- package/lib/code-signing/certificate-signing-request.d.ts +1 -1
- package/lib/code-signing/certificate-signing-request.js +16 -14
- package/lib/code-signing/certificate-signing-request.ts +7 -5
- package/lib/code-signing/code-signing-certificate.d.ts +2 -1
- package/lib/code-signing/code-signing-certificate.js +12 -11
- package/lib/code-signing/code-signing-certificate.ts +5 -4
- package/lib/code-signing/private-key.d.ts +2 -1
- package/lib/code-signing/private-key.js +28 -26
- package/lib/code-signing/private-key.ts +10 -8
- package/lib/credential-pair.d.ts +1 -1
- package/lib/credential-pair.js +1 -1
- package/lib/credential-pair.ts +1 -1
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.d.ts +2 -1
- package/lib/open-pgp-key-pair.js +28 -27
- package/lib/open-pgp-key-pair.ts +12 -10
- package/lib/package-integrity/handler/validate.bundle.js +876 -42
- package/lib/package-integrity/integrity.d.ts +2 -1
- package/lib/package-integrity/integrity.js +7 -6
- package/lib/package-integrity/integrity.ts +2 -2
- package/lib/permissions.d.ts +1 -1
- package/lib/permissions.js +5 -5
- package/lib/permissions.ts +4 -4
- package/lib/pipeline-notifications/slack.d.ts +1 -1
- package/lib/pipeline-notifications/slack.js +4 -4
- package/lib/pipeline-notifications/slack.ts +1 -1
- package/lib/pipeline-watcher/watcher.d.ts +2 -1
- package/lib/pipeline-watcher/watcher.js +16 -15
- package/lib/pipeline-watcher/watcher.ts +3 -3
- package/lib/pipeline.d.ts +2 -1
- package/lib/pipeline.js +19 -18
- package/lib/pipeline.ts +5 -4
- package/lib/publishing/github/with-signing-key.sh +1 -7
- package/lib/publishing.d.ts +2 -1
- package/lib/publishing.js +36 -35
- package/lib/publishing.ts +9 -8
- package/lib/pull-request/bump.d.ts +3 -3
- package/lib/pull-request/bump.js +3 -26
- package/lib/pull-request/bump.ts +3 -3
- package/lib/pull-request/merge-back.d.ts +3 -3
- package/lib/pull-request/merge-back.js +3 -3
- package/lib/pull-request/merge-back.ts +3 -3
- package/lib/pull-request/pr.d.ts +2 -1
- package/lib/pull-request/pr.js +11 -10
- package/lib/pull-request/pr.ts +3 -2
- package/lib/registry-sync/ecr-mirror.d.ts +2 -1
- package/lib/registry-sync/ecr-mirror.js +22 -21
- package/lib/registry-sync/ecr-mirror.ts +4 -3
- package/lib/registry-sync/mirror-source.d.ts +2 -1
- package/lib/registry-sync/mirror-source.js +3 -3
- package/lib/registry-sync/mirror-source.ts +2 -2
- package/lib/repo.d.ts +2 -1
- package/lib/repo.js +12 -12
- package/lib/repo.ts +3 -2
- package/lib/shellable.d.ts +2 -1
- package/lib/shellable.js +23 -22
- package/lib/shellable.ts +5 -4
- package/lib/signing-key.d.ts +2 -1
- package/lib/signing-key.js +6 -5
- package/lib/signing-key.ts +3 -2
- package/lib/util.d.ts +1 -1
- package/lib/util.js +1 -1
- package/lib/util.ts +1 -1
- package/package.json +13 -11
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +0 -119
package/lib/auto-build.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aws_codebuild as codebuild } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { BuildEnvironmentProps } from './build-env';
|
|
3
4
|
import { IRepo } from './repo';
|
|
4
5
|
export interface AutoBuildOptions {
|
package/lib/auto-build.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AutoBuild = void 0;
|
|
4
|
-
const
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
5
6
|
const build_env_1 = require("./build-env");
|
|
6
|
-
class AutoBuild extends
|
|
7
|
+
class AutoBuild extends constructs_1.Construct {
|
|
7
8
|
constructor(scope, id, props) {
|
|
8
9
|
var _a, _b, _c, _d;
|
|
9
10
|
super(scope, id);
|
|
10
|
-
this.project = new
|
|
11
|
+
this.project = new aws_cdk_lib_1.aws_codebuild.Project(this, 'Project', {
|
|
11
12
|
projectName: props.projectName,
|
|
12
13
|
description: `Automatic PR build for ${props.repo.describe()}`,
|
|
13
14
|
source: props.repo.createBuildSource(this, (_a = props.webhook) !== null && _a !== void 0 ? _a : true, { branch: props.branch, branches: props.branches }),
|
|
@@ -16,9 +17,9 @@ class AutoBuild extends monocdk_1.Construct {
|
|
|
16
17
|
buildSpec: props.buildSpec,
|
|
17
18
|
});
|
|
18
19
|
const publicLogs = props.publicLogs !== undefined ? props.publicLogs : false;
|
|
19
|
-
const githubToken = props.repo.tokenSecretArn ?
|
|
20
|
+
const githubToken = props.repo.tokenSecretArn ? aws_cdk_lib_1.SecretValue.secretsManager(props.repo.tokenSecretArn) : undefined;
|
|
20
21
|
if (publicLogs) {
|
|
21
|
-
new
|
|
22
|
+
new aws_cdk_lib_1.aws_sam.CfnApplication(this, 'GitHubCodeBuildLogsSAR', {
|
|
22
23
|
location: {
|
|
23
24
|
applicationId: 'arn:aws:serverlessrepo:us-east-1:277187709615:applications/github-codebuild-logs',
|
|
24
25
|
semanticVersion: '1.4.0',
|
|
@@ -27,11 +28,11 @@ class AutoBuild extends monocdk_1.Construct {
|
|
|
27
28
|
CodeBuildProjectName: this.project.projectName,
|
|
28
29
|
DeletePreviousComments: ((_c = props.deletePreviousPublicLogsLinks) !== null && _c !== void 0 ? _c : true).toString(),
|
|
29
30
|
CommentOnSuccess: ((_d = props.publicLogsOnSuccess) !== null && _d !== void 0 ? _d : true).toString(),
|
|
30
|
-
...githubToken ? { GitHubOAuthToken:
|
|
31
|
+
...githubToken ? { GitHubOAuthToken: aws_cdk_lib_1.Token.asString(githubToken) } : undefined,
|
|
31
32
|
},
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
exports.AutoBuild = AutoBuild;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dG8tYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSXFCO0FBQ3JCLDJDQUF1QztBQUN2QywyQ0FBNEU7QUEwRjVFLE1BQWEsU0FBVSxTQUFRLHNCQUFTO0lBT3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDJCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDcEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSwwQkFBMEIsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JILFdBQVcsRUFBRSxJQUFBLGtDQUFzQixFQUFDLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksRUFBRSxDQUFDO1lBQzVELEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0UsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHlCQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVsSCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUkscUJBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO2dCQUM1RCxRQUFRLEVBQUU7b0JBQ1IsYUFBYSxFQUFFLGtGQUFrRjtvQkFDakcsZUFBZSxFQUFFLE9BQU87aUJBQ3pCO2dCQUNELFVBQVUsRUFBRTtvQkFDVixvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQzlDLHNCQUFzQixFQUFFLENBQUMsTUFBQSxLQUFLLENBQUMsNkJBQTZCLG1DQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDaEYsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFBLEtBQUssQ0FBQyxtQkFBbUIsbUNBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNoRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUMvRTthQUNGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBckNELDhCQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRva2VuLCBTZWNyZXRWYWx1ZSxcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19zYW0gYXMgc2VydmVybGVzcyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50UHJvcHMsIGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICcuL2J1aWxkLWVudic7XG5pbXBvcnQgeyBJUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBCdWlsZCBlbnZpcm9ubWVudC5cbiAgICogQGRlZmF1bHQgLSBzZWUgZGVmYXVsdHMgaW4gYEJ1aWxkRW52aXJvbm1lbnRQcm9wc2BcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogQnVpbGRFbnZpcm9ubWVudFByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1ha2UgYnVpbGQgbG9ncyBwdWJsaWMgYW5kIHB1Ymxpc2hlcyBhIGxpbmsgdG8gR2l0SHViIFBSIGRpc2N1c3Npb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2psaG9vZC9naXRodWItY29kZWJ1aWxkLWxvZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0xvZ3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlIHByb2plY3QgdG8gcmVzcG9uZCB0byB3ZWJob29rcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgd2ViaG9vaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHVibGlzaCBhIGxpbmsgdG8gYnVpbGQgbG9ncyB3aGVuIGJ1aWxkIGlzIHN1Y2Nlc3NmdWwuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2psaG9vZC9naXRodWItY29kZWJ1aWxkLWxvZ3MjYXBwLXBhcmFtZXRlcnNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljTG9nc09uU3VjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVsZXRlIHByZXZpb3VzbHkgcHVibGlzaGVkIGxpbmtzIHRvIGJ1aWxkIGxvZ3NcbiAgICogYmVmb3JlIHBvc3RpbmcgYSBuZXcgb25lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qbGhvb2QvZ2l0aHViLWNvZGVidWlsZC1sb2dzI2FwcC1wYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZVByZXZpb3VzUHVibGljTG9nc0xpbmtzPzogYm9vbGVhbjtcblxuICAvKiB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggKi9cbiAgLyoqXG4gICAqIEJ1aWxkIHNwZWMgZmlsZSB0byB1c2UgZm9yIEF1dG9CdWlsZFxuICAgKlxuICAgKiBAZGVmYXVsdCBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVidWlsZC1wcm9qZWN0LXNvdXJjZS5odG1sI2Nmbi1jb2RlYnVpbGQtcHJvamVjdC1zb3VyY2UtYnVpbGRzcGVjXG4gICAqL1xuICByZWFkb25seSBidWlsZFNwZWM/OiBjb2RlYnVpbGQuQnVpbGRTcGVjO1xuICAvKiB0c2xpbnQ6ZW5hYmxlOm1heC1saW5lLWxlbmd0aCAqL1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdWlsZFByb3BzIGV4dGVuZHMgQXV0b0J1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBtb25pdG9yLlxuICAgKlxuICAgKiBNdXN0IGJlIGEgR2l0SHViIHJlcG9zaXRvcnkgZm9yIGBwdWJsaWNMb2dzYCB0byBoYXZlIGFueSBlZmZlY3QuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBJUmVwbztcblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIGJyYW5jaCB0byBiZSBjb25zaWRlcmVkIGZvciBhdXRvLWJ1aWxkcy5cbiAgICpcbiAgICogU3BlY2lmeSBhdCBtb3N0IG9uZSBvZiBgYnJhbmNoYCBhbmQgYGJyYW5jaGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgJiBhbGwgYnJhbmNoZXMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYnJhbmNoZXNgIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzcGVjaWZpYyBicmFuY2ggdG8gYmUgY29uc2lkZXJlZCBmb3IgYXV0by1idWlsZHMuXG4gICAqXG4gICAqIFNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgYGJyYW5jaGAgYW5kIGBicmFuY2hlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW55ICYgYWxsIGJyYW5jaGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9CdWlsZCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIGBDb2RlQnVpbGRgIHByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY29kZWJ1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9CdWlsZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdCh0aGlzLCAnUHJvamVjdCcsIHtcbiAgICAgIHByb2plY3ROYW1lOiBwcm9wcy5wcm9qZWN0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgQXV0b21hdGljIFBSIGJ1aWxkIGZvciAke3Byb3BzLnJlcG8uZGVzY3JpYmUoKX1gLFxuICAgICAgc291cmNlOiBwcm9wcy5yZXBvLmNyZWF0ZUJ1aWxkU291cmNlKHRoaXMsIHByb3BzLndlYmhvb2sgPz8gdHJ1ZSwgeyBicmFuY2g6IHByb3BzLmJyYW5jaCwgYnJhbmNoZXM6IHByb3BzLmJyYW5jaGVzIH0pLFxuICAgICAgZW52aXJvbm1lbnQ6IGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHMuZW52aXJvbm1lbnQgPz8ge30pLFxuICAgICAgYmFkZ2U6IHByb3BzLnJlcG8uYWxsb3dzQmFkZ2UsXG4gICAgICBidWlsZFNwZWM6IHByb3BzLmJ1aWxkU3BlYyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHB1YmxpY0xvZ3MgPSBwcm9wcy5wdWJsaWNMb2dzICE9PSB1bmRlZmluZWQgPyBwcm9wcy5wdWJsaWNMb2dzIDogZmFsc2U7XG4gICAgY29uc3QgZ2l0aHViVG9rZW4gPSBwcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJuID8gU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIocHJvcHMucmVwby50b2tlblNlY3JldEFybikgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocHVibGljTG9ncykge1xuICAgICAgbmV3IHNlcnZlcmxlc3MuQ2ZuQXBwbGljYXRpb24odGhpcywgJ0dpdEh1YkNvZGVCdWlsZExvZ3NTQVInLCB7XG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgYXBwbGljYXRpb25JZDogJ2Fybjphd3M6c2VydmVybGVzc3JlcG86dXMtZWFzdC0xOjI3NzE4NzcwOTYxNTphcHBsaWNhdGlvbnMvZ2l0aHViLWNvZGVidWlsZC1sb2dzJyxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246ICcxLjQuMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDb2RlQnVpbGRQcm9qZWN0TmFtZTogdGhpcy5wcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgICAgIERlbGV0ZVByZXZpb3VzQ29tbWVudHM6IChwcm9wcy5kZWxldGVQcmV2aW91c1B1YmxpY0xvZ3NMaW5rcyA/PyB0cnVlKS50b1N0cmluZygpLFxuICAgICAgICAgIENvbW1lbnRPblN1Y2Nlc3M6IChwcm9wcy5wdWJsaWNMb2dzT25TdWNjZXNzID8/IHRydWUpLnRvU3RyaW5nKCksXG4gICAgICAgICAgLi4uZ2l0aHViVG9rZW4gPyB7IEdpdEh1Yk9BdXRoVG9rZW46IFRva2VuLmFzU3RyaW5nKGdpdGh1YlRva2VuKSB9IDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/auto-build.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
Token, SecretValue,
|
|
3
3
|
aws_codebuild as codebuild,
|
|
4
4
|
aws_sam as serverless,
|
|
5
|
-
} from '
|
|
5
|
+
} from 'aws-cdk-lib';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
6
7
|
import { BuildEnvironmentProps, createBuildEnvironment } from './build-env';
|
|
7
8
|
import { IRepo } from './repo';
|
|
8
9
|
|
package/lib/build-env.d.ts
CHANGED
package/lib/build-env.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createBuildEnvironment = void 0;
|
|
4
|
-
const
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
function createBuildEnvironment(props) {
|
|
6
6
|
const environment = {
|
|
7
|
-
computeType: props.computeType ||
|
|
7
|
+
computeType: props.computeType || aws_cdk_lib_1.aws_codebuild.ComputeType.SMALL,
|
|
8
8
|
privileged: props.privileged,
|
|
9
9
|
environmentVariables: renderEnvironmentVariables({ ...props.environment, ...props.env }),
|
|
10
|
-
buildImage: props.buildImage ||
|
|
10
|
+
buildImage: props.buildImage || aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('jsii/superchain:latest'),
|
|
11
11
|
};
|
|
12
12
|
return environment;
|
|
13
13
|
}
|
|
@@ -22,4 +22,4 @@ function renderEnvironmentVariables(env) {
|
|
|
22
22
|
}
|
|
23
23
|
return out;
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYnVpbGQtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQVd0RCxTQUFnQixzQkFBc0IsQ0FBQyxLQUE0QjtJQUNqRSxNQUFNLFdBQVcsR0FBNEI7UUFDM0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksMkJBQU0sQ0FBQyxXQUFXLENBQUMsS0FBSztRQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDNUIsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7S0FDcEcsQ0FBQztJQUVGLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFURCx3REFTQztBQUVELFNBQVMsMEJBQTBCLENBQUMsR0FBK0I7SUFDakUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsTUFBTSxHQUFHLEdBQXVELEVBQUcsQ0FBQztJQUNwRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUN0QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRW52aXJvbm1lbnRQcm9wcyB7XG4gIGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGVudj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQocHJvcHM6IEJ1aWxkRW52aXJvbm1lbnRQcm9wcykge1xuICBjb25zdCBlbnZpcm9ubWVudDogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnQgPSB7XG4gICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5TTUFMTCxcbiAgICBwcml2aWxlZ2VkOiBwcm9wcy5wcml2aWxlZ2VkLFxuICAgIGVudmlyb25tZW50VmFyaWFibGVzOiByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7IC4uLnByb3BzLmVudmlyb25tZW50LCAuLi5wcm9wcy5lbnYgfSksXG4gICAgYnVpbGRJbWFnZTogcHJvcHMuYnVpbGRJbWFnZSB8fCBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgnanNpaS9zdXBlcmNoYWluOmxhdGVzdCcpLFxuICB9O1xuXG4gIHJldHVybiBlbnZpcm9ubWVudDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICBpZiAoIWVudikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZSB9ID0geyB9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYpKSB7XG4gICAgb3V0W2tleV0gPSB7IHZhbHVlIH07XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiJdfQ==
|
package/lib/build-env.ts
CHANGED
package/lib/canary.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aws_cloudwatch as cloudwatch, aws_codebuild as cbuild, aws_events as events } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { ShellableProps } from './shellable';
|
|
3
4
|
export interface CanaryProps extends ShellableProps {
|
|
4
5
|
/**
|
package/lib/canary.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Canary = void 0;
|
|
4
|
-
const
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
5
6
|
const shellable_1 = require("./shellable");
|
|
6
7
|
/**
|
|
7
8
|
* Schedules a script to run periodically in CodeBuild and exposes an alarm
|
|
@@ -9,7 +10,7 @@ const shellable_1 = require("./shellable");
|
|
|
9
10
|
*
|
|
10
11
|
* If not explicitly defined in `environmentVariables`, IS_CANARY is set to "true".
|
|
11
12
|
*/
|
|
12
|
-
class Canary extends
|
|
13
|
+
class Canary extends constructs_1.Construct {
|
|
13
14
|
constructor(scope, id, props) {
|
|
14
15
|
super(scope, id);
|
|
15
16
|
const env = props.environment || {};
|
|
@@ -20,13 +21,13 @@ class Canary extends monocdk_1.Construct {
|
|
|
20
21
|
...props,
|
|
21
22
|
environment: env,
|
|
22
23
|
});
|
|
23
|
-
new
|
|
24
|
-
schedule: props.schedule ||
|
|
25
|
-
targets: [new
|
|
24
|
+
new aws_cdk_lib_1.aws_events.Rule(this, 'Schedule', {
|
|
25
|
+
schedule: props.schedule || aws_cdk_lib_1.aws_events.Schedule.expression('rate(1 minute)'),
|
|
26
|
+
targets: [new aws_cdk_lib_1.aws_events_targets.CodeBuildProject(shellable.project)],
|
|
26
27
|
});
|
|
27
28
|
this.alarm = shellable.alarm;
|
|
28
29
|
this.project = shellable.project;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
exports.Canary = Canary;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2FuYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUtxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsMkNBQXdEO0FBWXhEOzs7OztHQUtHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsc0JBQVM7SUFJbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUN6QixHQUFHLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztTQUN4QjtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ2pELEdBQUcsS0FBSztZQUNSLFdBQVcsRUFBRSxHQUFHO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksd0JBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSx3QkFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7WUFDeEUsT0FBTyxFQUFFLENBQUMsSUFBSSxnQ0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXpCRCx3QkF5QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2V2ZW50cyBhcyBldmVudHMsXG4gIGF3c19ldmVudHNfdGFyZ2V0cyBhcyBldmVudHNfdGFyZ2V0cyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTaGVsbGFibGUsIFNoZWxsYWJsZVByb3BzIH0gZnJvbSAnLi9zaGVsbGFibGUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYXJ5UHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBSYXRlIGF0IHdoaWNoIHRvIHJ1biB0aGUgY2FuYXJ5IHRlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGV2ZXJ5IDEgbWludXRlXG4gICAqL1xuICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlO1xufVxuXG4vKipcbiAqIFNjaGVkdWxlcyBhIHNjcmlwdCB0byBydW4gcGVyaW9kaWNhbGx5IGluIENvZGVCdWlsZCBhbmQgZXhwb3NlcyBhbiBhbGFybVxuICogZm9yIGZhaWx1cmVzLiBJZGVhbCBmb3IgcnVubmluZyAnY2FuYXJ5JyBzY3JpcHRzLlxuICpcbiAqIElmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgaW4gYGVudmlyb25tZW50VmFyaWFibGVzYCwgSVNfQ0FOQVJZIGlzIHNldCB0byBcInRydWVcIi5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmFyeSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5JQWxhcm07XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuSVByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENhbmFyeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGVudiA9IHByb3BzLmVudmlyb25tZW50IHx8IHsgfTtcbiAgICBpZiAoISgnSVNfQ0FOQVJZJyBpbiBlbnYpKSB7XG4gICAgICBlbnYuSVNfQ0FOQVJZID0gJ3RydWUnO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ1NoZWxsYWJsZScsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZW52aXJvbm1lbnQ6IGVudixcbiAgICB9KTtcblxuICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnU2NoZWR1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUgfHwgZXZlbnRzLlNjaGVkdWxlLmV4cHJlc3Npb24oJ3JhdGUoMSBtaW51dGUpJyksXG4gICAgICB0YXJnZXRzOiBbbmV3IGV2ZW50c190YXJnZXRzLkNvZGVCdWlsZFByb2plY3Qoc2hlbGxhYmxlLnByb2plY3QpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWxhcm0gPSBzaGVsbGFibGUuYWxhcm07XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cbn1cbiJdfQ==
|
package/lib/canary.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Construct,
|
|
3
2
|
aws_cloudwatch as cloudwatch,
|
|
4
3
|
aws_codebuild as cbuild,
|
|
5
4
|
aws_events as events,
|
|
6
5
|
aws_events_targets as events_targets,
|
|
7
|
-
} from '
|
|
6
|
+
} from 'aws-cdk-lib';
|
|
7
|
+
import { Construct } from 'constructs';
|
|
8
8
|
import { Shellable, ShellableProps } from './shellable';
|
|
9
9
|
|
|
10
10
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aws_cloudwatch as cloudwatch, aws_codepipeline as cp, aws_events as events, aws_s3 as s3 } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
export interface ChangeControllerProps {
|
|
3
4
|
/**
|
|
4
5
|
* The bucket in which the ChangeControl iCal document will be stored.
|
package/lib/change-controller.js
CHANGED
|
@@ -25,29 +25,30 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.ChangeController = void 0;
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
|
-
const
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const constructs_1 = require("constructs");
|
|
29
30
|
/**
|
|
30
31
|
* Controls enabling and disabling a CodePipeline promotion into a particular stage based on "blocking" windows that are
|
|
31
32
|
* configured in an iCal document stored in an S3 bucket. If the document is not present or the bucket does not exist,
|
|
32
33
|
* the transition will be disabled.
|
|
33
34
|
*/
|
|
34
|
-
class ChangeController extends
|
|
35
|
+
class ChangeController extends constructs_1.Construct {
|
|
35
36
|
constructor(scope, id, props) {
|
|
36
37
|
super(scope, id);
|
|
37
38
|
let changeControlBucket = props.changeControlBucket;
|
|
38
39
|
let ownBucket;
|
|
39
40
|
if (!changeControlBucket) {
|
|
40
|
-
changeControlBucket = ownBucket = new
|
|
41
|
-
removalPolicy:
|
|
41
|
+
changeControlBucket = ownBucket = new aws_cdk_lib_1.aws_s3.Bucket(this, 'Calendar', {
|
|
42
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
42
43
|
versioned: true,
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
// const changeControlBucket = props.changeControlBucket || new s3.Bucket(this, 'Bucket', { versioned: true });
|
|
46
47
|
const changeControlObjectKey = props.changeControlObjectKey || 'change-control.ics';
|
|
47
|
-
const fn = new
|
|
48
|
+
const fn = new aws_cdk_lib_1.aws_lambda_nodejs.NodejsFunction(this, 'Function', {
|
|
48
49
|
description: `Enforces a Change Control Policy into CodePipeline's ${props.pipelineStage.stageName} stage`,
|
|
49
50
|
entry: path.join(__dirname, 'change-control-lambda', 'index.ts'),
|
|
50
|
-
runtime:
|
|
51
|
+
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
|
|
51
52
|
environment: {
|
|
52
53
|
// CAPITAL punishment 👌🏻
|
|
53
54
|
CHANGE_CONTROL_BUCKET_NAME: changeControlBucket.bucketName,
|
|
@@ -55,42 +56,43 @@ class ChangeController extends monocdk_1.Construct {
|
|
|
55
56
|
PIPELINE_NAME: props.pipelineStage.pipeline.pipelineName,
|
|
56
57
|
STAGE_NAME: props.pipelineStage.stageName,
|
|
57
58
|
},
|
|
58
|
-
timeout:
|
|
59
|
+
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
59
60
|
});
|
|
60
|
-
fn.addToRolePolicy(new
|
|
61
|
+
fn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
61
62
|
resources: [`${props.pipelineStage.pipeline.pipelineArn}/${props.pipelineStage.stageName}`],
|
|
62
63
|
actions: ['codepipeline:EnableStageTransition', 'codepipeline:DisableStageTransition'],
|
|
63
64
|
}));
|
|
64
65
|
changeControlBucket.grantRead(fn, props.changeControlObjectKey);
|
|
65
66
|
if (ownBucket) {
|
|
66
|
-
ownBucket.addObjectCreatedNotification(new
|
|
67
|
+
ownBucket.addObjectCreatedNotification(new aws_cdk_lib_1.aws_s3_notifications.LambdaDestination(fn), {
|
|
67
68
|
prefix: changeControlObjectKey,
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
|
-
this.failureAlarm = new
|
|
71
|
-
metric: fn.metricErrors(
|
|
71
|
+
this.failureAlarm = new aws_cdk_lib_1.aws_cloudwatch.Alarm(this, 'Failed', {
|
|
72
|
+
metric: fn.metricErrors({
|
|
73
|
+
period: aws_cdk_lib_1.Duration.seconds(300),
|
|
74
|
+
}),
|
|
72
75
|
threshold: 1,
|
|
73
76
|
datapointsToAlarm: 1,
|
|
74
|
-
period: monocdk_1.Duration.seconds(300),
|
|
75
77
|
evaluationPeriods: 1,
|
|
76
78
|
});
|
|
77
|
-
const schedule = props.schedule ||
|
|
79
|
+
const schedule = props.schedule || aws_cdk_lib_1.aws_events.Schedule.expression('rate(15 minutes)');
|
|
78
80
|
// Run this on a schedule
|
|
79
|
-
new
|
|
81
|
+
new aws_cdk_lib_1.aws_events.Rule(this, 'Rule', {
|
|
80
82
|
// tslint:disable-next-line:max-line-length
|
|
81
83
|
description: `Run the change controller for promotions into ${props.pipelineStage.pipeline.pipelineName}'s ${props.pipelineStage.stageName} on a ${schedule} schedule`,
|
|
82
84
|
schedule,
|
|
83
|
-
targets: [new
|
|
85
|
+
targets: [new aws_cdk_lib_1.aws_events_targets.LambdaFunction(fn)],
|
|
84
86
|
});
|
|
85
87
|
if (props.createOutputs !== false) {
|
|
86
|
-
new
|
|
88
|
+
new aws_cdk_lib_1.CfnOutput(this, 'ChangeControlBucketKey', {
|
|
87
89
|
value: changeControlObjectKey,
|
|
88
90
|
});
|
|
89
|
-
new
|
|
91
|
+
new aws_cdk_lib_1.CfnOutput(this, 'ChangeControlBucket', {
|
|
90
92
|
value: changeControlBucket.bucketName,
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
exports.ChangeController = ChangeController;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjaGFuZ2UtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FXcUI7QUFDckIsMkNBQXVDO0FBc0N2Qzs7OztHQUlHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQU03QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDcEQsSUFBSSxTQUFnQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUN4QixtQkFBbUIsR0FBRyxTQUFTLEdBQUcsSUFBSSxvQkFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNoRSxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO2dCQUNwQyxTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUM7U0FDSjtRQUVELCtHQUErRztRQUMvRyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxvQkFBb0IsQ0FBQztRQUVwRixNQUFNLEVBQUUsR0FBRyxJQUFJLCtCQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDckQsV0FBVyxFQUFFLHdEQUF3RCxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsUUFBUTtZQUMxRyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxDQUFDO1lBQ2hFLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLFdBQVcsRUFBRTtnQkFDWCwwQkFBMEI7Z0JBQzFCLDBCQUEwQixFQUFFLG1CQUFtQixDQUFDLFVBQVU7Z0JBQzFELHlCQUF5QixFQUFFLHNCQUFzQjtnQkFDakQsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVk7Z0JBQ3hELFVBQVUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVM7YUFDMUM7WUFDRCxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQy9CLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN6QyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNGLE9BQU8sRUFBRSxDQUFDLG9DQUFvQyxFQUFFLHFDQUFxQyxDQUFDO1NBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBRUosbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVoRSxJQUFJLFNBQVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLGtDQUFnQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNqRixNQUFNLEVBQUUsc0JBQXNCO2FBQy9CLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDRCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDdkQsTUFBTSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7YUFDOUIsQ0FBQztZQUNGLFNBQVMsRUFBRSxDQUFDO1lBQ1osaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixpQkFBaUIsRUFBRSxDQUFDO1NBQ3JCLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksd0JBQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFbEYseUJBQXlCO1FBQ3pCLElBQUksd0JBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUM1QiwyQ0FBMkM7WUFDM0MsV0FBVyxFQUFFLGlEQUFpRCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLE1BQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLFNBQVMsUUFBUSxXQUFXO1lBQ3RLLFFBQVE7WUFDUixPQUFPLEVBQUUsQ0FBQyxJQUFJLGdDQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pELENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUU7WUFDakMsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtnQkFDNUMsS0FBSyxFQUFFLHNCQUFzQjthQUM5QixDQUFDLENBQUM7WUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO2dCQUN6QyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsVUFBVTthQUN0QyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQTlFRCw0Q0E4RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSxcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcCxcbiAgYXdzX2V2ZW50cyBhcyBldmVudHMsXG4gIGF3c19ldmVudHNfdGFyZ2V0cyBhcyBldmVudHNfdGFyZ2V0cyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3NfczMgYXMgczMsXG4gIGF3c19zM19ub3RpZmljYXRpb25zIGFzIHMzX25vdGlmaWNhdGlvbnMsXG4gIGF3c19sYW1iZGFfbm9kZWpzIGFzIG5vZGVqcyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlQ29udHJvbGxlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgaW4gd2hpY2ggdGhlIENoYW5nZUNvbnRyb2wgaUNhbCBkb2N1bWVudCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuZXcgdmVyc2lvbmVkIGJ1Y2tldCB3aWxsIGJlIHByb3Zpc2lvbmVkLlxuICAgKi9cbiAgY2hhbmdlQ29udHJvbEJ1Y2tldD86IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgaW4gd2hpY2ggdGhlIGlDYWwgZmlsbGUgd2lsbCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjaGFuZ2UtY29udHJvbC5pY2FsJ1xuICAgKi9cbiAgY2hhbmdlQ29udHJvbE9iamVjdEtleT86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc3RhZ2VcbiAgICovXG4gIHBpcGVsaW5lU3RhZ2U6IGNwLklTdGFnZTtcblxuICAvKipcbiAgICogU2NoZWR1bGUgdG8gcnVuIHRoZSBjaGFuZ2UgY29udHJvbGxlciBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBvbmNlIGV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICovXG4gIHNjaGVkdWxlPzogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSBvdXRwdXRzIHRvIGluZm9ybSBvZiB0aGUgUzMgYnVja2V0IG5hbWUgYW5kIGtleXMgd2hlcmUgdGhlIGNoYW5nZSBjb250cm9sIGNhbGVuZGFyIHNob3VsZCBiZVxuICAgKiBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0cyB0cnVlXG4gICAqL1xuICBjcmVhdGVPdXRwdXRzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9scyBlbmFibGluZyBhbmQgZGlzYWJsaW5nIGEgQ29kZVBpcGVsaW5lIHByb21vdGlvbiBpbnRvIGEgcGFydGljdWxhciBzdGFnZSBiYXNlZCBvbiBcImJsb2NraW5nXCIgd2luZG93cyB0aGF0IGFyZVxuICogY29uZmlndXJlZCBpbiBhbiBpQ2FsIGRvY3VtZW50IHN0b3JlZCBpbiBhbiBTMyBidWNrZXQuIElmIHRoZSBkb2N1bWVudCBpcyBub3QgcHJlc2VudCBvciB0aGUgYnVja2V0IGRvZXMgbm90IGV4aXN0LFxuICogdGhlIHRyYW5zaXRpb24gd2lsbCBiZSBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYW5nZUNvbnRyb2xsZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGFsYXJtIHRoYXQgd2lsbCBmaXJlIGluIGNhc2UgdGhlIGNoYW5nZSBjb250cm9sbGVyIGhhcyBmYWlsZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmFpbHVyZUFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDaGFuZ2VDb250cm9sbGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IGNoYW5nZUNvbnRyb2xCdWNrZXQgPSBwcm9wcy5jaGFuZ2VDb250cm9sQnVja2V0O1xuICAgIGxldCBvd25CdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghY2hhbmdlQ29udHJvbEJ1Y2tldCkge1xuICAgICAgY2hhbmdlQ29udHJvbEJ1Y2tldCA9IG93bkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0NhbGVuZGFyJywge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGNoYW5nZUNvbnRyb2xCdWNrZXQgPSBwcm9wcy5jaGFuZ2VDb250cm9sQnVja2V0IHx8IG5ldyBzMy5CdWNrZXQodGhpcywgJ0J1Y2tldCcsIHsgdmVyc2lvbmVkOiB0cnVlIH0pO1xuICAgIGNvbnN0IGNoYW5nZUNvbnRyb2xPYmplY3RLZXkgPSBwcm9wcy5jaGFuZ2VDb250cm9sT2JqZWN0S2V5IHx8ICdjaGFuZ2UtY29udHJvbC5pY3MnO1xuXG4gICAgY29uc3QgZm4gPSBuZXcgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdGdW5jdGlvbicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgRW5mb3JjZXMgYSBDaGFuZ2UgQ29udHJvbCBQb2xpY3kgaW50byBDb2RlUGlwZWxpbmUncyAke3Byb3BzLnBpcGVsaW5lU3RhZ2Uuc3RhZ2VOYW1lfSBzdGFnZWAsXG4gICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NoYW5nZS1jb250cm9sLWxhbWJkYScsICdpbmRleC50cycpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAvLyBDQVBJVEFMIHB1bmlzaG1lbnQg8J+RjPCfj7tcbiAgICAgICAgQ0hBTkdFX0NPTlRST0xfQlVDS0VUX05BTUU6IGNoYW5nZUNvbnRyb2xCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgQ0hBTkdFX0NPTlRST0xfT0JKRUNUX0tFWTogY2hhbmdlQ29udHJvbE9iamVjdEtleSxcbiAgICAgICAgUElQRUxJTkVfTkFNRTogcHJvcHMucGlwZWxpbmVTdGFnZS5waXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgIFNUQUdFX05BTUU6IHByb3BzLnBpcGVsaW5lU3RhZ2Uuc3RhZ2VOYW1lLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICB9KTtcblxuICAgIGZuLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtgJHtwcm9wcy5waXBlbGluZVN0YWdlLnBpcGVsaW5lLnBpcGVsaW5lQXJufS8ke3Byb3BzLnBpcGVsaW5lU3RhZ2Uuc3RhZ2VOYW1lfWBdLFxuICAgICAgYWN0aW9uczogWydjb2RlcGlwZWxpbmU6RW5hYmxlU3RhZ2VUcmFuc2l0aW9uJywgJ2NvZGVwaXBlbGluZTpEaXNhYmxlU3RhZ2VUcmFuc2l0aW9uJ10sXG4gICAgfSkpO1xuXG4gICAgY2hhbmdlQ29udHJvbEJ1Y2tldC5ncmFudFJlYWQoZm4sIHByb3BzLmNoYW5nZUNvbnRyb2xPYmplY3RLZXkpO1xuXG4gICAgaWYgKG93bkJ1Y2tldCkge1xuICAgICAgb3duQnVja2V0LmFkZE9iamVjdENyZWF0ZWROb3RpZmljYXRpb24obmV3IHMzX25vdGlmaWNhdGlvbnMuTGFtYmRhRGVzdGluYXRpb24oZm4pLCB7XG4gICAgICAgIHByZWZpeDogY2hhbmdlQ29udHJvbE9iamVjdEtleSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZmFpbHVyZUFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guQWxhcm0odGhpcywgJ0ZhaWxlZCcsIHtcbiAgICAgIG1ldHJpYzogZm4ubWV0cmljRXJyb3JzKHtcbiAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICB9KSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiAxLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlIHx8IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKCdyYXRlKDE1IG1pbnV0ZXMpJyk7XG5cbiAgICAvLyBSdW4gdGhpcyBvbiBhIHNjaGVkdWxlXG4gICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdSdWxlJywge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgZGVzY3JpcHRpb246IGBSdW4gdGhlIGNoYW5nZSBjb250cm9sbGVyIGZvciBwcm9tb3Rpb25zIGludG8gJHtwcm9wcy5waXBlbGluZVN0YWdlLnBpcGVsaW5lLnBpcGVsaW5lTmFtZX0ncyAke3Byb3BzLnBpcGVsaW5lU3RhZ2Uuc3RhZ2VOYW1lfSBvbiBhICR7c2NoZWR1bGV9IHNjaGVkdWxlYCxcbiAgICAgIHNjaGVkdWxlLFxuICAgICAgdGFyZ2V0czogW25ldyBldmVudHNfdGFyZ2V0cy5MYW1iZGFGdW5jdGlvbihmbildLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmNyZWF0ZU91dHB1dHMgIT09IGZhbHNlKSB7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdDaGFuZ2VDb250cm9sQnVja2V0S2V5Jywge1xuICAgICAgICB2YWx1ZTogY2hhbmdlQ29udHJvbE9iamVjdEtleSxcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdDaGFuZ2VDb250cm9sQnVja2V0Jywge1xuICAgICAgICB2YWx1ZTogY2hhbmdlQ29udHJvbEJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/change-controller.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import {
|
|
3
|
-
CfnOutput,
|
|
3
|
+
CfnOutput, Duration, RemovalPolicy,
|
|
4
4
|
aws_cloudwatch as cloudwatch,
|
|
5
5
|
aws_codepipeline as cp,
|
|
6
6
|
aws_events as events,
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
aws_s3 as s3,
|
|
11
11
|
aws_s3_notifications as s3_notifications,
|
|
12
12
|
aws_lambda_nodejs as nodejs,
|
|
13
|
-
}
|
|
14
|
-
|
|
13
|
+
} from 'aws-cdk-lib';
|
|
14
|
+
import { Construct } from 'constructs';
|
|
15
15
|
|
|
16
16
|
export interface ChangeControllerProps {
|
|
17
17
|
/**
|
|
@@ -104,10 +104,11 @@ export class ChangeController extends Construct {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
this.failureAlarm = new cloudwatch.Alarm(this, 'Failed', {
|
|
107
|
-
metric: fn.metricErrors(
|
|
107
|
+
metric: fn.metricErrors({
|
|
108
|
+
period: Duration.seconds(300),
|
|
109
|
+
}),
|
|
108
110
|
threshold: 1,
|
|
109
111
|
datapointsToAlarm: 1,
|
|
110
|
-
period: Duration.seconds(300),
|
|
111
112
|
evaluationPeriods: 1,
|
|
112
113
|
});
|
|
113
114
|
|
|
@@ -25,11 +25,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.ChimeNotifier = void 0;
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
|
-
const
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const constructs_1 = require("constructs");
|
|
29
30
|
/**
|
|
30
31
|
* Send a message to a Chime room when a pipeline fails
|
|
31
32
|
*/
|
|
32
|
-
class ChimeNotifier extends
|
|
33
|
+
class ChimeNotifier extends constructs_1.Construct {
|
|
33
34
|
constructor(scope, id, props) {
|
|
34
35
|
var _a;
|
|
35
36
|
super(scope, id);
|
|
@@ -37,25 +38,25 @@ class ChimeNotifier extends monocdk_1.Construct {
|
|
|
37
38
|
if (props.webhookUrls.length > 0) {
|
|
38
39
|
// Reuse the same Lambda code for all pipelines, we will move the Lambda parameterizations into
|
|
39
40
|
// the CloudWatch Event Input.
|
|
40
|
-
const notifierLambda = new
|
|
41
|
+
const notifierLambda = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'Default', {
|
|
41
42
|
handler: 'index.handler',
|
|
42
43
|
uuid: '0f4a3ee0-692e-4249-932f-a46a833886d8',
|
|
43
|
-
code:
|
|
44
|
-
runtime:
|
|
45
|
-
timeout:
|
|
44
|
+
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, 'handler')),
|
|
45
|
+
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
|
|
46
|
+
timeout: aws_cdk_lib_1.Duration.minutes(5),
|
|
46
47
|
});
|
|
47
|
-
notifierLambda.addToRolePolicy(new
|
|
48
|
+
notifierLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
48
49
|
actions: ['codepipeline:GetPipelineExecution', 'codepipeline:ListActionExecutions'],
|
|
49
50
|
resources: [props.pipeline.pipelineArn],
|
|
50
51
|
}));
|
|
51
52
|
props.pipeline.onStateChange(`${this.node.path}-ChimeNotifier`, {
|
|
52
|
-
target: new
|
|
53
|
-
event:
|
|
53
|
+
target: new aws_cdk_lib_1.aws_events_targets.LambdaFunction(notifierLambda, {
|
|
54
|
+
event: aws_cdk_lib_1.aws_events.RuleTargetInput.fromObject({
|
|
54
55
|
// Add parameters
|
|
55
56
|
message,
|
|
56
57
|
webhookUrls: props.webhookUrls,
|
|
57
58
|
// Copy over "detail" field
|
|
58
|
-
detail:
|
|
59
|
+
detail: aws_cdk_lib_1.aws_events.EventField.fromPath('$.detail'),
|
|
59
60
|
}),
|
|
60
61
|
}),
|
|
61
62
|
eventPattern: {
|
|
@@ -68,4 +69,4 @@ class ChimeNotifier extends monocdk_1.Construct {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
exports.ChimeNotifier = ChimeNotifier;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbWUtbm90aWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjaGltZS1ub3RpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FPcUI7QUFDckIsMkNBQXVDO0FBaUN2Qzs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7O1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUcsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSw4SEFBOEgsQ0FBQztRQUVoSyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQywrRkFBK0Y7WUFDL0YsOEJBQThCO1lBQzlCLE1BQU0sY0FBYyxHQUFHLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUNuRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsSUFBSSxFQUFFLHNDQUFzQztnQkFDNUMsSUFBSSxFQUFFLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDN0IsQ0FBQyxDQUFDO1lBRUgsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO2dCQUNyRCxPQUFPLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxtQ0FBbUMsQ0FBQztnQkFDbkYsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFFSixLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDOUQsTUFBTSxFQUFFLElBQUksZ0NBQWMsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFO29CQUN4RCxLQUFLLEVBQUUsd0JBQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxpQkFBaUI7d0JBQ2pCLE9BQU87d0JBQ1AsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO3dCQUM5QiwyQkFBMkI7d0JBQzNCLE1BQU0sRUFBRSx3QkFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO3FCQUMvQyxDQUFDO2lCQUNILENBQUM7Z0JBQ0YsWUFBWSxFQUFFO29CQUNaLE1BQU0sRUFBRTt3QkFDTixLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUM7cUJBQ2xCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0Y7QUF4Q0Qsc0NBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGltZU5vdGlmaWVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDaGltZSB3ZWJob29rIFVSTHMgdG8gc2VuZCB0b1xuICAgKi9cbiAgcmVhZG9ubHkgd2ViaG9va1VybHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBzZW5kIHRvIHRoZSBjaGFubmVscy5cbiAgICpcbiAgICogQ2FuIHVzZSB0aGUgZm9sbG93aW5nIHBsYWNlaG9sZGVyczpcbiAgICpcbiAgICogLSAkUElQRUxJTkU6IHRoZSBuYW1lIG9mIHRoZSBwaXBlbGluZVxuICAgKiAtICRSRVZJU0lPTjogZGVzY3JpcHRpb24gb2YgdGhlIGZhaWxpbmcgcmV2aXNpb25cbiAgICogLSAkQUNUSU9OOiBuYW1lIG9mIGZhaWxpbmcgYWN0aW9uXG4gICAqIC0gJFVSTDogbGluayB0byBmYWlsaW5nIGFjdGlvbiBkZXRhaWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBkZWZhdWx0IG1lc3NhZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBDaGltZU5vdGlmaWVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hpbWVOb3RpZmllclByb3BzIGV4dGVuZHMgQ2hpbWVOb3RpZmllck9wdGlvbnMge1xuICAvKipcbiAgICogQ29kZSBQaXBlbGluZSB0byBsaXN0ZW4gdG9cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBjcGlwZWxpbmUuSVBpcGVsaW5lO1xufVxuXG4vKipcbiAqIFNlbmQgYSBtZXNzYWdlIHRvIGEgQ2hpbWUgcm9vbSB3aGVuIGEgcGlwZWxpbmUgZmFpbHNcbiAqL1xuZXhwb3J0IGNsYXNzIENoaW1lTm90aWZpZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2hpbWVOb3RpZmllclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBwcm9wcy5tZXNzYWdlID8/ICcvbWQgQEFsbCBQaXBlbGluZSAqKiRQSVBFTElORSoqIGZhaWxlZCBpbiBhY3Rpb24gKiokQUNUSU9OKiouIExhdGVzdCBjaGFuZ2U6XFxuYGBgXFxuJFJFVklTSU9OXFxuYGBgXFxuKFtGYWlsdXJlIGRldGFpbHNdKCRVUkwpKSc7XG5cbiAgICBpZiAocHJvcHMud2ViaG9va1VybHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gUmV1c2UgdGhlIHNhbWUgTGFtYmRhIGNvZGUgZm9yIGFsbCBwaXBlbGluZXMsIHdlIHdpbGwgbW92ZSB0aGUgTGFtYmRhIHBhcmFtZXRlcml6YXRpb25zIGludG9cbiAgICAgIC8vIHRoZSBDbG91ZFdhdGNoIEV2ZW50IElucHV0LlxuICAgICAgY29uc3Qgbm90aWZpZXJMYW1iZGEgPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICAgIHV1aWQ6ICcwZjRhM2VlMC02OTJlLTQyNDktOTMyZi1hNDZhODMzODg2ZDgnLFxuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2hhbmRsZXInKSksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgfSk7XG5cbiAgICAgIG5vdGlmaWVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnY29kZXBpcGVsaW5lOkdldFBpcGVsaW5lRXhlY3V0aW9uJywgJ2NvZGVwaXBlbGluZTpMaXN0QWN0aW9uRXhlY3V0aW9ucyddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5waXBlbGluZS5waXBlbGluZUFybl0sXG4gICAgICB9KSk7XG5cbiAgICAgIHByb3BzLnBpcGVsaW5lLm9uU3RhdGVDaGFuZ2UoYCR7dGhpcy5ub2RlLnBhdGh9LUNoaW1lTm90aWZpZXJgLCB7XG4gICAgICAgIHRhcmdldDogbmV3IGV2ZW50c190YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKG5vdGlmaWVyTGFtYmRhLCB7XG4gICAgICAgICAgZXZlbnQ6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgICAvLyBBZGQgcGFyYW1ldGVyc1xuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIHdlYmhvb2tVcmxzOiBwcm9wcy53ZWJob29rVXJscyxcbiAgICAgICAgICAgIC8vIENvcHkgb3ZlciBcImRldGFpbFwiIGZpZWxkXG4gICAgICAgICAgICBkZXRhaWw6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLmRldGFpbCcpLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcbiAgICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBzdGF0ZTogWydGQUlMRUQnXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
Duration,
|
|
4
4
|
aws_codepipeline as cpipeline,
|
|
5
5
|
aws_iam as iam,
|
|
6
6
|
aws_lambda as lambda,
|
|
7
7
|
aws_events as events,
|
|
8
8
|
aws_events_targets as events_targets,
|
|
9
|
-
} from '
|
|
9
|
+
} from 'aws-cdk-lib';
|
|
10
|
+
import { Construct } from 'constructs';
|
|
10
11
|
|
|
11
12
|
export interface ChimeNotifierOptions {
|
|
12
13
|
/**
|
|
@@ -25,7 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.CertificateSigningRequest = void 0;
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
|
-
const
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const constructs_1 = require("constructs");
|
|
29
30
|
const util_1 = require("../util");
|
|
30
31
|
/**
|
|
31
32
|
* Creates a Certificate Signing Request (CSR), which will allow a Certificate Authority to provide a signed certificate
|
|
@@ -35,34 +36,35 @@ const util_1 = require("../util");
|
|
|
35
36
|
*
|
|
36
37
|
* @see https://www.openssl.org/docs/manmaster/man1/req.html
|
|
37
38
|
*/
|
|
38
|
-
class CertificateSigningRequest extends
|
|
39
|
+
class CertificateSigningRequest extends constructs_1.Construct {
|
|
39
40
|
constructor(parent, id, props) {
|
|
40
41
|
super(parent, id);
|
|
41
42
|
const codeLocation = path.resolve(__dirname, '..', 'custom-resource-handlers', 'bin', 'certificate-signing-request');
|
|
42
|
-
const customResource = new
|
|
43
|
+
const customResource = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'ResourceHandler', {
|
|
43
44
|
uuid: '541F6782-6DCF-49A7-8C5A-67715ADD9E4C',
|
|
44
45
|
lambdaPurpose: 'CreateCSR',
|
|
45
46
|
description: 'Creates a Certificate Signing Request document for an x509 certificate',
|
|
46
|
-
runtime:
|
|
47
|
+
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
|
|
47
48
|
handler: 'index.handler',
|
|
48
|
-
code: new
|
|
49
|
-
timeout:
|
|
49
|
+
code: new aws_cdk_lib_1.aws_lambda.AssetCode(codeLocation),
|
|
50
|
+
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
50
51
|
// add the layer that contains the OpenSSL CLI binary
|
|
51
|
-
layers: [new
|
|
52
|
-
code:
|
|
52
|
+
layers: [new aws_cdk_lib_1.aws_lambda.LayerVersion(this, 'OpenSslCliLayer', {
|
|
53
|
+
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '..', 'custom-resource-handlers', 'layers', 'openssl-cli-layer.zip')),
|
|
53
54
|
})],
|
|
54
55
|
});
|
|
55
|
-
const outputBucket = new
|
|
56
|
+
const outputBucket = new aws_cdk_lib_1.aws_s3.Bucket(this, 'Bucket', {
|
|
56
57
|
// CSRs can be easily re-created if lost or corrupt, so we can let those get to a black hole, no worries.
|
|
57
58
|
autoDeleteObjects: true,
|
|
58
|
-
removalPolicy:
|
|
59
|
-
encryption:
|
|
59
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
60
|
+
encryption: aws_cdk_lib_1.aws_s3.BucketEncryption.S3_MANAGED,
|
|
60
61
|
enforceSSL: true,
|
|
61
62
|
});
|
|
62
63
|
outputBucket.grantReadWrite(customResource);
|
|
63
|
-
const csr = new
|
|
64
|
-
|
|
64
|
+
const csr = new aws_cdk_lib_1.CustomResource(this, 'Resource', {
|
|
65
|
+
serviceToken: customResource.functionArn,
|
|
65
66
|
resourceType: 'Custom::CertificateSigningRequest',
|
|
67
|
+
pascalCaseProperties: true,
|
|
66
68
|
properties: {
|
|
67
69
|
resourceVersion: (0, util_1.hashFileOrDirectory)(codeLocation),
|
|
68
70
|
// Private key
|
|
@@ -92,4 +94,4 @@ class CertificateSigningRequest extends monocdk_1.Construct {
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
exports.CertificateSigningRequest = CertificateSigningRequest;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLDZDQU1xQjtBQUNyQiwyQ0FBdUM7QUFDdkMsa0NBQThDO0FBMkI5Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxzQkFBUztJQVd0RCxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFDO1FBQzlFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3JILE1BQU0sY0FBYyxHQUFHLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0UsSUFBSSxFQUFFLHNDQUFzQztZQUM1QyxhQUFhLEVBQUUsV0FBVztZQUMxQixXQUFXLEVBQUUsd0VBQXdFO1lBQ3JGLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxJQUFJLHdCQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUN4QyxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzlCLHFEQUFxRDtZQUNyRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLHdCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtvQkFDeEQsSUFBSSxFQUFFLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixDQUFDLENBQUM7aUJBQ3ZILENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksb0JBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNqRCx5R0FBeUc7WUFDekcsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLFVBQVUsRUFBRSxvQkFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7WUFDMUMsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMvQyxZQUFZLEVBQUUsY0FBYyxDQUFDLFdBQVc7WUFDeEMsWUFBWSxFQUFFLG1DQUFtQztZQUNqRCxvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFVBQVUsRUFBRTtnQkFDVixlQUFlLEVBQUUsSUFBQSwwQkFBbUIsRUFBQyxZQUFZLENBQUM7Z0JBQ2xELGNBQWM7Z0JBQ2Qsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTO2dCQUM5QyxxQkFBcUI7Z0JBQ3JCLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVU7Z0JBQ2pDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU87Z0JBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZTtnQkFDM0MsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUTtnQkFDN0Isa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQzdDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsc0JBQXNCO2dCQUN6RCxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZO2dCQUNyQyxZQUFZO2dCQUNaLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO2dCQUM5QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLGlCQUFpQjtnQkFDakIsWUFBWSxFQUFFLFlBQVksQ0FBQyxVQUFVO2FBQ3RDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLDJEQUEyRDtZQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0Q7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqRixDQUFDO0NBQ0Y7QUF0RUQsOERBc0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19zMyBhcyBzMyxcbiAgUmVtb3ZhbFBvbGljeSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBoYXNoRmlsZU9yRGlyZWN0b3J5IH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBSc2FQcml2YXRlS2V5U2VjcmV0IH0gZnJvbSAnLi9wcml2YXRlLWtleSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIFJTQSBQcml2YXRlIEtleSB0byB1c2UgZm9yIHRoaXMgQ1NSLlxuICAgKi9cbiAgcHJpdmF0ZUtleTogUnNhUHJpdmF0ZUtleVNlY3JldDtcbiAgLyoqXG4gICAqIFRoZSBEaXN0aW5ndWlzaGVkIE5hbWUgZm9yIHRoaXMgQ1NSLlxuICAgKi9cbiAgZG46IERpc3Rpbmd1aXNoZWROYW1lO1xuICAvKipcbiAgICogVGhlIGtleSB1c2FnZSByZXF1ZXN0cyBmb3IgdGhpcyBDU1IuXG4gICAqXG4gICAqIEBleGFtcGxlIGNyaXRpY2FsLGRpZ2l0YWxTaWduYXR1cmVcbiAgICovXG4gIGtleVVzYWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZW5kZWQga2V5IHVzYWdlIHJlcXVlc3RzIGZvciB0aGlzIENTUi5cbiAgICpcbiAgICogQGV4YW1wbGUgY3JpdGljYWwsY29kZVNpZ25pbmdcbiAgICovXG4gIGV4dGVuZGVkS2V5VXNhZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENlcnRpZmljYXRlIFNpZ25pbmcgUmVxdWVzdCAoQ1NSKSwgd2hpY2ggd2lsbCBhbGxvdyBhIENlcnRpZmljYXRlIEF1dGhvcml0eSB0byBwcm92aWRlIGEgc2lnbmVkIGNlcnRpZmljYXRlXG4gKiB0aGF0IHVzZXMgdGhlIHNwZWNpZmllZCBSU0EgUHJpdmF0ZSBLZXkuIEEgQ1NSIGRvY3VtZW50IGNhbiB1c3VhbGx5IGJlIHNoYXJlZCBwdWJsaWNseSwgaG93ZXZlciBpdCBtdXN0IGJlIG5vdGVkIHRoYXRcbiAqIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiB0aGUgYGBkbmBgIGZpZWxkcywgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHB1YmxpYyBrZXkgYW5kIHRoZSBpbnRlbmRlZCBsZXkgdXNhZ2Ugd2lsbCBiZVxuICogcmVhZGFibGUgYnkgYW55b25lIHdobyBjYW4gYWNjZXNzIHRoZSBDU1IuXG4gKlxuICogQHNlZSBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL21hbm1hc3Rlci9tYW4xL3JlcS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBTMyBVUkwgdG8gdGhlIENTUiBkb2N1bWVudC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZW1SZXF1ZXN0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBVUkwgdG8gYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhpcyBDU1IuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZlNpZ25lZFBlbUNlcnRpZmljYXRlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGNvZGVMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnYmluJywgJ2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdCcpO1xuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogJzU0MUY2NzgyLTZEQ0YtNDlBNy04QzVBLTY3NzE1QUREOUU0QycsXG4gICAgICBsYW1iZGFQdXJwb3NlOiAnQ3JlYXRlQ1NSJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlcyBhIENlcnRpZmljYXRlIFNpZ25pbmcgUmVxdWVzdCBkb2N1bWVudCBmb3IgYW4geDUwOSBjZXJ0aWZpY2F0ZScsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuQXNzZXRDb2RlKGNvZGVMb2NhdGlvbiksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAvLyBhZGQgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhlIE9wZW5TU0wgQ0xJIGJpbmFyeVxuICAgICAgbGF5ZXJzOiBbbmV3IGxhbWJkYS5MYXllclZlcnNpb24odGhpcywgJ09wZW5Tc2xDbGlMYXllcicsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnbGF5ZXJzJywgJ29wZW5zc2wtY2xpLWxheWVyLnppcCcpKSxcbiAgICAgIH0pXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0J1Y2tldCcsIHtcbiAgICAgIC8vIENTUnMgY2FuIGJlIGVhc2lseSByZS1jcmVhdGVkIGlmIGxvc3Qgb3IgY29ycnVwdCwgc28gd2UgY2FuIGxldCB0aG9zZSBnZXQgdG8gYSBibGFjayBob2xlLCBubyB3b3JyaWVzLlxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuICAgIG91dHB1dEJ1Y2tldC5ncmFudFJlYWRXcml0ZShjdXN0b21SZXNvdXJjZSk7XG5cbiAgICBjb25zdCBjc3IgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBjdXN0b21SZXNvdXJjZS5mdW5jdGlvbkFybixcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6Q2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCcsXG4gICAgICBwYXNjYWxDYXNlUHJvcGVydGllczogdHJ1ZSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcmVzb3VyY2VWZXJzaW9uOiBoYXNoRmlsZU9yRGlyZWN0b3J5KGNvZGVMb2NhdGlvbiksXG4gICAgICAgIC8vIFByaXZhdGUga2V5XG4gICAgICAgIHByaXZhdGVLZXlTZWNyZXRJZDogcHJvcHMucHJpdmF0ZUtleS5zZWNyZXRBcm4sXG4gICAgICAgIC8vIERpc3Rpbmd1aXNoZWQgbmFtZVxuICAgICAgICBkbkNvbW1vbk5hbWU6IHByb3BzLmRuLmNvbW1vbk5hbWUsXG4gICAgICAgIGRuQ291bnRyeTogcHJvcHMuZG4uY291bnRyeSxcbiAgICAgICAgZG5TdGF0ZU9yUHJvdmluY2U6IHByb3BzLmRuLnN0YXRlT3JQcm92aW5jZSxcbiAgICAgICAgZG5Mb2NhbGl0eTogcHJvcHMuZG4ubG9jYWxpdHksXG4gICAgICAgIGRuT3JnYW5pemF0aW9uTmFtZTogcHJvcHMuZG4ub3JnYW5pemF0aW9uTmFtZSxcbiAgICAgICAgZG5Pcmdhbml6YXRpb25hbFVuaXROYW1lOiBwcm9wcy5kbi5vcmdhbml6YXRpb25hbFVuaXROYW1lLFxuICAgICAgICBkbkVtYWlsQWRkcmVzczogcHJvcHMuZG4uZW1haWxBZGRyZXNzLFxuICAgICAgICAvLyBLZXkgVXNhZ2VcbiAgICAgICAgZXh0ZW5kZWRLZXlVc2FnZTogcHJvcHMuZXh0ZW5kZWRLZXlVc2FnZSB8fCAnJyxcbiAgICAgICAga2V5VXNhZ2U6IHByb3BzLmtleVVzYWdlLFxuICAgICAgICAvLyBPdXB1dCBsb2NhdGlvblxuICAgICAgICBvdXRwdXRCdWNrZXQ6IG91dHB1dEJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAoY3VzdG9tUmVzb3VyY2Uucm9sZSkge1xuICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwZXJtaXNzaW9ucyBhcmUgYWxsIGdvb2QgYmVmb3JlIHByb2NlZWRpbmdcbiAgICAgIGNzci5ub2RlLmFkZERlcGVuZGVuY3koY3VzdG9tUmVzb3VyY2Uucm9sZSk7XG4gICAgICBwcm9wcy5wcml2YXRlS2V5LmdyYW50R2V0U2VjcmV0VmFsdWUoY3VzdG9tUmVzb3VyY2Uucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wZW1SZXF1ZXN0ID0gY3NyLmdldEF0dCgnQ1NSJykudG9TdHJpbmcoKTtcbiAgICB0aGlzLnNlbGZTaWduZWRQZW1DZXJ0aWZpY2F0ZSA9IGNzci5nZXRBdHQoJ1NlbGZTaWduZWRDZXJ0aWZpY2F0ZScpLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGaWVsZHMgdGhhdCBjb21wb3NlIHRoZSBkaXN0aW5ndWlzaGVkIG5hbWUgb2YgYSBjZXJ0aWZpY2F0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3Rpbmd1aXNoZWROYW1lIHtcbiAgLyoqIFRoZSBDb21tb24gTmFtZSAoQ04pICovXG4gIGNvbW1vbk5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBlbWFpbCBhZGRyZXNzIChlbWFpbEFkZHJlc3MpICovXG4gIGVtYWlsQWRkcmVzczogc3RyaW5nO1xuXG4gIC8qKiBUaGUgQ291bnRyeSAoQykgKi9cbiAgY291bnRyeTogc3RyaW5nO1xuICAvKiogVGhlIFN0YXRlIG9yIFByb3ZpbmNlIChTVCkgKi9cbiAgc3RhdGVPclByb3ZpbmNlOiBzdHJpbmc7XG4gIC8qKiBUaGUgbG9jYWxpdHkgKEwpICovXG4gIGxvY2FsaXR5OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBvcmdhbml6YXRpb24gbmFtZSAoTykgKi9cbiAgb3JnYW5pemF0aW9uTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIG9yZ2FuaXphdGlvbmFsIHVuaXQgbmFtZSAoT1UpICovXG4gIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IHN0cmluZztcbn1cbiJdfQ==
|