@rio-cloud/cdk-v2-constructs 9.0.0-alpha.0 → 9.0.0-alpha.1
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/.jsii +2825 -7033
- package/lib/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/autoscaling-runner.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/runner-roles.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/spot-role.js +1 -5
- package/lib/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.js +1 -7
- package/lib/contributions/team-claid/aws-glue/csv-table.js +1 -5
- package/lib/contributions/team-claid/aws-glue/schema.js +1 -5
- package/lib/contributions/team-claid/aws-glue/view-table.js +1 -5
- package/lib/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.js +1 -5
- package/lib/contributions/team-outbound-order-book/aws-ecs-abruptly-stopped-monitor/aws-ecs-abruptly-stopped-monitor.js +1 -5
- package/lib/contributions/team-outbound-order-book/index.d.ts +1 -0
- package/lib/contributions/team-outbound-order-book/index.js +18 -0
- package/lib/contributions/team-shipper-inbound-blue/index.d.ts +1 -0
- package/lib/contributions/team-shipper-inbound-blue/index.js +18 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/code-build-project.js +1 -5
- package/lib/contributions/team-shipper-inbound-blue/pipeline/pipeline-build-stage-actions.js +1 -5
- package/lib/contributions/team-transport/datadog/datadog-dashboard-construct.js +41 -0
- package/lib/contributions/team-transport/datadog/datadog-dashboard-downloader.js +120 -0
- package/lib/contributions/{team-transport-two → team-transport}/datadog/index.js +1 -1
- package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.cjs +2 -2
- package/lib/contributions/team-transport/datadog-synthetics/datadog-synthetics-test.js +77 -0
- package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/index.js +1 -1
- package/lib/contributions/team-transport/index.d.ts +3 -0
- package/lib/contributions/team-transport/index.js +20 -0
- package/lib/contributions/team-transport/pipeline/application-stage.js +16 -0
- package/lib/contributions/team-transport/pipeline/build-project.js +39 -0
- package/lib/contributions/team-transport/pipeline/buildspecs.js +227 -0
- package/lib/contributions/team-transport/pipeline/datadog-monitors.js +45 -0
- package/lib/contributions/{team-transport-two → team-transport}/pipeline/index.js +1 -1
- package/lib/contributions/team-transport/pipeline/monitoring-deploy-step.js +28 -0
- package/lib/contributions/team-transport/pipeline/pipeline-stack.js +430 -0
- package/lib/index.d.ts +0 -8
- package/lib/index.js +1 -9
- package/package.json +15 -5
- package/version.json +1 -1
- package/lib/contributions/team-transport-two/datadog/datadog-dashboard-construct.js +0 -45
- package/lib/contributions/team-transport-two/datadog/datadog-dashboard-downloader.js +0 -120
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.js +0 -81
- package/lib/contributions/team-transport-two/pipeline/application-stage.js +0 -16
- package/lib/contributions/team-transport-two/pipeline/build-project.js +0 -39
- package/lib/contributions/team-transport-two/pipeline/buildspecs.js +0 -227
- package/lib/contributions/team-transport-two/pipeline/datadog-monitors.js +0 -45
- package/lib/contributions/team-transport-two/pipeline/monitoring-deploy-step.js +0 -28
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.js +0 -434
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/datadog-dashboard-construct.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/datadog-dashboard-downloader.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/datadog-synthetics-test.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/application-stage.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/build-project.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/buildspecs.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/datadog-monitors.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/monitoring-deploy-step.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/pipeline-stack.d.ts +0 -0
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.exportCommitHashAsVersion = exports.logCommitHash = exports.createVulnerabilityBuildSpec = exports.createMainBuildSpec = void 0;
|
|
4
|
-
const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
|
|
5
|
-
const DEFAULT_NODE_VERSION = '24';
|
|
6
|
-
const EXACT_VERSION = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/;
|
|
7
|
-
const createMainBuildSpec = (features, options) => {
|
|
8
|
-
const runtime = getRuntimeOptions(options);
|
|
9
|
-
const env = {};
|
|
10
|
-
const buildCommands = [];
|
|
11
|
-
buildCommands.push(...(0, exports.exportCommitHashAsVersion)());
|
|
12
|
-
env['parameter-store'] = {
|
|
13
|
-
ACCOUNT_NAME: '/config/account/name',
|
|
14
|
-
TEAM_IDENTIFIER: '/config/team/identifier',
|
|
15
|
-
};
|
|
16
|
-
if (features.gradleBuild) {
|
|
17
|
-
buildCommands.push(...gradleBuildCommands(features.kafkaIntegration ?? false));
|
|
18
|
-
env['parameter-store'] = {
|
|
19
|
-
...(env['parameter-store'] ?? {}),
|
|
20
|
-
SERVICE_KEYSTORE_PASSWORD: '/config/${SERVICE_NAME}/service-keystore-password',
|
|
21
|
-
LICENSE_BUCKET_NAME: '/config/oss-licenses/bucket-name',
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
if (features.kafkaIntegration) {
|
|
25
|
-
env['parameter-store'] = {
|
|
26
|
-
...(env['parameter-store'] ?? {}),
|
|
27
|
-
CREATE_AND_SIGN_CERTIFICATE_SCRIPT_S3_LOCATION: '/config/kafka-integration/create-and-sign-certificate-script-s3-location',
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
if (features.npmBuild) {
|
|
31
|
-
env.variables = {
|
|
32
|
-
CI: 'true',
|
|
33
|
-
};
|
|
34
|
-
buildCommands.push(...npmBuildCommands());
|
|
35
|
-
}
|
|
36
|
-
if (features.additionalBuildCommands) {
|
|
37
|
-
buildCommands.push('### ADDITIONAL BUILD COMMANDS ###', ...features.additionalBuildCommands);
|
|
38
|
-
}
|
|
39
|
-
buildCommands.push(...infrastructureBuildCommands());
|
|
40
|
-
return aws_codebuild_1.BuildSpec.fromObject({
|
|
41
|
-
version: '0.2',
|
|
42
|
-
env,
|
|
43
|
-
phases: {
|
|
44
|
-
install: {
|
|
45
|
-
'runtime-versions': getRuntimes(features, runtime.nodejsVersion),
|
|
46
|
-
...(runtime.commands.length > 0 ? { commands: runtime.commands } : {}),
|
|
47
|
-
},
|
|
48
|
-
pre_build: {
|
|
49
|
-
commands: (0, exports.logCommitHash)(),
|
|
50
|
-
},
|
|
51
|
-
build: {
|
|
52
|
-
commands: buildCommands,
|
|
53
|
-
},
|
|
54
|
-
post_build: {
|
|
55
|
-
commands: (0, exports.logCommitHash)(),
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
reports: createReports(features),
|
|
59
|
-
cache: {
|
|
60
|
-
paths: cachePaths(),
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
exports.createMainBuildSpec = createMainBuildSpec;
|
|
65
|
-
const createVulnerabilityBuildSpec = (features, options) => {
|
|
66
|
-
const runtime = getRuntimeOptions(options);
|
|
67
|
-
const env = {};
|
|
68
|
-
const buildCommands = [];
|
|
69
|
-
if (features.gradleBuild) {
|
|
70
|
-
env.variables = {
|
|
71
|
-
LANG: 'C.UTF-8',
|
|
72
|
-
};
|
|
73
|
-
env['parameter-store'] = {
|
|
74
|
-
NIST_DATA_MIRROR_URL: '/config/nist-data-mirror/url',
|
|
75
|
-
};
|
|
76
|
-
env['secrets-manager'] = {
|
|
77
|
-
SONATYPE_OSS_INDEX_USERNAME: 'arn:aws:secretsmanager:eu-west-1:577146897785:secret:/rio/config/sonatype-oss-index/credentials:username',
|
|
78
|
-
SONATYPE_OSS_INDEX_PASSWORD: 'arn:aws:secretsmanager:eu-west-1:577146897785:secret:/rio/config/sonatype-oss-index/credentials:password',
|
|
79
|
-
};
|
|
80
|
-
buildCommands.push(...['### GRADLE VULNERABILITY CHECK ###', './gradlew -Dorg.gradle.jvmargs=-Xmx4g dependencyCheckAnalyze']);
|
|
81
|
-
}
|
|
82
|
-
if (features.npmBuild) {
|
|
83
|
-
buildCommands.push(...[
|
|
84
|
-
'### NPM VULNERABILITY CHECK ###',
|
|
85
|
-
'npm audit --registry https://registry.npmjs.org --audit-level moderate --omit=dev',
|
|
86
|
-
]);
|
|
87
|
-
}
|
|
88
|
-
buildCommands.push(...[
|
|
89
|
-
'### INFRASTRUCTURE VULNERABILITY CHECK ###',
|
|
90
|
-
'cd infrastructure',
|
|
91
|
-
'npm audit --registry https://registry.npmjs.org --audit-level moderate --omit=dev',
|
|
92
|
-
'cd ..',
|
|
93
|
-
]);
|
|
94
|
-
return aws_codebuild_1.BuildSpec.fromObject({
|
|
95
|
-
version: '0.2',
|
|
96
|
-
env,
|
|
97
|
-
phases: {
|
|
98
|
-
install: {
|
|
99
|
-
'runtime-versions': getRuntimes(features, runtime.nodejsVersion),
|
|
100
|
-
...(runtime.commands.length > 0 ? { commands: runtime.commands } : {}),
|
|
101
|
-
},
|
|
102
|
-
pre_build: {
|
|
103
|
-
commands: (0, exports.logCommitHash)(),
|
|
104
|
-
},
|
|
105
|
-
build: {
|
|
106
|
-
commands: buildCommands,
|
|
107
|
-
},
|
|
108
|
-
post_build: {
|
|
109
|
-
commands: (0, exports.logCommitHash)(),
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
cache: {
|
|
113
|
-
paths: cachePathsVulnerability(),
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
exports.createVulnerabilityBuildSpec = createVulnerabilityBuildSpec;
|
|
118
|
-
const getRuntimes = (features, nodejsVersion) => {
|
|
119
|
-
const runtimes = {};
|
|
120
|
-
if (features.gradleBuild) {
|
|
121
|
-
runtimes.java = 'corretto21';
|
|
122
|
-
}
|
|
123
|
-
runtimes.nodejs = nodejsVersion;
|
|
124
|
-
return runtimes;
|
|
125
|
-
};
|
|
126
|
-
const getRuntimeOptions = (options) => {
|
|
127
|
-
const commands = [];
|
|
128
|
-
if (options?.nodejsVersion !== undefined) {
|
|
129
|
-
assertExactVersion('nodejsVersion', options.nodejsVersion);
|
|
130
|
-
commands.push(`test "$(node --version)" = "v${options.nodejsVersion}"`);
|
|
131
|
-
}
|
|
132
|
-
if (options?.npmVersion !== undefined) {
|
|
133
|
-
assertExactVersion('npmVersion', options.npmVersion);
|
|
134
|
-
commands.push(`test "$(npm --version)" = "${options.npmVersion}"`);
|
|
135
|
-
}
|
|
136
|
-
return { nodejsVersion: options?.nodejsVersion ?? DEFAULT_NODE_VERSION, commands };
|
|
137
|
-
};
|
|
138
|
-
const assertExactVersion = (name, version) => {
|
|
139
|
-
if (version.match(EXACT_VERSION)?.[0] !== version) {
|
|
140
|
-
throw new Error(`${name} must be an exact major.minor.patch version`);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
const logCommitHash = () => [
|
|
144
|
-
'(echo "Build triggered by commit " && git log --pretty=format:"%h%x09%an%x09%s" -n 1 ) | tr -d "\\n"',
|
|
145
|
-
];
|
|
146
|
-
exports.logCommitHash = logCommitHash;
|
|
147
|
-
const exportCommitHashAsVersion = () => ['export GIT_VERSION=$(git rev-parse HEAD)'];
|
|
148
|
-
exports.exportCommitHashAsVersion = exportCommitHashAsVersion;
|
|
149
|
-
const infrastructureBuildCommands = () => [
|
|
150
|
-
'### INFRASTRUCTURE BUILD ###',
|
|
151
|
-
'cd infrastructure',
|
|
152
|
-
'npm ci',
|
|
153
|
-
`npx rio-license-checker --type npm-backend --account-name \${ACCOUNT_NAME} --service-name \${SERVICE_NAME} --upload`,
|
|
154
|
-
'npm run cdk synth 1> /dev/null',
|
|
155
|
-
// In pipeline: Error parsing reference: is not a valid repository/tag: invalid reference format.
|
|
156
|
-
// workaround due to https://github.com/aws/aws-cdk/issues/18044',
|
|
157
|
-
'find ./ -type f -name "*DeployApplicationStacks*.assets.json" -print0 | xargs --no-run-if-empty -0 sed --in-place \'s|docker load -i asset.|docker load -i ../asset.|g\'',
|
|
158
|
-
'cd ..',
|
|
159
|
-
];
|
|
160
|
-
const gradleBuildCommands = (kafkaIntegration) => {
|
|
161
|
-
const commands = [];
|
|
162
|
-
commands.push(...[
|
|
163
|
-
'### GRADLE BUILD ###',
|
|
164
|
-
'./gradlew clean build',
|
|
165
|
-
'# license check',
|
|
166
|
-
'npm ci',
|
|
167
|
-
`npx rio-license-checker --type gradle --account-name \${ACCOUNT_NAME} --service-name \${SERVICE_NAME} --upload`,
|
|
168
|
-
'# self signed certificate',
|
|
169
|
-
'set -u; keytool -genkey -alias InternalServiceCertificate -keyalg RSA -keystore containerfiles/service-keystore.p12 -validity 3650 -storetype PKCS12 -dname "CN=internal.service.${SERVICE_NAME}.${HOSTED_ZONE}, OU=Logistics, O=Rio, L=Munich, ST=BY, C=DE" -keypass ${SERVICE_KEYSTORE_PASSWORD} -storepass ${SERVICE_KEYSTORE_PASSWORD}',
|
|
170
|
-
]);
|
|
171
|
-
if (kafkaIntegration) {
|
|
172
|
-
commands.push(...[
|
|
173
|
-
'# kafka certificate',
|
|
174
|
-
'set -u; aws s3 cp --quiet s3://${CREATE_AND_SIGN_CERTIFICATE_SCRIPT_S3_LOCATION} create-and-sign-certificate',
|
|
175
|
-
'chmod +x create-and-sign-certificate',
|
|
176
|
-
'set -u; ./create-and-sign-certificate --keystore-password ${SERVICE_KEYSTORE_PASSWORD} --fqdn ${SERVICE_NAME}.${HOSTED_ZONE}',
|
|
177
|
-
'cp /cert/certificate.p12 containerfiles/kafka-keystore.p12',
|
|
178
|
-
]);
|
|
179
|
-
}
|
|
180
|
-
commands.push(...['# docker image build', './gradlew jibBuildTar --quiet']);
|
|
181
|
-
return commands;
|
|
182
|
-
};
|
|
183
|
-
const npmBuildCommands = () => [
|
|
184
|
-
'### NPM BUILD ###',
|
|
185
|
-
'export VITE_GIT_VERSION=$GIT_VERSION',
|
|
186
|
-
'export VITE_AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID',
|
|
187
|
-
'export VITE_AWS_ACCOUNT_NAME=$ACCOUNT_NAME',
|
|
188
|
-
'export VITE_SERVICE_NAME=$SERVICE_NAME',
|
|
189
|
-
'export VITE_TEAM_IDENTIFIER=$TEAM_IDENTIFIER',
|
|
190
|
-
'npm ci',
|
|
191
|
-
'npm run lint',
|
|
192
|
-
'npm run test:ci',
|
|
193
|
-
`npx rio-license-checker --type npm-frontend --account-name \${ACCOUNT_NAME} --service-name \${SERVICE_NAME} --upload`,
|
|
194
|
-
'npm run build',
|
|
195
|
-
];
|
|
196
|
-
const cachePaths = () => [
|
|
197
|
-
'/cert/**/*',
|
|
198
|
-
'/root/.cache/**/*',
|
|
199
|
-
'/root/.npm/**/*',
|
|
200
|
-
'/root/.gradle/caches/**/*',
|
|
201
|
-
'/root/.gradle/wrapper/**/*',
|
|
202
|
-
'/root/google-cloud-tools-java/jib/**/*',
|
|
203
|
-
'target/jib-cache/**/*',
|
|
204
|
-
];
|
|
205
|
-
const cachePathsVulnerability = () => [
|
|
206
|
-
'/root/.cache/**/*',
|
|
207
|
-
'/root/.gradle/caches/**/*',
|
|
208
|
-
'/root/.gradle/wrapper/**/*',
|
|
209
|
-
'/root/.gradle/dependency-check-data/**/*',
|
|
210
|
-
];
|
|
211
|
-
const createReports = (features) => {
|
|
212
|
-
const reports = {};
|
|
213
|
-
if (features.gradleBuild) {
|
|
214
|
-
reports.GradleBuildTestResults = {
|
|
215
|
-
files: ['**/*'],
|
|
216
|
-
'base-directory': 'build/test-results',
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
if (features.npmBuild) {
|
|
220
|
-
reports.NpmBuildTestResults = {
|
|
221
|
-
files: ['**/*'],
|
|
222
|
-
'base-directory': 'results',
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
return reports;
|
|
226
|
-
};
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRzcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9idWlsZHNwZWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUFzRDtBQUd0RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQztBQUNsQyxNQUFNLGFBQWEsR0FBRyxrREFBa0QsQ0FBQztBQUVsRSxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBMEIsRUFBRSxPQUEwQixFQUFhLEVBQUU7SUFDdkcsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsTUFBTSxHQUFHLEdBQTJDLEVBQUUsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsaUNBQXlCLEdBQUUsQ0FBQyxDQUFDO0lBRW5ELEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1FBQ3ZCLFlBQVksRUFBRSxzQkFBc0I7UUFDcEMsZUFBZSxFQUFFLHlCQUF5QjtLQUMzQyxDQUFDO0lBRUYsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9FLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakMseUJBQXlCLEVBQUUsbURBQW1EO1lBQzlFLG1CQUFtQixFQUFFLGtDQUFrQztTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdB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QUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsc0JBQXNCLEdBQUc7WUFDL0IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2YsZ0JBQWdCLEVBQUUsb0JBQW9CO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLG1CQUFtQixHQUFHO1lBQzVCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNmLGdCQUFnQixFQUFFLFNBQVM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFNwZWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IENvZGVCdWlsZE9wdGlvbnMsIFBpcGVsaW5lRmVhdHVyZXMgfSBmcm9tICcuL3BpcGVsaW5lLXN0YWNrJztcblxuY29uc3QgREVGQVVMVF9OT0RFX1ZFUlNJT04gPSAnMjQnO1xuY29uc3QgRVhBQ1RfVkVSU0lPTiA9IC9eKD86MHxbMS05XVxcZCopXFwuKD86MHxbMS05XVxcZCopXFwuKD86MHxbMS05XVxcZCopJC87XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYWluQnVpbGRTcGVjID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzLCBvcHRpb25zPzogQ29kZUJ1aWxkT3B0aW9ucyk6IEJ1aWxkU3BlYyA9PiB7XG4gIGNvbnN0IHJ1bnRpbWUgPSBnZXRSdW50aW1lT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9O1xuICBjb25zdCBidWlsZENvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICBidWlsZENvbW1hbmRzLnB1c2goLi4uZXhwb3J0Q29tbWl0SGFzaEFzVmVyc2lvbigpKTtcblxuICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgIEFDQ09VTlRfTkFNRTogJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICBURUFNX0lERU5USUZJRVI6ICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicsXG4gIH07XG5cbiAgaWYgKGZlYXR1cmVzLmdyYWRsZUJ1aWxkKSB7XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLmdyYWRsZUJ1aWxkQ29tbWFuZHMoZmVhdHVyZXMua2Fma2FJbnRlZ3JhdGlvbiA/PyBmYWxzZSkpO1xuICAgIGVudlsncGFyYW1ldGVyLXN0b3JlJ10gPSB7XG4gICAgICAuLi4oZW52WydwYXJhbWV0ZXItc3RvcmUnXSA/PyB7fSksXG4gICAgICBTRVJWSUNFX0tFWVNUT1JFX1BBU1NXT1JEOiAnL2NvbmZpZy8ke1NFUlZJQ0VfTkFNRX0vc2VydmljZS1rZXlzdG9yZS1wYXNzd29yZCcsXG4gICAgICBMSUNFTlNFX0JVQ0tFVF9OQU1FOiAnL2NvbmZpZy9vc3MtbGljZW5zZXMvYnVja2V0LW5hbWUnLFxuICAgIH07XG4gIH1cbiAgaWYgKGZlYXR1cmVzLmthZmthSW50ZWdyYXRpb24pIHtcbiAgICBlbnZbJ3BhcmFtZXRlci1zdG9yZSddID0ge1xuICAgICAgLi4uKGVudlsncGFyYW1ldGVyLXN0b3JlJ10gPz8ge30pLFxuICAgICAgQ1JFQVRFX0FORF9TSUdOX0NFUlRJRklDQVRFX1NDUklQVF9TM19MT0NBVElPTjpcbiAgICAgICAgJy9jb25maWcva2Fma2EtaW50ZWdyYXRpb24vY3JlYXRlLWFuZC1zaWduLWNlcnRpZmljYXRlLXNjcmlwdC1zMy1sb2NhdGlvbicsXG4gICAgfTtcbiAgfVxuICBpZiAoZmVhdHVyZXMubnBtQnVpbGQpIHtcbiAgICBlbnYudmFyaWFibGVzID0ge1xuICAgICAgQ0k6ICd0cnVlJyxcbiAgICB9O1xuICAgIGJ1aWxkQ29tbWFuZHMucHVzaCguLi5ucG1CdWlsZENvbW1hbmRzKCkpO1xuICB9XG4gIGlmIChmZWF0dXJlcy5hZGRpdGlvbmFsQnVpbGRDb21tYW5kcykge1xuICAgIGJ1aWxkQ29tbWFuZHMucHVzaCgnIyMjIEFERElUSU9OQUwgQlVJTEQgQ09NTUFORFMgIyMjJywgLi4uZmVhdHVyZXMuYWRkaXRpb25hbEJ1aWxkQ29tbWFuZHMpO1xuICB9XG5cbiAgYnVpbGRDb21tYW5kcy5wdXNoKC4uLmluZnJhc3RydWN0dXJlQnVpbGRDb21tYW5kcygpKTtcblxuICByZXR1cm4gQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgIHZlcnNpb246ICcwLjInLFxuICAgIGVudixcbiAgICBwaGFzZXM6IHtcbiAgICAgIGluc3RhbGw6IHtcbiAgICAgICAgJ3J1bnRpbWUtdmVyc2lvbnMnOiBnZXRSdW50aW1lcyhmZWF0dXJlcywgcnVudGltZS5ub2RlanNWZXJzaW9uKSxcbiAgICAgICAgLi4uKHJ1bnRpbWUuY29tbWFuZHMubGVuZ3RoID4gMCA/IHsgY29tbWFuZHM6IHJ1bnRpbWUuY29tbWFuZHMgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICBwcmVfYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGxvZ0NvbW1pdEhhc2goKSxcbiAgICAgIH0sXG4gICAgICBidWlsZDoge1xuICAgICAgICBjb21tYW5kczogYnVpbGRDb21tYW5kcyxcbiAgICAgIH0sXG4gICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBsb2dDb21taXRIYXNoKCksXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVwb3J0czogY3JlYXRlUmVwb3J0cyhmZWF0dXJlcyksXG4gICAgY2FjaGU6IHtcbiAgICAgIHBhdGhzOiBjYWNoZVBhdGhzKCksXG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVnVsbmVyYWJpbGl0eUJ1aWxkU3BlYyA9IChmZWF0dXJlczogUGlwZWxpbmVGZWF0dXJlcywgb3B0aW9ucz86IENvZGVCdWlsZE9wdGlvbnMpID0+IHtcbiAgY29uc3QgcnVudGltZSA9IGdldFJ1bnRpbWVPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge307XG4gIGNvbnN0IGJ1aWxkQ29tbWFuZHM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKGZlYXR1cmVzLmdyYWRsZUJ1aWxkKSB7XG4gICAgZW52LnZhcmlhYmxlcyA9IHtcbiAgICAgIExBTkc6ICdDLlVURi04JyxcbiAgICB9O1xuICAgIGVudlsncGFyYW1ldGVyLXN0b3JlJ10gPSB7XG4gICAgICBOSVNUX0RBVEFfTUlSUk9SX1VSTDogJy9jb25maWcvbmlzdC1kYXRhLW1pcnJvci91cmwnLFxuICAgIH07XG4gICAgZW52WydzZWNyZXRzLW1hbmFnZXInXSA9IHtcbiAgICAgIFNPTkFUWVBFX09TU19JTkRFWF9VU0VSTkFNRTpcbiAgICAgICAgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6ZXUtd2VzdC0xOjU3NzE0Njg5Nzc4NTpzZWNyZXQ6L3Jpby9jb25maWcvc29uYXR5cGUtb3NzLWluZGV4L2NyZWRlbnRpYWxzOnVzZXJuYW1lJyxcbiAgICAgIFNPTkFUWVBFX09TU19JTkRFWF9QQVNTV09SRDpcbiAgICAgICAgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6ZXUtd2VzdC0xOjU3NzE0Njg5Nzc4NTpzZWNyZXQ6L3Jpby9jb25maWcvc29uYXR5cGUtb3NzLWluZGV4L2NyZWRlbnRpYWxzOnBhc3N3b3JkJyxcbiAgICB9O1xuICAgIGJ1aWxkQ29tbWFuZHMucHVzaChcbiAgICAgIC4uLlsnIyMjIEdSQURMRSBWVUxORVJBQklMSVRZIENIRUNLICMjIycsICcuL2dyYWRsZXcgLURvcmcuZ3JhZGxlLmp2bWFyZ3M9LVhteDRnIGRlcGVuZGVuY3lDaGVja0FuYWx5emUnXVxuICAgICk7XG4gIH1cbiAgaWYgKGZlYXR1cmVzLm5wbUJ1aWxkKSB7XG4gICAgYnVpbGRDb21tYW5kcy5wdXNoKFxuICAgICAgLi4uW1xuICAgICAgICAnIyMjIE5QTSBWVUxORVJBQklMSVRZIENIRUNLICMjIycsXG4gICAgICAgICducG0gYXVkaXQgLS1yZWdpc3RyeSBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZyAtLWF1ZGl0LWxldmVsIG1vZGVyYXRlIC0tb21pdD1kZXYnLFxuICAgICAgXVxuICAgICk7XG4gIH1cbiAgYnVpbGRDb21tYW5kcy5wdXNoKFxuICAgIC4uLltcbiAgICAgICcjIyMgSU5GUkFTVFJVQ1RVUkUgVlVMTkVSQUJJTElUWSBDSEVDSyAjIyMnLFxuICAgICAgJ2NkIGluZnJhc3RydWN0dXJlJyxcbiAgICAgICducG0gYXVkaXQgLS1yZWdpc3RyeSBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZyAtLWF1ZGl0LWxldmVsIG1vZGVyYXRlIC0tb21pdD1kZXYnLFxuICAgICAgJ2NkIC4uJyxcbiAgICBdXG4gICk7XG5cbiAgcmV0dXJuIEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICB2ZXJzaW9uOiAnMC4yJyxcbiAgICBlbnYsXG4gICAgcGhhc2VzOiB7XG4gICAgICBpbnN0YWxsOiB7XG4gICAgICAgICdydW50aW1lLXZlcnNpb25zJzogZ2V0UnVudGltZXMoZmVhdHVyZXMsIHJ1bnRpbWUubm9kZWpzVmVyc2lvbiksXG4gICAgICAgIC4uLihydW50aW1lLmNvbW1hbmRzLmxlbmd0aCA+IDAgPyB7IGNvbW1hbmRzOiBydW50aW1lLmNvbW1hbmRzIH0gOiB7fSksXG4gICAgICB9LFxuICAgICAgcHJlX2J1aWxkOiB7XG4gICAgICAgIGNvbW1hbmRzOiBsb2dDb21taXRIYXNoKCksXG4gICAgICB9LFxuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgY29tbWFuZHM6IGJ1aWxkQ29tbWFuZHMsXG4gICAgICB9LFxuICAgICAgcG9zdF9idWlsZDoge1xuICAgICAgICBjb21tYW5kczogbG9nQ29tbWl0SGFzaCgpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNhY2hlOiB7XG4gICAgICBwYXRoczogY2FjaGVQYXRoc1Z1bG5lcmFiaWxpdHkoKSxcbiAgICB9LFxuICB9KTtcbn07XG5cbmNvbnN0IGdldFJ1bnRpbWVzID0gKGZlYXR1cmVzOiBQaXBlbGluZUZlYXR1cmVzLCBub2RlanNWZXJzaW9uOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcnVudGltZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaWYgKGZlYXR1cmVzLmdyYWRsZUJ1aWxkKSB7XG4gICAgcnVudGltZXMuamF2YSA9ICdjb3JyZXR0bzIxJztcbiAgfVxuICBydW50aW1lcy5ub2RlanMgPSBub2RlanNWZXJzaW9uO1xuICByZXR1cm4gcnVudGltZXM7XG59O1xuXG5jb25zdCBnZXRSdW50aW1lT3B0aW9ucyA9IChvcHRpb25zPzogQ29kZUJ1aWxkT3B0aW9ucykgPT4ge1xuICBjb25zdCBjb21tYW5kczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKG9wdGlvbnM/Lm5vZGVqc1ZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydEV4YWN0VmVyc2lvbignbm9kZWpzVmVyc2lvbicsIG9wdGlvbnMubm9kZWpzVmVyc2lvbik7XG4gICAgY29tbWFuZHMucHVzaChgdGVzdCBcIiQobm9kZSAtLXZlcnNpb24pXCIgPSBcInYke29wdGlvbnMubm9kZWpzVmVyc2lvbn1cImApO1xuICB9XG4gIGlmIChvcHRpb25zPy5ucG1WZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBhc3NlcnRFeGFjdFZlcnNpb24oJ25wbVZlcnNpb24nLCBvcHRpb25zLm5wbVZlcnNpb24pO1xuICAgIGNvbW1hbmRzLnB1c2goYHRlc3QgXCIkKG5wbSAtLXZlcnNpb24pXCIgPSBcIiR7b3B0aW9ucy5ucG1WZXJzaW9ufVwiYCk7XG4gIH1cbiAgcmV0dXJuIHsgbm9kZWpzVmVyc2lvbjogb3B0aW9ucz8ubm9kZWpzVmVyc2lvbiA/PyBERUZBVUxUX05PREVfVkVSU0lPTiwgY29tbWFuZHMgfTtcbn07XG5cbmNvbnN0IGFzc2VydEV4YWN0VmVyc2lvbiA9IChuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykgPT4ge1xuICBpZiAodmVyc2lvbi5tYXRjaChFWEFDVF9WRVJTSU9OKT8uWzBdICE9PSB2ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IG11c3QgYmUgYW4gZXhhY3QgbWFqb3IubWlub3IucGF0Y2ggdmVyc2lvbmApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbG9nQ29tbWl0SGFzaCA9ICgpID0+IFtcbiAgJyhlY2hvIFwiQnVpbGQgdHJpZ2dlcmVkIGJ5IGNvbW1pdCBcIiAmJiBnaXQgbG9nIC0tcHJldHR5PWZvcm1hdDpcIiVoJXgwOSVhbiV4MDklc1wiIC1uIDEgKSB8IHRyIC1kIFwiXFxcXG5cIicsXG5dO1xuXG5leHBvcnQgY29uc3QgZXhwb3J0Q29tbWl0SGFzaEFzVmVyc2lvbiA9ICgpID0+IFsnZXhwb3J0IEdJVF9WRVJTSU9OPSQoZ2l0IHJldi1wYXJzZSBIRUFEKSddO1xuXG5jb25zdCBpbmZyYXN0cnVjdHVyZUJ1aWxkQ29tbWFuZHMgPSAoKSA9PiBbXG4gICcjIyMgSU5GUkFTVFJVQ1RVUkUgQlVJTEQgIyMjJyxcbiAgJ2NkIGluZnJhc3RydWN0dXJlJyxcbiAgJ25wbSBjaScsXG4gIGBucHggcmlvLWxpY2Vuc2UtY2hlY2tlciAtLXR5cGUgbnBtLWJhY2tlbmQgLS1hY2NvdW50LW5hbWUgXFwke0FDQ09VTlRfTkFNRX0gLS1zZXJ2aWNlLW5hbWUgXFwke1NFUlZJQ0VfTkFNRX0gLS11cGxvYWRgLFxuICAnbnBtIHJ1biBjZGsgc3ludGggMT4gL2Rldi9udWxsJyxcbiAgLy8gSW4gcGlwZWxpbmU6IEVycm9yIHBhcnNpbmcgcmVmZXJlbmNlOiBpcyBub3QgYSB2YWxpZCByZXBvc2l0b3J5L3RhZzogaW52YWxpZCByZWZlcmVuY2UgZm9ybWF0LlxuICAvLyB3b3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE4MDQ0JyxcbiAgJ2ZpbmQgLi8gLXR5cGUgZiAtbmFtZSBcIipEZXBsb3lBcHBsaWNhdGlvblN0YWNrcyouYXNzZXRzLmpzb25cIiAtcHJpbnQwIHwgeGFyZ3MgLS1uby1ydW4taWYtZW1wdHkgLTAgc2VkIC0taW4tcGxhY2UgXFwnc3xkb2NrZXIgbG9hZCAtaSBhc3NldC58ZG9ja2VyIGxvYWQgLWkgLi4vYXNzZXQufGdcXCcnLFxuICAnY2QgLi4nLFxuXTtcblxuY29uc3QgZ3JhZGxlQnVpbGRDb21tYW5kcyA9IChrYWZrYUludGVncmF0aW9uOiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb21tYW5kcy5wdXNoKFxuICAgIC4uLltcbiAgICAgICcjIyMgR1JBRExFIEJVSUxEICMjIycsXG4gICAgICAnLi9ncmFkbGV3IGNsZWFuIGJ1aWxkJyxcbiAgICAgICcjIGxpY2Vuc2UgY2hlY2snLFxuICAgICAgJ25wbSBjaScsXG4gICAgICBgbnB4IHJpby1saWNlbnNlLWNoZWNrZXIgLS10eXBlIGdyYWRsZSAtLWFjY291bnQtbmFtZSBcXCR7QUNDT1VOVF9OQU1FfSAtLXNlcnZpY2UtbmFtZSBcXCR7U0VSVklDRV9OQU1FfSAtLXVwbG9hZGAsXG4gICAgICAnIyBzZWxmIHNpZ25lZCBjZXJ0aWZpY2F0ZScsXG4gICAgICAnc2V0IC11OyBrZXl0b29sIC1nZW5rZXkgLWFsaWFzIEludGVybmFsU2VydmljZUNlcnRpZmljYXRlIC1rZXlhbGcgUlNBIC1rZXlzdG9yZSBjb250YWluZXJmaWxlcy9zZXJ2aWNlLWtleXN0b3JlLnAxMiAtdmFsaWRpdHkgMzY1MCAtc3RvcmV0eXBlIFBLQ1MxMiAtZG5hbWUgXCJDTj1pbnRlcm5hbC5zZXJ2aWNlLiR7U0VSVklDRV9OQU1FfS4ke0hPU1RFRF9aT05FfSwgT1U9TG9naXN0aWNzLCBPPVJpbywgTD1NdW5pY2gsIFNUPUJZLCBDPURFXCIgLWtleXBhc3MgJHtTRVJWSUNFX0tFWVNUT1JFX1BBU1NXT1JEfSAtc3RvcmVwYXNzICR7U0VSVklDRV9LRVlTVE9SRV9QQVNTV09SRH0nLFxuICAgIF1cbiAgKTtcbiAgaWYgKGthZmthSW50ZWdyYXRpb24pIHtcbiAgICBjb21tYW5kcy5wdXNoKFxuICAgICAgLi4uW1xuICAgICAgICAnIyBrYWZrYSBjZXJ0aWZpY2F0ZScsXG4gICAgICAgICdzZXQgLXU7IGF3cyBzMyBjcCAtLXF1aWV0IHMzOi8vJHtDUkVBVEVfQU5EX1NJR05fQ0VSVElGSUNBVEVfU0NSSVBUX1MzX0xPQ0FUSU9OfSBjcmVhdGUtYW5kLXNpZ24tY2VydGlmaWNhdGUnLFxuICAgICAgICAnY2htb2QgK3ggY3JlYXRlLWFuZC1zaWduLWNlcnRpZmljYXRlJyxcbiAgICAgICAgJ3NldCAtdTsgLi9jcmVhdGUtYW5kLXNpZ24tY2VydGlmaWNhdGUgLS1rZXlzdG9yZS1wYXNzd29yZCAke1NFUlZJQ0VfS0VZU1RPUkVfUEFTU1dPUkR9IC0tZnFkbiAke1NFUlZJQ0VfTkFNRX0uJHtIT1NURURfWk9ORX0nLFxuICAgICAgICAnY3AgL2NlcnQvY2VydGlmaWNhdGUucDEyIGNvbnRhaW5lcmZpbGVzL2thZmthLWtleXN0b3JlLnAxMicsXG4gICAgICBdXG4gICAgKTtcbiAgfVxuICBjb21tYW5kcy5wdXNoKC4uLlsnIyBkb2NrZXIgaW1hZ2UgYnVpbGQnLCAnLi9ncmFkbGV3IGppYkJ1aWxkVGFyIC0tcXVpZXQnXSk7XG4gIHJldHVybiBjb21tYW5kcztcbn07XG5cbmNvbnN0IG5wbUJ1aWxkQ29tbWFuZHMgPSAoKSA9PiBbXG4gICcjIyMgTlBNIEJVSUxEICMjIycsXG4gICdleHBvcnQgVklURV9HSVRfVkVSU0lPTj0kR0lUX1ZFUlNJT04nLFxuICAnZXhwb3J0IFZJVEVfQVdTX0FDQ09VTlRfSUQ9JEFXU19BQ0NPVU5UX0lEJyxcbiAgJ2V4cG9ydCBWSVRFX0FXU19BQ0NPVU5UX05BTUU9JEFDQ09VTlRfTkFNRScsXG4gICdleHBvcnQgVklURV9TRVJWSUNFX05BTUU9JFNFUlZJQ0VfTkFNRScsXG4gICdleHBvcnQgVklURV9URUFNX0lERU5USUZJRVI9JFRFQU1fSURFTlRJRklFUicsXG4gICducG0gY2knLFxuICAnbnBtIHJ1biBsaW50JyxcbiAgJ25wbSBydW4gdGVzdDpjaScsXG4gIGBucHggcmlvLWxpY2Vuc2UtY2hlY2tlciAtLXR5cGUgbnBtLWZyb250ZW5kIC0tYWNjb3VudC1uYW1lIFxcJHtBQ0NPVU5UX05BTUV9IC0tc2VydmljZS1uYW1lIFxcJHtTRVJWSUNFX05BTUV9IC0tdXBsb2FkYCxcbiAgJ25wbSBydW4gYnVpbGQnLFxuXTtcblxuY29uc3QgY2FjaGVQYXRocyA9ICgpID0+IFtcbiAgJy9jZXJ0LyoqLyonLFxuICAnL3Jvb3QvLmNhY2hlLyoqLyonLFxuICAnL3Jvb3QvLm5wbS8qKi8qJyxcbiAgJy9yb290Ly5ncmFkbGUvY2FjaGVzLyoqLyonLFxuICAnL3Jvb3QvLmdyYWRsZS93cmFwcGVyLyoqLyonLFxuICAnL3Jvb3QvZ29vZ2xlLWNsb3VkLXRvb2xzLWphdmEvamliLyoqLyonLFxuICAndGFyZ2V0L2ppYi1jYWNoZS8qKi8qJyxcbl07XG5cbmNvbnN0IGNhY2hlUGF0aHNWdWxuZXJhYmlsaXR5ID0gKCkgPT4gW1xuICAnL3Jvb3QvLmNhY2hlLyoqLyonLFxuICAnL3Jvb3QvLmdyYWRsZS9jYWNoZXMvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL3dyYXBwZXIvKiovKicsXG4gICcvcm9vdC8uZ3JhZGxlL2RlcGVuZGVuY3ktY2hlY2stZGF0YS8qKi8qJyxcbl07XG5cbmNvbnN0IGNyZWF0ZVJlcG9ydHMgPSAoZmVhdHVyZXM6IFBpcGVsaW5lRmVhdHVyZXMpID0+IHtcbiAgY29uc3QgcmVwb3J0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBpZiAoZmVhdHVyZXMuZ3JhZGxlQnVpbGQpIHtcbiAgICByZXBvcnRzLkdyYWRsZUJ1aWxkVGVzdFJlc3VsdHMgPSB7XG4gICAgICBmaWxlczogWycqKi8qJ10sXG4gICAgICAnYmFzZS1kaXJlY3RvcnknOiAnYnVpbGQvdGVzdC1yZXN1bHRzJyxcbiAgICB9O1xuICB9XG4gIGlmIChmZWF0dXJlcy5ucG1CdWlsZCkge1xuICAgIHJlcG9ydHMuTnBtQnVpbGRUZXN0UmVzdWx0cyA9IHtcbiAgICAgIGZpbGVzOiBbJyoqLyonXSxcbiAgICAgICdiYXNlLWRpcmVjdG9yeSc6ICdyZXN1bHRzJyxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXBvcnRzO1xufTtcbiJdfQ==
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DataDogPipelineErrorAlertForVulnerabilityChecks = exports.DatadogPipelineErrorAlert = void 0;
|
|
4
|
-
const datadogv2_1 = require("../../../datadogv2");
|
|
5
|
-
class DatadogPipelineErrorAlert extends datadogv2_1.DatadogMonitor {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id, {
|
|
8
|
-
serviceName: props.serviceName,
|
|
9
|
-
notification: new datadogv2_1.NoNotification(),
|
|
10
|
-
monitorType: datadogv2_1.DatadogMonitorQueryAlertType.QUERY_ALERT,
|
|
11
|
-
extraTags: ['cicd'],
|
|
12
|
-
query: `min(last_5m):min:deployment.codepipeline.executions{pipeline_name:${props.pipelineName},account_id:${props.accountId}} < 1`,
|
|
13
|
-
lowercaseQuery: true,
|
|
14
|
-
name: 'CI pipeline status',
|
|
15
|
-
message: '{{#is_alert}}\\nThe CI build is broken\\n{{/is_alert}} \\n\\n{{#is_alert_recovery}}\\nThe CI build works again.\\n{{/is_alert_recovery}}',
|
|
16
|
-
priority: 5,
|
|
17
|
-
optionOverrides: {
|
|
18
|
-
requireFullWindow: false,
|
|
19
|
-
evaluationDelay: 0,
|
|
20
|
-
},
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.DatadogPipelineErrorAlert = DatadogPipelineErrorAlert;
|
|
25
|
-
class DataDogPipelineErrorAlertForVulnerabilityChecks extends datadogv2_1.DatadogMonitor {
|
|
26
|
-
constructor(scope, id, props) {
|
|
27
|
-
super(scope, id, {
|
|
28
|
-
serviceName: props.serviceName,
|
|
29
|
-
notification: props.notification,
|
|
30
|
-
monitorType: datadogv2_1.DatadogMonitorQueryAlertType.QUERY_ALERT,
|
|
31
|
-
extraTags: ['cicd'],
|
|
32
|
-
query: `min(last_5m):min:deployment.codepipeline.executions{pipeline_name:${props.pipelineName},account_id:${props.accountId}} < 1`,
|
|
33
|
-
lowercaseQuery: true,
|
|
34
|
-
name: 'Vulnerability checks',
|
|
35
|
-
message: 'Vulnerabilities detected',
|
|
36
|
-
priority: 3,
|
|
37
|
-
optionOverrides: {
|
|
38
|
-
requireFullWindow: false,
|
|
39
|
-
evaluationDelay: 0,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.DataDogPipelineErrorAlertForVulnerabilityChecks = DataDogPipelineErrorAlertForVulnerabilityChecks;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tb25pdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9kYXRhZG9nLW1vbml0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGtEQUFpSDtBQVNqSCxNQUFhLHlCQUEwQixTQUFRLDBCQUFjO0lBQzNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0Q7UUFDaEcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsWUFBWSxFQUFFLElBQUksMEJBQWMsRUFBRTtZQUNsQyxXQUFXLEVBQUUsd0NBQTRCLENBQUMsV0FBVztZQUNyRCxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkIsS0FBSyxFQUFFLHFFQUFxRSxLQUFLLENBQUMsWUFBWSxlQUFlLEtBQUssQ0FBQyxTQUFTLE9BQU87WUFDbkksY0FBYyxFQUFFLElBQUk7WUFDcEIsSUFBSSxFQUFFLG9CQUFvQjtZQUMxQixPQUFPLEVBQ0wsMElBQTBJO1lBQzVJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsZUFBZSxFQUFFO2dCQUNmLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLGVBQWUsRUFBRSxDQUFDO2FBQ25CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbkJELDhEQW1CQztBQUVELE1BQWEsK0NBQWdELFNBQVEsMEJBQWM7SUFDakYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsV0FBVyxFQUFFLHdDQUE0QixDQUFDLFdBQVc7WUFDckQsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxxRUFBcUUsS0FBSyxDQUFDLFlBQVksZUFBZSxLQUFLLENBQUMsU0FBUyxPQUFPO1lBQ25JLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxRQUFRLEVBQUUsQ0FBQztZQUNYLGVBQWUsRUFBRTtnQkFDZixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixlQUFlLEVBQUUsQ0FBQzthQUNuQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxCRCwwR0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZlcmVuY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dNb25pdG9yLCBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLCBJTm90aWZpY2F0aW9uLCBOb05vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2d2Mic7XG5cbmludGVyZmFjZSBEYXRhZG9nUGlwZWxpbmVNb25pdG9yUHJvcHMge1xuICBwaXBlbGluZU5hbWU6IHN0cmluZyB8IFJlZmVyZW5jZTtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvbj86IElOb3RpZmljYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhZG9nUGlwZWxpbmVFcnJvckFsZXJ0IGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogT21pdDxEYXRhZG9nUGlwZWxpbmVNb25pdG9yUHJvcHMsICdub3RpZmljYXRpb24nPikge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uOiBuZXcgTm9Ob3RpZmljYXRpb24oKSxcbiAgICAgIG1vbml0b3JUeXBlOiBEYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLlFVRVJZX0FMRVJULFxuICAgICAgZXh0cmFUYWdzOiBbJ2NpY2QnXSxcbiAgICAgIHF1ZXJ5OiBgbWluKGxhc3RfNW0pOm1pbjpkZXBsb3ltZW50LmNvZGVwaXBlbGluZS5leGVjdXRpb25ze3BpcGVsaW5lX25hbWU6JHtwcm9wcy5waXBlbGluZU5hbWV9LGFjY291bnRfaWQ6JHtwcm9wcy5hY2NvdW50SWR9fSA8IDFgLFxuICAgICAgbG93ZXJjYXNlUXVlcnk6IHRydWUsXG4gICAgICBuYW1lOiAnQ0kgcGlwZWxpbmUgc3RhdHVzJyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgICd7eyNpc19hbGVydH19XFxcXG5UaGUgQ0kgYnVpbGQgaXMgYnJva2VuXFxcXG57ey9pc19hbGVydH19IFxcXFxuXFxcXG57eyNpc19hbGVydF9yZWNvdmVyeX19XFxcXG5UaGUgQ0kgYnVpbGQgd29ya3MgYWdhaW4uXFxcXG57ey9pc19hbGVydF9yZWNvdmVyeX19JyxcbiAgICAgIHByaW9yaXR5OiA1LFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlcXVpcmVGdWxsV2luZG93OiBmYWxzZSxcbiAgICAgICAgZXZhbHVhdGlvbkRlbGF5OiAwLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YURvZ1BpcGVsaW5lRXJyb3JBbGVydEZvclZ1bG5lcmFiaWxpdHlDaGVja3MgZXh0ZW5kcyBEYXRhZG9nTW9uaXRvciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nUGlwZWxpbmVNb25pdG9yUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvbjogcHJvcHMubm90aWZpY2F0aW9uLFxuICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICBleHRyYVRhZ3M6IFsnY2ljZCddLFxuICAgICAgcXVlcnk6IGBtaW4obGFzdF81bSk6bWluOmRlcGxveW1lbnQuY29kZXBpcGVsaW5lLmV4ZWN1dGlvbnN7cGlwZWxpbmVfbmFtZToke3Byb3BzLnBpcGVsaW5lTmFtZX0sYWNjb3VudF9pZDoke3Byb3BzLmFjY291bnRJZH19IDwgMWAsXG4gICAgICBsb3dlcmNhc2VRdWVyeTogdHJ1ZSxcbiAgICAgIG5hbWU6ICdWdWxuZXJhYmlsaXR5IGNoZWNrcycsXG4gICAgICBtZXNzYWdlOiAnVnVsbmVyYWJpbGl0aWVzIGRldGVjdGVkJyxcbiAgICAgIHByaW9yaXR5OiAzLFxuICAgICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlcXVpcmVGdWxsV2luZG93OiBmYWxzZSxcbiAgICAgICAgZXZhbHVhdGlvbkRlbGF5OiAwLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RioCapabilityMonitoringDeployStep = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
|
|
6
|
-
const pipelines = require("aws-cdk-lib/pipelines");
|
|
7
|
-
class RioCapabilityMonitoringDeployStep extends pipelines.CodeBuildStep {
|
|
8
|
-
constructor(scope, id, props) {
|
|
9
|
-
super(id, {
|
|
10
|
-
additionalInputs: props.monitoringArtifacts.reduce((result, item) => ({
|
|
11
|
-
...result,
|
|
12
|
-
[`${Object.keys(result).length}`]: item.input,
|
|
13
|
-
}), {}),
|
|
14
|
-
commands: props.monitoringArtifacts
|
|
15
|
-
.map((item, index) => item.files.map((file) => [
|
|
16
|
-
`echo "Uploading ${index}/${file}" to S3`,
|
|
17
|
-
`aws s3 cp "${index}/${file}" s3://monitoring-testsuite-runner-${aws_cdk_lib_1.Stack.of(scope).account}`,
|
|
18
|
-
]))
|
|
19
|
-
.flat(2),
|
|
20
|
-
buildEnvironment: {
|
|
21
|
-
buildImage: aws_codebuild_1.LinuxLambdaBuildImage.AMAZON_LINUX_2023_NODE_20,
|
|
22
|
-
computeType: aws_codebuild_1.ComputeType.LAMBDA_1GB,
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.RioCapabilityMonitoringDeployStep = RioCapabilityMonitoringDeployStep;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZy1kZXBsb3ktc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9tb25pdG9yaW5nLWRlcGxveS1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUNwQyw2REFBK0U7QUFDL0UsbURBQW1EO0FBWW5ELE1BQWEsaUNBQWtDLFNBQVEsU0FBUyxDQUFDLGFBQWE7SUFDNUUsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QztRQUNyRixLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxNQUFXLEVBQUUsSUFBc0MsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEQsR0FBRyxNQUFNO2dCQUNULENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDOUMsQ0FBQyxFQUNGLEVBQUUsQ0FDSDtZQUNELFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CO2lCQUNoQyxHQUFHLENBQUMsQ0FBQyxJQUFzQyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsbUJBQW1CLEtBQUssSUFBSSxJQUFJLFNBQVM7Z0JBQ3pDLGNBQWMsS0FBSyxJQUFJLElBQUksc0NBQXNDLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTthQUMzRixDQUFDLENBQ0g7aUJBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixVQUFVLEVBQUUscUNBQXFCLENBQUMseUJBQXlCO2dCQUMzRCxXQUFXLEVBQUUsMkJBQVcsQ0FBQyxVQUFVO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBeEJELDhFQXdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29tcHV0ZVR5cGUsIExpbnV4TGFtYmRhQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0ICogYXMgcGlwZWxpbmVzIGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBSaW9DYXBhYmlsaXR5TW9uaXRvcmluZ0FydGlmYWN0cyB7XG4gIGlucHV0OiBwaXBlbGluZXMuSUZpbGVTZXRQcm9kdWNlcjtcbiAgZmlsZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcFByb3BzIHtcbiAgbW9uaXRvcmluZ0FydGlmYWN0czogUmlvQ2FwYWJpbGl0eU1vbml0b3JpbmdBcnRpZmFjdHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcCBleHRlbmRzIHBpcGVsaW5lcy5Db2RlQnVpbGRTdGVwIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nRGVwbG95U3RlcFByb3BzKSB7XG4gICAgc3VwZXIoaWQsIHtcbiAgICAgIGFkZGl0aW9uYWxJbnB1dHM6IHByb3BzLm1vbml0b3JpbmdBcnRpZmFjdHMucmVkdWNlKFxuICAgICAgICAocmVzdWx0OiBhbnksIGl0ZW06IFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nQXJ0aWZhY3RzKSA9PiAoe1xuICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICBbYCR7T2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGh9YF06IGl0ZW0uaW5wdXQsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKSxcbiAgICAgIGNvbW1hbmRzOiBwcm9wcy5tb25pdG9yaW5nQXJ0aWZhY3RzXG4gICAgICAgIC5tYXAoKGl0ZW06IFJpb0NhcGFiaWxpdHlNb25pdG9yaW5nQXJ0aWZhY3RzLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgIGl0ZW0uZmlsZXMubWFwKChmaWxlOiBzdHJpbmcpID0+IFtcbiAgICAgICAgICAgIGBlY2hvIFwiVXBsb2FkaW5nICR7aW5kZXh9LyR7ZmlsZX1cIiB0byBTM2AsXG4gICAgICAgICAgICBgYXdzIHMzIGNwIFwiJHtpbmRleH0vJHtmaWxlfVwiIHMzOi8vbW9uaXRvcmluZy10ZXN0c3VpdGUtcnVubmVyLSR7U3RhY2sub2Yoc2NvcGUpLmFjY291bnR9YCxcbiAgICAgICAgICBdKVxuICAgICAgICApXG4gICAgICAgIC5mbGF0KDIpLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiBMaW51eExhbWJkYUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzIwMjNfTk9ERV8yMCxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBTUJEQV8xR0IsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|