cdklabs-projen-project-types 0.2.15 → 0.2.16
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 +4 -291
- package/API.md +0 -396
- package/lib/cdk.js +2 -2
- package/lib/cdklabs.js +3 -3
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -2
- package/lib/jsii.js +1 -1
- package/lib/rosetta.js +1 -1
- package/lib/yarn/monorepo-release.js +1 -1
- package/lib/yarn/monorepo.js +2 -2
- package/lib/yarn/typescript-workspace-release.js +1 -1
- package/lib/yarn/typescript-workspace.js +1 -1
- package/package.json +7 -7
- package/lib/cdk-cli-integ-tests.d.ts +0 -102
- package/lib/cdk-cli-integ-tests.js +0 -362
|
@@ -115,5 +115,5 @@ class WorkspaceRelease extends projen_1.Component {
|
|
|
115
115
|
}
|
|
116
116
|
exports.WorkspaceRelease = WorkspaceRelease;
|
|
117
117
|
_a = JSII_RTTI_SYMBOL_1;
|
|
118
|
-
WorkspaceRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.2.
|
|
118
|
+
WorkspaceRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceRelease", version: "0.2.16" };
|
|
119
119
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL3R5cGVzY3JpcHQtd29ya3NwYWNlLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrQ0FBa0M7QUFDbEMsbUNBQW9HO0FBQ3BHLGlFQUErRTtBQW9CL0UsTUFBYSxnQkFBaUIsU0FBUSxrQkFBUztJQUs3QyxZQUFtQixPQUE0QixFQUFFLE9BQWdDO1FBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBRXpCLCtEQUErRDtRQUMvRCxtRUFBbUU7UUFDbkUsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDekMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLDRDQUE0QztnQkFDOUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtnQkFDOUMsZ0JBQWdCLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxHQUFHLEVBQUUsMEZBQTBGO2lCQUN0RztnQkFDRCxpREFBaUQ7Z0JBQ2pELG9EQUFvRDtnQkFDcEQsdURBQXVEO2dCQUN2RCxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHO2dCQUU3QixrRUFBa0U7Z0JBQ2xFLHlFQUF5RTtnQkFDekUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixJQUFJLDBCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBRWxGLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7YUFDL0MsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGdCQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVB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TyxDQUFDLE1BQU0sRUFBRTtnQkFDN0IsV0FBVyxFQUFFLHNDQUFzQzthQUNwRCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxnQkFBZ0I7UUFDdEIsT0FBTyxDQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUMvQixXQUFXLEVBQUUsZ0RBQWdEO2FBQzlELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUE3SEgsNENBOEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBSZWxlYXNhYmxlQ29tbWl0cywgVGFzaywgVmVyc2lvbiwgVmVyc2lvbkJyYW5jaE9wdGlvbnMsIHJlbGVhc2UgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2F0aGVyVmVyc2lvbnMsIEdhdGhlclZlcnNpb25zT3B0aW9ucyB9IGZyb20gJy4vZ2F0aGVyLXZlcnNpb25zLnRhc2snO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFdvcmtzcGFjZSB9IGZyb20gJy4vdHlwZXNjcmlwdC13b3Jrc3BhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJpdmF0ZTogYm9vbGVhbjtcblxuICAvKiogQGRlZmF1bHQgJ2x0cy8qJyAqL1xuICByZWFkb25seSB3b3JrZmxvd05vZGVWZXJzaW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwdWJsaXNoVG9OcG0/OiBib29sZWFuO1xuICByZWFkb25seSBucG1EaXN0VGFnPzogc3RyaW5nO1xuICByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0cz86IFJlbGVhc2FibGVDb21taXRzO1xuICByZWFkb25seSBuZXh0VmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb25CcmFuY2hPcHRpb25zOiBWZXJzaW9uQnJhbmNoT3B0aW9ucztcblxuICAvKipcbiAgICogRm9yIHJ1bnRpbWUgYW5kIHBlZXIgZGVwZW5kZW5jaWVzLCB0aGUgdHlwZSBvZiBkZXBlbmRlbmN5IHdlIHRha2Ugb24gZWFjaCBwYWNrYWdlXG4gICAqL1xuICByZWFkb25seSByZXBvUnVudGltZURlcGVuZGVuY2llcz86IEdhdGhlclZlcnNpb25zT3B0aW9uc1sncmVwb1J1bnRpbWVEZXBlbmRlbmNpZXMnXTtcbn1cblxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVJlbGVhc2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGlzaGVyPzogcmVsZWFzZS5QdWJsaXNoZXI7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uPzogVmVyc2lvbjtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtzcGFjZTogVHlwZVNjcmlwdFdvcmtzcGFjZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSwgb3B0aW9uczogV29ya3NwYWNlUmVsZWFzZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICB0aGlzLndvcmtzcGFjZSA9IHByb2plY3Q7XG5cbiAgICAvLyBUaGUgcm9vdCBwYWNrYWdlIGlzIHJlbGVhc2UtYXdhcmUuIEVpdGhlciB3ZSBjcmVhdGUgYSBwcm9wZXJcbiAgICAvLyAneWFybiByZWxlYXNlJyB0YXNrIGhlcmUsIG9yIHdlIGNyZWF0ZSBhIGZha2Ugb25lIHRoYXQganVzdCBkb2VzXG4gICAgLy8gYSAnYnVpbGQnICh3aWxsIGJlIHJ1biBpbiBkZXBlbmRlbmN5IG9yZGVyIGJ5IHRoZSBwYXJlbnQgcmVsZWFzZSB0YXNrKS5cbiAgICBpZiAoIW9wdGlvbnMucHJpdmF0ZSkge1xuICAgICAgdGhpcy52ZXJzaW9uID0gbmV3IFZlcnNpb24odGhpcy53b3Jrc3BhY2UsIHtcbiAgICAgICAgdmVyc2lvbklucHV0RmlsZTogJ3BhY2thZ2UuanNvbicsIC8vIHRoaXMgaXMgd2hlcmUgXCJ2ZXJzaW9uXCIgaXMgc2V0IGFmdGVyIGJ1bXBcbiAgICAgICAgYXJ0aWZhY3RzRGlyZWN0b3J5OiBwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgdmVyc2lvbnJjT3B0aW9uczoge1xuICAgICAgICAgIHBhdGg6ICcuJywgLy8gSW4gYSBtb25vcmVwbywgd2Ugd2FudCBzdGFuZGFyZC12ZXJzaW9uIHRvIG9ubHkgY29uc2lkZXIgdGhlIGRpcmVjdG9yeSBvZiB0aGUgd29ya3NwYWNlXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRoaXMgbWl4ZXMgdGhlIHBhY2thZ2UgbmFtZSBpbnRvIHRoZSB0YWcgbmFtZSxcbiAgICAgICAgLy8gc28gdGhhdCB3ZSBjYW4gZ2l2ZSBwYWNrYWdlcyBpbmRpdmlkdWFsIHZlcnNpb25zLlxuICAgICAgICAvLyBUYWdzIGVuZCB1cCBsb29raW5nIGxpa2UgdGhpczogQHNjb3BlL3BhY2thZ2VAdjEuMi4zXG4gICAgICAgIHRhZ1ByZWZpeDogYCR7cHJvamVjdC5uYW1lfUBgLFxuXG4gICAgICAgIC8vIEluIGEgbW9ub3JlcG8sIG9ubHkgY29uc2lkZXIgY2hhbmdlcyByZWxldmFudCB0byB0aGUgc3VicHJvamVjdFxuICAgICAgICAvLyBQYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBzdWJwcm9qZWN0IG91dGRpciwgc28gJy4nIGlzIHdoYXQgd2Ugd2FudCBoZXJlXG4gICAgICAgIHJlbGVhc2FibGVDb21taXRzOiBvcHRpb25zLnJlbGVhc2FibGVDb21taXRzID8/IFJlbGVhc2FibGVDb21taXRzLmV2ZXJ5Q29tbWl0KCcuJyksXG5cbiAgICAgICAgbmV4dFZlcnNpb25Db21tYW5kOiBvcHRpb25zLm5leHRWZXJzaW9uQ29tbWFuZCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnB1Ymxpc2hlciA9IG5ldyByZWxlYXNlLlB1Ymxpc2hlcih0aGlzLndvcmtzcGFjZSwge1xuICAgICAgICBhcnRpZmFjdE5hbWU6IHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICBjb25kaXRpb246ICduZWVkcy5yZWxlYXNlLm91dHB1dHMubGF0ZXN0X2NvbW1pdCA9PSBnaXRodWIuc2hhJyxcbiAgICAgICAgYnVpbGRKb2JJZDogJ3JlbGVhc2UnLFxuICAgICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnB1Ymxpc2hlci5wdWJsaXNoVG9HaXRIdWJSZWxlYXNlcyh7XG4gICAgICAgIGNoYW5nZWxvZ0ZpbGU6IHBhdGgucG9zaXguam9pbihwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSwgdGhpcy52ZXJzaW9uLmNoYW5nZWxvZ0ZpbGVOYW1lKSxcbiAgICAgICAgdmVyc2lvbkZpbGU6IHBhdGgucG9zaXguam9pbihwcm9qZWN0LmFydGlmYWN0c0RpcmVjdG9yeSwgdGhpcy52ZXJzaW9uLnZlcnNpb25GaWxlTmFtZSksXG4gICAgICAgIHJlbGVhc2VUYWdGaWxlOiBwYXRoLnBvc2l4LmpvaW4ocHJvamVjdC5hcnRpZmFjdHNEaXJlY3RvcnksIHRoaXMudmVyc2lvbi5yZWxlYXNlVGFnRmlsZU5hbWUpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdpdEh1YiBSZWxlYXNlcyBjb21lcyBmb3IgZnJlZSB3aXRoIGEgYFJlbGVhc2VgIGNvbXBvbmVudCwgTlBNIG11c3QgYmUgYWRkZWQgZXhwbGljaXRseVxuICAgICAgaWYgKG9wdGlvbnMucHVibGlzaFRvTnBtID8/IHRydWUpIHtcbiAgICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaFRvTnBtKHtcbiAgICAgICAgICByZWdpc3RyeTogcHJvamVjdC5wYWNrYWdlLm5wbVJlZ2lzdHJ5LFxuICAgICAgICAgIG5wbVRva2VuU2VjcmV0OiBwcm9qZWN0LnBhY2thZ2UubnBtVG9rZW5TZWNyZXQsXG4gICAgICAgICAgbnBtUHJvdmVuYW5jZTogcHJvamVjdC5wYWNrYWdlLm5wbVByb3ZlbmFuY2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgdGFza3Mgc2V0cyBhbGwgbG9jYWwgZGVwZW5kZW5jaWVzIHRvIHRoZWlyIGN1cnJlbnQgdmVyc2lvblxuICAgIC8vIEluIHRoZSBtb25vcmVwbyB3ZSBjYWxsIHRoaXMgdGFzayBpbiB0b3BvbG9naWNhbCBvcmRlci5cbiAgICAvLyBUaGVyZWZvciBpdCBpcyBndWFyYW50ZWVkIHRoYXQgYW55IGxvY2FsIHBhY2thZ2VzIGEgcGFja2FnZSBkZXBlbmRzIG9uLFxuICAgIC8vIGFscmVhZHkgaGF2ZSBiZWVuIGJ1bXBlZC5cbiAgICBjb25zdCBnYXRoZXJWZXJzaW9ucyA9IHByb2plY3QuYWRkVGFzaygnZ2F0aGVyLXZlcnNpb25zJywge1xuICAgICAgc3RlcHM6IFtuZXcgR2F0aGVyVmVyc2lvbnMocHJvamVjdCwge1xuICAgICAgICByZXBvUnVudGltZURlcGVuZGVuY2llczogb3B0aW9ucy5yZXBvUnVudGltZURlcGVuZGVuY2llcyA/PyB7fSxcbiAgICAgIH0pXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJ1bXBUYXNrID0gdGhpcy5vYnRhaW5CdW1wVGFzaygpO1xuICAgIGJ1bXBUYXNrLnByZXBlbmRTcGF3bihnYXRoZXJWZXJzaW9ucyk7XG4gICAgLy8gVGhlIGJ1bXBUYXNrIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgY29udHJvbFxuICAgIC8vIHZlcnNpb24gaW5mb3JtYXRpb24uIFRoZXNlIGFyZSBub3QgcGFydCBvZiB0aGUgdXBzdHJlYW0gdGFzayBpdHNlbGYgeWV0LFxuICAgIC8vIHNpbmNlIHRoZXkgYXJlIHBhcnQgb2YgdGhlIGludm9jYXRpb24gdGhlcmUuIFdlIGFsc28gbmVlZCB0byBtYWtlIHRoZW0gcGFydFxuICAgIC8vIG9mIHRoZSBpbnZvY2F0aW9uIGhlcmUuXG4gICAgaWYgKHRoaXMudmVyc2lvbikge1xuICAgICAgaWYgKG9wdGlvbnMudmVyc2lvbkJyYW5jaE9wdGlvbnM/LnRhZ1ByZWZpeCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvIG5vdCBzZXQgdmVyc2lvbkJyYW5jaE9wdGlvbnMudGFnUHJlZml4OyBpdCBpcyBjb25maWd1cmVkIGFub3RoZXIgd2F5Jyk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnZlcnNpb24uZW52Rm9yQnJhbmNoKHtcbiAgICAgICAgLi4ub3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucyxcbiAgICAgIH0pKSkge1xuICAgICAgICBidW1wVGFzay5lbnYoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBBZnRlciB3ZSBoYXZlIHVuYnVtcGVkIHBhY2thZ2UgdmVyc2lvbnMgYmFjayB0byBeMC4wLjAsXG4gICAgLy8gd2UgY2FuIHJ1biB0aGUgZ2F0aGVyLXZlcnNpb25zIHRhc2sgYWdhaW4gd2hpY2ggd2lsbCBub3cgcmVwbGFjZSB0aGUgdG8tYmUtcmVsZWFzZSB2ZXJzaW9ucyB3aXRoIF4wLjAuMFxuICAgIC8vXG4gICAgLy8gV2UgbmVlZCB0byBzZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gZ2V0IGBnYXRoZXJWZXJzaW9uc2AgdG8gYmVoYXZlIGRpZmZlcmVudGx5IGluIHRoZSB1bmJ1bXBcbiAgICAvLyBpbnZvY2F0aW9uIChpbiB0aGUgYnVtcCBpbnZvY2F0aW9uLCBpdCBtYXkgY2hhbmdlIHRoZSBwYWNrYWdlLmpzb24gZGVwZW5kZW5jeSByYW5nZSBmcm9tIGBeMC4wLjBgIHRvIGAxLjIuM2A7XG4gICAgLy8gdXNpbmcgYSBkaWZmZXJlbnQgcmFuZ2Ugc3ltYm9sKSwgYnV0IHdoZW4gdW5idW1waW5nIGl0IG11c3QgYWx3YXlzIHJlc2V0IGJhY2sgdG8gdGhlIGBeMC4wLjBgIHZlcnNpb24uXG4gICAgdGhpcy5vYnRhaW5VbmJ1bXBUYXNrKCkuc3Bhd24oZ2F0aGVyVmVyc2lvbnMsIHtcbiAgICAgIGVudjoge1xuICAgICAgICBSRVNFVF9WRVJTSU9OUzogJ3RydWUnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJ1bXAgdmVyc2lvbiB0YXNrXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYSBwcml2YXRlIHBhY2thZ2UsIGl0IHdvbid0IGhhdmUgYSBidW1wIHRhc2sgeWV0LlxuICAgKiBTbyBpbnN0ZWFkIHdlIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIG1vbm9yZXBvIHJvb3RcbiAgICogYW5kIHNlcnZlIGFzIGEgY29udGFpbmVyIGZvciBvdGhlciBzdGVwcyB0aGF0IG5lZWQgdG8gb2NjdXIgYXMgcGFydCBvZiB0aGUgcmVsZWFzZVxuICAgKi9cbiAgcHJpdmF0ZSBvYnRhaW5CdW1wVGFzaygpOiBUYXNrIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy53b3Jrc3BhY2UudGFza3MudHJ5RmluZCgnYnVtcCcpID8/XG4gICAgICB0aGlzLndvcmtzcGFjZS5hZGRUYXNrKCdidW1wJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0J1bXBzIHZlcnNpb25zIG9mIGxvY2FsIGRlcGVuZGVuY2llcycsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmJ1bXAgdmVyc2lvbiB0YXNrXG4gICAqLlxuICAgKiBJZiB0aGlzIGlzIGEgcHJpdmF0ZSBwYWNrYWdlLCBpdCB3b24ndCBoYXZlIGEgYnVtcCB0YXNrIHlldFxuICAgKiBTbyBpbnN0ZWFkIHdlIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIG1vbm9yZXBvIHJvb3RcbiAgICogYW5kIHNlcnZlIGFzIGEgY29udGFpbmVyIGZvciBvdGhlciBzdGVwcyB0aGF0IG5lZWQgdG8gb2NjdXIgYXMgcGFydCBvZiB0aGUgcmVsZWFzZVxuICAgKi9cbiAgcHJpdmF0ZSBvYnRhaW5VbmJ1bXBUYXNrKCk6IFRhc2sge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLndvcmtzcGFjZS50YXNrcy50cnlGaW5kKCd1bmJ1bXAnKSA/P1xuICAgICAgdGhpcy53b3Jrc3BhY2UuYWRkVGFzaygndW5idW1wJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1Jlc2V0cyB2ZXJzaW9ucyBvZiBsb2NhbCBkZXBlbmRlbmNpZXMgdG8gMC4wLjAnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -209,7 +209,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
|
|
|
209
209
|
}
|
|
210
210
|
exports.TypeScriptWorkspace = TypeScriptWorkspace;
|
|
211
211
|
_a = JSII_RTTI_SYMBOL_1;
|
|
212
|
-
TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.2.
|
|
212
|
+
TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.2.16" };
|
|
213
213
|
function packageNames(xs) {
|
|
214
214
|
if (!xs) {
|
|
215
215
|
return undefined;
|
package/package.json
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"organization": true
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@jsii/spec": "^1.
|
|
38
|
+
"@jsii/spec": "^1.111.0",
|
|
39
39
|
"@stylistic/eslint-plugin": "^2",
|
|
40
40
|
"@types/jest": "^29",
|
|
41
41
|
"@types/node": "^18",
|
|
@@ -44,17 +44,17 @@
|
|
|
44
44
|
"commit-and-tag-version": "^12",
|
|
45
45
|
"constructs": "^10.0.0",
|
|
46
46
|
"eslint": "^9",
|
|
47
|
-
"eslint-import-resolver-typescript": "^3.
|
|
47
|
+
"eslint-import-resolver-typescript": "^3.10.1",
|
|
48
48
|
"eslint-plugin-import": "^2.31.0",
|
|
49
49
|
"jest": "^29",
|
|
50
50
|
"jest-junit": "^16",
|
|
51
51
|
"jsii": "~5.5",
|
|
52
|
-
"jsii-diff": "^1.
|
|
52
|
+
"jsii-diff": "^1.111.0",
|
|
53
53
|
"jsii-docgen": "^10.5.0",
|
|
54
|
-
"jsii-pacmak": "^1.
|
|
55
|
-
"jsii-reflect": "^1.
|
|
54
|
+
"jsii-pacmak": "^1.111.0",
|
|
55
|
+
"jsii-reflect": "^1.111.0",
|
|
56
56
|
"jsii-rosetta": "~5.5",
|
|
57
|
-
"projen": "^0.91.
|
|
57
|
+
"projen": "^0.91.20",
|
|
58
58
|
"ts-jest": "^29",
|
|
59
59
|
"ts-node": "^10.9.2",
|
|
60
60
|
"typescript": "~5.5"
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"publishConfig": {
|
|
75
75
|
"access": "public"
|
|
76
76
|
},
|
|
77
|
-
"version": "0.2.
|
|
77
|
+
"version": "0.2.16",
|
|
78
78
|
"jest": {
|
|
79
79
|
"coverageProvider": "v8",
|
|
80
80
|
"testMatch": [
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Component, javascript } from 'projen';
|
|
2
|
-
/**
|
|
3
|
-
* Options for atmosphere service usage.
|
|
4
|
-
*/
|
|
5
|
-
export interface AtmosphereOptions {
|
|
6
|
-
/**
|
|
7
|
-
* Atmosphere service endpoint.
|
|
8
|
-
*/
|
|
9
|
-
readonly endpoint: string;
|
|
10
|
-
/**
|
|
11
|
-
* Which pool to retrieve environments from.
|
|
12
|
-
*/
|
|
13
|
-
readonly pool: string;
|
|
14
|
-
/**
|
|
15
|
-
* OIDC role to assume prior to using atmosphere. Must be allow listed
|
|
16
|
-
* on the service endpoint.
|
|
17
|
-
*/
|
|
18
|
-
readonly oidcRoleArn: string;
|
|
19
|
-
}
|
|
20
|
-
export interface CdkCliIntegTestsWorkflowProps {
|
|
21
|
-
/**
|
|
22
|
-
* Runners for the workflow
|
|
23
|
-
*/
|
|
24
|
-
readonly buildRunsOn: string;
|
|
25
|
-
/**
|
|
26
|
-
* Runners for the workflow
|
|
27
|
-
*/
|
|
28
|
-
readonly testRunsOn: string;
|
|
29
|
-
/**
|
|
30
|
-
* GitHub environment name for approvals
|
|
31
|
-
*
|
|
32
|
-
* MUST be configured to require manual approval.
|
|
33
|
-
*/
|
|
34
|
-
readonly approvalEnvironment: string;
|
|
35
|
-
/**
|
|
36
|
-
* GitHub environment name for running the tests
|
|
37
|
-
*
|
|
38
|
-
* MUST be configured without approvals, and with the following vars and secrets:
|
|
39
|
-
*
|
|
40
|
-
* - vars: AWS_ROLE_TO_ASSUME_FOR_TESTING
|
|
41
|
-
*
|
|
42
|
-
* And the role needs to be configured to allow the AssumeRole operation.
|
|
43
|
-
*/
|
|
44
|
-
readonly testEnvironment: string;
|
|
45
|
-
/**
|
|
46
|
-
* Packages that are locally transfered (we will never use the upstream versions)
|
|
47
|
-
*
|
|
48
|
-
* Takes package names; these are expected to live in `packages/<NAME>/dist/js`.
|
|
49
|
-
*/
|
|
50
|
-
readonly localPackages: string[];
|
|
51
|
-
/**
|
|
52
|
-
* The official repo this workflow is used for
|
|
53
|
-
*/
|
|
54
|
-
readonly sourceRepo: string;
|
|
55
|
-
/**
|
|
56
|
-
* If given, allows accessing upstream versions of these packages
|
|
57
|
-
*
|
|
58
|
-
* @default - No upstream versions
|
|
59
|
-
*/
|
|
60
|
-
readonly allowUpstreamVersions?: string[];
|
|
61
|
-
/**
|
|
62
|
-
* Enable atmosphere service to retrieve AWS test environments.
|
|
63
|
-
*
|
|
64
|
-
* @default - atmosphere is not used
|
|
65
|
-
*/
|
|
66
|
-
readonly enableAtmosphere?: AtmosphereOptions;
|
|
67
|
-
/**
|
|
68
|
-
* Specifies the maximum number of workers the worker-pool will spawn for running tests.
|
|
69
|
-
*
|
|
70
|
-
* @default - the cli integ test package determines a sensible default
|
|
71
|
-
*/
|
|
72
|
-
readonly maxWorkers?: string;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Add a workflow for running the tests
|
|
76
|
-
*
|
|
77
|
-
* This MUST be a separate workflow that runs in privileged context. We have a couple
|
|
78
|
-
* of options:
|
|
79
|
-
*
|
|
80
|
-
* - `workflow_run`: we can trigger a privileged workflow run after the unprivileged
|
|
81
|
-
* `pull_request` workflow finishes and reuse its output artifacts. The
|
|
82
|
-
* problem is that the second run is disconnected from the PR so we would need
|
|
83
|
-
* to script in visibility for approvals and success (by posting comments, for
|
|
84
|
-
* example)
|
|
85
|
-
* - Use only a `pull_request_target` workflow on the PR: this either would run
|
|
86
|
-
* a privileged workflow on any user code submission (might be fine given the
|
|
87
|
-
* workflow's `permissions`, but I'm sure this will make our security team uneasy
|
|
88
|
-
* anyway), OR this would mean any build needs human confirmation which means slow
|
|
89
|
-
* feedback.
|
|
90
|
-
* - Use a `pull_request` for a regular fast-feedback build, and a separate
|
|
91
|
-
* `pull_request_target` for the integ tests. This means we're building twice.
|
|
92
|
-
*
|
|
93
|
-
* Ultimately, our build isn't heavy enough to put in a lot of effort deduping
|
|
94
|
-
* it, so we'll go with the simplest solution which is the last one: 2
|
|
95
|
-
* independent workflows.
|
|
96
|
-
*
|
|
97
|
-
* projen doesn't make it easy to copy the relevant parts of the 'build' workflow,
|
|
98
|
-
* so they're unfortunately duplicated here.
|
|
99
|
-
*/
|
|
100
|
-
export declare class CdkCliIntegTestsWorkflow extends Component {
|
|
101
|
-
constructor(repo: javascript.NodeProject, props: CdkCliIntegTestsWorkflowProps);
|
|
102
|
-
}
|
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.CdkCliIntegTestsWorkflow = void 0;
|
|
5
|
-
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const projen_1 = require("projen");
|
|
7
|
-
const NOT_FLAGGED_EXPR = "!contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')";
|
|
8
|
-
/**
|
|
9
|
-
* Add a workflow for running the tests
|
|
10
|
-
*
|
|
11
|
-
* This MUST be a separate workflow that runs in privileged context. We have a couple
|
|
12
|
-
* of options:
|
|
13
|
-
*
|
|
14
|
-
* - `workflow_run`: we can trigger a privileged workflow run after the unprivileged
|
|
15
|
-
* `pull_request` workflow finishes and reuse its output artifacts. The
|
|
16
|
-
* problem is that the second run is disconnected from the PR so we would need
|
|
17
|
-
* to script in visibility for approvals and success (by posting comments, for
|
|
18
|
-
* example)
|
|
19
|
-
* - Use only a `pull_request_target` workflow on the PR: this either would run
|
|
20
|
-
* a privileged workflow on any user code submission (might be fine given the
|
|
21
|
-
* workflow's `permissions`, but I'm sure this will make our security team uneasy
|
|
22
|
-
* anyway), OR this would mean any build needs human confirmation which means slow
|
|
23
|
-
* feedback.
|
|
24
|
-
* - Use a `pull_request` for a regular fast-feedback build, and a separate
|
|
25
|
-
* `pull_request_target` for the integ tests. This means we're building twice.
|
|
26
|
-
*
|
|
27
|
-
* Ultimately, our build isn't heavy enough to put in a lot of effort deduping
|
|
28
|
-
* it, so we'll go with the simplest solution which is the last one: 2
|
|
29
|
-
* independent workflows.
|
|
30
|
-
*
|
|
31
|
-
* projen doesn't make it easy to copy the relevant parts of the 'build' workflow,
|
|
32
|
-
* so they're unfortunately duplicated here.
|
|
33
|
-
*/
|
|
34
|
-
class CdkCliIntegTestsWorkflow extends projen_1.Component {
|
|
35
|
-
constructor(repo, props) {
|
|
36
|
-
super(repo);
|
|
37
|
-
const buildWorkflow = repo.buildWorkflow;
|
|
38
|
-
const runTestsWorkflow = repo.github?.addWorkflow('integ');
|
|
39
|
-
if (!buildWorkflow || !runTestsWorkflow) {
|
|
40
|
-
throw new Error('Expected build and run tests workflow');
|
|
41
|
-
}
|
|
42
|
-
buildWorkflow.workflow;
|
|
43
|
-
props.allowUpstreamVersions?.forEach((pack) => {
|
|
44
|
-
if (!props.localPackages.includes(pack)) {
|
|
45
|
-
throw new Error(`Package in allowUpstreamVersions but not in localPackages: ${pack}`);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
let maxWorkersArg = '';
|
|
49
|
-
if (props.maxWorkers) {
|
|
50
|
-
maxWorkersArg = ` --maxWorkers=${props.maxWorkers}`;
|
|
51
|
-
}
|
|
52
|
-
runTestsWorkflow.on({
|
|
53
|
-
pullRequestTarget: {
|
|
54
|
-
branches: ['main'],
|
|
55
|
-
},
|
|
56
|
-
// Needs to trigger and report success on merge queue builds as well
|
|
57
|
-
mergeGroup: {},
|
|
58
|
-
// Never hurts to be able to run this manually
|
|
59
|
-
workflowDispatch: {},
|
|
60
|
-
});
|
|
61
|
-
// The 'build' part runs on the 'integ-approval' environment, which requires
|
|
62
|
-
// approval. The actual runs access the real environment, not requiring approval
|
|
63
|
-
// anymore.
|
|
64
|
-
//
|
|
65
|
-
// This is for 2 reasons:
|
|
66
|
-
// - The build job is the first one that runs. That means you get asked approval
|
|
67
|
-
// immediately after push, instead of 5 minutes later after the build completes.
|
|
68
|
-
// - The build job is only one job, versus the tests which are a matrix build.
|
|
69
|
-
// If the matrix test job needs approval, the Pull Request timeline gets spammed
|
|
70
|
-
// with an approval request for every individual run.
|
|
71
|
-
const JOB_PREPARE = 'prepare';
|
|
72
|
-
runTestsWorkflow.addJob(JOB_PREPARE, {
|
|
73
|
-
environment: props.approvalEnvironment,
|
|
74
|
-
runsOn: [props.buildRunsOn],
|
|
75
|
-
permissions: {
|
|
76
|
-
contents: projen_1.github.workflows.JobPermission.READ,
|
|
77
|
-
},
|
|
78
|
-
env: {
|
|
79
|
-
CI: 'true',
|
|
80
|
-
},
|
|
81
|
-
// Don't run again on the merge queue, we already got confirmation that it works and the
|
|
82
|
-
// tests are quite expensive.
|
|
83
|
-
if: `github.event_name != 'merge_group' && ${NOT_FLAGGED_EXPR}`,
|
|
84
|
-
steps: [
|
|
85
|
-
{
|
|
86
|
-
name: 'Checkout',
|
|
87
|
-
uses: 'actions/checkout@v4',
|
|
88
|
-
with: {
|
|
89
|
-
// IMPORTANT! This must be `head.sha` not `head.ref`, otherwise we
|
|
90
|
-
// are vulnerable to a TOCTOU attack.
|
|
91
|
-
ref: '${{ github.event.pull_request.head.sha }}',
|
|
92
|
-
repository: '${{ github.event.pull_request.head.repo.full_name }}',
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
// We used to fetch tags from the repo using 'checkout', but if it's a fork
|
|
96
|
-
// the tags won't be there, so we have to fetch them from upstream.
|
|
97
|
-
//
|
|
98
|
-
// The tags are necessary to realistically bump versions
|
|
99
|
-
{
|
|
100
|
-
name: 'Fetch tags from origin repo',
|
|
101
|
-
run: [
|
|
102
|
-
// Can be either aws/aws-cdk-cli or aws/aws-cdk-cli-testing
|
|
103
|
-
// (Must clone over HTTPS because we have no SSH auth set up)
|
|
104
|
-
`git remote add upstream https://github.com/${props.sourceRepo}.git`,
|
|
105
|
-
'git fetch upstream \'refs/tags/*:refs/tags/*\'',
|
|
106
|
-
].join('\n'),
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: 'Setup Node.js',
|
|
110
|
-
uses: 'actions/setup-node@v4',
|
|
111
|
-
with: {
|
|
112
|
-
'node-version': 'lts/*',
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
name: 'Install dependencies',
|
|
117
|
-
run: 'yarn install --check-files',
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
name: 'Bump to realistic versions',
|
|
121
|
-
run: 'yarn workspaces run bump',
|
|
122
|
-
env: {
|
|
123
|
-
TESTING_CANDIDATE: 'true',
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
name: 'build',
|
|
128
|
-
run: 'npx projen build',
|
|
129
|
-
env: {
|
|
130
|
-
// This is necessary to prevent projen from resetting the version numbers to
|
|
131
|
-
// 0.0.0 during its synthesis.
|
|
132
|
-
RELEASE: 'true',
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
name: 'Upload artifact',
|
|
137
|
-
uses: 'actions/upload-artifact@v4.4.0',
|
|
138
|
-
with: {
|
|
139
|
-
name: 'build-artifact',
|
|
140
|
-
path: 'packages/**/dist/js/*.tgz',
|
|
141
|
-
overwrite: 'true',
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
],
|
|
145
|
-
});
|
|
146
|
-
const verdaccioConfig = {
|
|
147
|
-
storage: './storage',
|
|
148
|
-
auth: { htpasswd: { file: './htpasswd' } },
|
|
149
|
-
uplinks: { npmjs: { url: 'https://registry.npmjs.org/' } },
|
|
150
|
-
packages: {},
|
|
151
|
-
};
|
|
152
|
-
for (const pack of props.localPackages) {
|
|
153
|
-
const allowUpstream = props.allowUpstreamVersions?.includes(pack);
|
|
154
|
-
verdaccioConfig.packages[pack] = {
|
|
155
|
-
access: '$all',
|
|
156
|
-
publish: '$all',
|
|
157
|
-
proxy: allowUpstream ? 'npmjs' : 'none',
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
;
|
|
161
|
-
verdaccioConfig.packages['**'] = {
|
|
162
|
-
access: '$all',
|
|
163
|
-
proxy: 'npmjs',
|
|
164
|
-
};
|
|
165
|
-
// bash only expands {...} if there's a , in there, otherwise it will leave the
|
|
166
|
-
// braces in literally. So we need to do case analysis here. Thanks, I hate it.
|
|
167
|
-
const tarballBashExpr = props.localPackages.length === 1
|
|
168
|
-
? `packages/${props.localPackages[0]}/dist/js/*.tgz`
|
|
169
|
-
: `packages/{${props.localPackages.join(',')}}/dist/js/*.tgz`;
|
|
170
|
-
// We create a matrix job for the test.
|
|
171
|
-
// This job will run all the different test suites in parallel.
|
|
172
|
-
const JOB_INTEG_MATRIX = 'integ_matrix';
|
|
173
|
-
runTestsWorkflow.addJob(JOB_INTEG_MATRIX, {
|
|
174
|
-
environment: props.testEnvironment,
|
|
175
|
-
runsOn: [props.testRunsOn],
|
|
176
|
-
needs: [JOB_PREPARE],
|
|
177
|
-
permissions: {
|
|
178
|
-
contents: projen_1.github.workflows.JobPermission.READ,
|
|
179
|
-
idToken: projen_1.github.workflows.JobPermission.WRITE,
|
|
180
|
-
},
|
|
181
|
-
env: {
|
|
182
|
-
// Otherwise Maven is too noisy
|
|
183
|
-
MAVEN_ARGS: '--no-transfer-progress',
|
|
184
|
-
// This is not actually a canary, but this prevents the tests from making
|
|
185
|
-
// assumptions about the availability of source packages.
|
|
186
|
-
IS_CANARY: 'true',
|
|
187
|
-
CI: 'true',
|
|
188
|
-
// This is necessary because the new versioning of @aws-cdk/cli-lib-alpha
|
|
189
|
-
// matches the CLI and not the framework.
|
|
190
|
-
CLI_LIB_VERSION_MIRRORS_CLI: 'true',
|
|
191
|
-
},
|
|
192
|
-
// Don't run again on the merge queue, we already got confirmation that it works and the
|
|
193
|
-
// tests are quite expensive.
|
|
194
|
-
if: `github.event_name != 'merge_group' && ${NOT_FLAGGED_EXPR}`,
|
|
195
|
-
strategy: {
|
|
196
|
-
failFast: false,
|
|
197
|
-
matrix: {
|
|
198
|
-
domain: {
|
|
199
|
-
suite: [
|
|
200
|
-
'cli-integ-tests',
|
|
201
|
-
'init-csharp',
|
|
202
|
-
'init-fsharp',
|
|
203
|
-
'init-go',
|
|
204
|
-
'init-java',
|
|
205
|
-
'init-javascript',
|
|
206
|
-
'init-python',
|
|
207
|
-
'init-typescript-app',
|
|
208
|
-
'init-typescript-lib',
|
|
209
|
-
'tool-integrations',
|
|
210
|
-
],
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
steps: [
|
|
215
|
-
{
|
|
216
|
-
name: 'Download build artifacts',
|
|
217
|
-
uses: 'actions/download-artifact@v4',
|
|
218
|
-
with: {
|
|
219
|
-
name: 'build-artifact',
|
|
220
|
-
path: 'packages',
|
|
221
|
-
},
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
name: 'Set up JDK 18',
|
|
225
|
-
if: 'matrix.suite == \'init-java\' || matrix.suite == \'cli-integ-tests\'',
|
|
226
|
-
uses: 'actions/setup-java@v4',
|
|
227
|
-
with: {
|
|
228
|
-
'java-version': '18',
|
|
229
|
-
'distribution': 'corretto',
|
|
230
|
-
},
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
name: 'Authenticate Via OIDC Role',
|
|
234
|
-
id: 'creds',
|
|
235
|
-
uses: 'aws-actions/configure-aws-credentials@v4',
|
|
236
|
-
with: {
|
|
237
|
-
'aws-region': 'us-east-1',
|
|
238
|
-
'role-duration-seconds': props.enableAtmosphere ? 60 * 60 : 4 * 60 * 60,
|
|
239
|
-
// Expect this in Environment Variables
|
|
240
|
-
'role-to-assume': props.enableAtmosphere ? props.enableAtmosphere.oidcRoleArn : '${{ vars.AWS_ROLE_TO_ASSUME_FOR_TESTING }}',
|
|
241
|
-
'role-session-name': 'run-tests@aws-cdk-cli-integ',
|
|
242
|
-
'output-credentials': true,
|
|
243
|
-
},
|
|
244
|
-
},
|
|
245
|
-
// This is necessary for the init tests to succeed, they set up a git repo.
|
|
246
|
-
{
|
|
247
|
-
name: 'Set git identity',
|
|
248
|
-
run: [
|
|
249
|
-
'git config --global user.name "aws-cdk-cli-integ"',
|
|
250
|
-
'git config --global user.email "noreply@example.com"',
|
|
251
|
-
].join('\n'),
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
name: 'Install Verdaccio',
|
|
255
|
-
run: 'npm install -g verdaccio pm2',
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
name: 'Create Verdaccio config',
|
|
259
|
-
run: [
|
|
260
|
-
'mkdir -p $HOME/.config/verdaccio',
|
|
261
|
-
`echo '${JSON.stringify(verdaccioConfig)}' > $HOME/.config/verdaccio/config.yaml`,
|
|
262
|
-
].join('\n'),
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
name: 'Start Verdaccio',
|
|
266
|
-
run: [
|
|
267
|
-
'pm2 start verdaccio -- --config $HOME/.config/verdaccio/config.yaml',
|
|
268
|
-
'sleep 5 # Wait for Verdaccio to start',
|
|
269
|
-
].join('\n'),
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
name: 'Configure npm to use local registry',
|
|
273
|
-
run: [
|
|
274
|
-
// This token is a bogus token. It doesn't represent any actual secret, it just needs to exist.
|
|
275
|
-
'echo \'//localhost:4873/:_authToken="MWRjNDU3OTE1NTljYWUyOTFkMWJkOGUyYTIwZWMwNTI6YTgwZjkyNDE0NzgwYWQzNQ=="\' > ~/.npmrc',
|
|
276
|
-
'echo \'registry=http://localhost:4873/\' >> ~/.npmrc',
|
|
277
|
-
].join('\n'),
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
name: 'Find an locally publish all tarballs',
|
|
281
|
-
run: [
|
|
282
|
-
`for pkg in ${tarballBashExpr}; do`,
|
|
283
|
-
' npm publish $pkg',
|
|
284
|
-
'done',
|
|
285
|
-
].join('\n'),
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
name: 'Download and install the test artifact',
|
|
289
|
-
run: [
|
|
290
|
-
'npm install @aws-cdk-testing/cli-integ',
|
|
291
|
-
// Move the installed files to the current directory, because as
|
|
292
|
-
// currently configured the tests won't run from an installed
|
|
293
|
-
// node_modules directory.
|
|
294
|
-
'mv ./node_modules/@aws-cdk-testing/cli-integ/* .',
|
|
295
|
-
].join('\n'),
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
name: 'Determine latest package versions',
|
|
299
|
-
id: 'versions',
|
|
300
|
-
run: [
|
|
301
|
-
'CLI_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk version)',
|
|
302
|
-
'echo "CLI version: ${CLI_VERSION}"',
|
|
303
|
-
'echo "cli_version=${CLI_VERSION}" >> $GITHUB_OUTPUT',
|
|
304
|
-
'LIB_VERSION=$(cd ${TMPDIR:-/tmp} && npm view aws-cdk-lib version)',
|
|
305
|
-
'echo "lib version: ${LIB_VERSION}"',
|
|
306
|
-
'echo "lib_version=${LIB_VERSION}" >> $GITHUB_OUTPUT',
|
|
307
|
-
].join('\n'),
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
name: 'Run the test suite: ${{ matrix.suite }}',
|
|
311
|
-
run: [
|
|
312
|
-
`bin/run-suite${maxWorkersArg} --use-cli-release=\${{ steps.versions.outputs.cli_version }} --framework-version=\${{ steps.versions.outputs.lib_version }} \${{ matrix.suite }}`,
|
|
313
|
-
].join('\n'),
|
|
314
|
-
env: {
|
|
315
|
-
JSII_SILENCE_WARNING_DEPRECATED_NODE_VERSION: 'true',
|
|
316
|
-
JSII_SILENCE_WARNING_UNTESTED_NODE_VERSION: 'true',
|
|
317
|
-
JSII_SILENCE_WARNING_KNOWN_BROKEN_NODE_VERSION: 'true',
|
|
318
|
-
DOCKERHUB_DISABLED: 'true',
|
|
319
|
-
...(props.enableAtmosphere ?
|
|
320
|
-
{
|
|
321
|
-
CDK_INTEG_ATMOSPHERE_ENABLED: 'true',
|
|
322
|
-
CDK_INTEG_ATMOSPHERE_ENDPOINT: props.enableAtmosphere.endpoint,
|
|
323
|
-
CDK_INTEG_ATMOSPHERE_POOL: props.enableAtmosphere.pool,
|
|
324
|
-
} :
|
|
325
|
-
{
|
|
326
|
-
AWS_REGIONS: ['us-east-2', 'eu-west-1', 'eu-north-1', 'ap-northeast-1', 'ap-south-1'].join(','),
|
|
327
|
-
}),
|
|
328
|
-
CDK_MAJOR_VERSION: '2',
|
|
329
|
-
RELEASE_TAG: 'latest',
|
|
330
|
-
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}',
|
|
331
|
-
},
|
|
332
|
-
},
|
|
333
|
-
],
|
|
334
|
-
});
|
|
335
|
-
// Add a job that collates all matrix jobs into a single status
|
|
336
|
-
// This is required so that we can setup required status checks
|
|
337
|
-
// and if we ever change the test matrix, we don't need to update
|
|
338
|
-
// the status check configuration.
|
|
339
|
-
runTestsWorkflow.addJob('integ', {
|
|
340
|
-
permissions: {},
|
|
341
|
-
runsOn: [props.testRunsOn],
|
|
342
|
-
needs: [JOB_PREPARE, JOB_INTEG_MATRIX],
|
|
343
|
-
if: 'always()',
|
|
344
|
-
steps: [
|
|
345
|
-
{
|
|
346
|
-
name: 'Integ test result',
|
|
347
|
-
run: `echo \${{ needs.${JOB_INTEG_MATRIX}.result }}`,
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
// Don't fail the job if the test was successful or intentionally skipped
|
|
351
|
-
if: `\${{ !(contains(fromJSON('["success", "skipped"]'), needs.${JOB_PREPARE}.result) && contains(fromJSON('["success", "skipped"]'), needs.${JOB_INTEG_MATRIX}.result)) }}`,
|
|
352
|
-
name: 'Set status based on matrix job',
|
|
353
|
-
run: 'exit 1',
|
|
354
|
-
},
|
|
355
|
-
],
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
exports.CdkCliIntegTestsWorkflow = CdkCliIntegTestsWorkflow;
|
|
360
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
361
|
-
CdkCliIntegTestsWorkflow[_a] = { fqn: "cdklabs-projen-project-types.CdkCliIntegTestsWorkflow", version: "0.2.15" };
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNsaS1pbnRlZy10ZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZGstY2xpLWludGVnLXRlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQXVEO0FBRXZELE1BQU0sZ0JBQWdCLEdBQUcsNEVBQTRFLENBQUM7QUFxRnRHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBYSx3QkFBeUIsU0FBUSxrQkFBUztJQUNyRCxZQUFZLElBQTRCLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRVosTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0MsYUFBcUIsQ0FBQyxRQUFrQyxDQUFDO1FBRTNELEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsYUFBYSxHQUFHLGlCQUFpQixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEQsQ0FBQztRQUVELGdCQUFnQixDQUFDLEVBQUUsQ0FB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QVcsRUFBRSxRQUFRO3dCQUNyQixZQUFZLEVBQUUsNkJBQTZCO3FCQUM1QztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsK0RBQStEO1FBQy9ELCtEQUErRDtRQUMvRCxpRUFBaUU7UUFDakUsa0NBQWtDO1FBQ2xDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDL0IsV0FBVyxFQUFFLEVBQUU7WUFDZixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQzFCLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztZQUN0QyxFQUFFLEVBQUUsVUFBVTtZQUNkLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixHQUFHLEVBQUUsbUJBQW1CLGdCQUFnQixZQUFZO2lCQUNyRDtnQkFDRDtvQkFDRSx5RUFBeUU7b0JBQ3pFLEVBQUUsRUFBRSw2REFBNkQsV0FBVyxrRUFBa0UsZ0JBQWdCLGNBQWM7b0JBQzVLLElBQUksRUFBRSxnQ0FBZ0M7b0JBQ3RDLEdBQUcsRUFBRSxRQUFRO2lCQUNkO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTVVSCw0REE2VUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGdpdGh1YiwgamF2YXNjcmlwdCB9IGZyb20gJ3Byb2plbic7XG5cbmNvbnN0IE5PVF9GTEFHR0VEX0VYUFIgPSBcIiFjb250YWlucyhnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmxhYmVscy4qLm5hbWUsICdwci9leGVtcHQtaW50ZWctdGVzdCcpXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYXRtb3NwaGVyZSBzZXJ2aWNlIHVzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0bW9zcGhlcmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEF0bW9zcGhlcmUgc2VydmljZSBlbmRwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGljaCBwb29sIHRvIHJldHJpZXZlIGVudmlyb25tZW50cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9vbDogc3RyaW5nO1xuICAvKipcbiAgICogT0lEQyByb2xlIHRvIGFzc3VtZSBwcmlvciB0byB1c2luZyBhdG1vc3BoZXJlLiBNdXN0IGJlIGFsbG93IGxpc3RlZFxuICAgKiBvbiB0aGUgc2VydmljZSBlbmRwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrQ2xpSW50ZWdUZXN0c1dvcmtmbG93UHJvcHMge1xuICAvKipcbiAgICogUnVubmVycyBmb3IgdGhlIHdvcmtmbG93XG4gICAqL1xuICByZWFkb25seSBidWlsZFJ1bnNPbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSdW5uZXJzIGZvciB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RSdW5zT246IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIGVudmlyb25tZW50IG5hbWUgZm9yIGFwcHJvdmFsc1xuICAgKlxuICAgKiBNVVNUIGJlIGNvbmZpZ3VyZWQgdG8gcmVxdWlyZSBtYW51YWwgYXBwcm92YWwuXG4gICAqL1xuICByZWFkb25seSBhcHByb3ZhbEVudmlyb25tZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBlbnZpcm9ubWVudCBuYW1lIGZvciBydW5uaW5nIHRoZSB0ZXN0c1xuICAgKlxuICAgKiBNVVNUIGJlIGNvbmZpZ3VyZWQgd2l0aG91dCBhcHByb3ZhbHMsIGFuZCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFycyBhbmQgc2VjcmV0czpcbiAgICpcbiAgICogLSB2YXJzOiBBV1NfUk9MRV9UT19BU1NVTUVfRk9SX1RFU1RJTkdcbiAgICpcbiAgICogQW5kIHRoZSByb2xlIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIEFzc3VtZVJvbGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdEVudmlyb25tZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhY2thZ2VzIHRoYXQgYXJlIGxvY2FsbHkgdHJhbnNmZXJlZCAod2Ugd2lsbCBuZXZlciB1c2UgdGhlIHVwc3RyZWFtIHZlcnNpb25zKVxuICAgKlxuICAgKiBUYWtlcyBwYWNrYWdlIG5hbWVzOyB0aGVzZSBhcmUgZXhwZWN0ZWQgdG8gbGl2ZSBpbiBgcGFja2FnZXMvPE5BTUU+L2Rpc3QvanNgLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxQYWNrYWdlczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZpY2lhbCByZXBvIHRoaXMgd29ya2Zsb3cgaXMgdXNlZCBmb3JcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVJlcG86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgZ2l2ZW4sIGFsbG93cyBhY2Nlc3NpbmcgdXBzdHJlYW0gdmVyc2lvbnMgb2YgdGhlc2UgcGFja2FnZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB1cHN0cmVhbSB2ZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVcHN0cmVhbVZlcnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhdG1vc3BoZXJlIHNlcnZpY2UgdG8gcmV0cmlldmUgQVdTIHRlc3QgZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF0bW9zcGhlcmUgaXMgbm90IHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUF0bW9zcGhlcmU/OiBBdG1vc3BoZXJlT3B0aW9ucztcblxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgdGhlIHdvcmtlci1wb29sIHdpbGwgc3Bhd24gZm9yIHJ1bm5pbmcgdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGNsaSBpbnRlZyB0ZXN0IHBhY2thZ2UgZGV0ZXJtaW5lcyBhIHNlbnNpYmxlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IG1heFdvcmtlcnM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWRkIGEgd29ya2Zsb3cgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzXG4gKlxuICogVGhpcyBNVVNUIGJlIGEgc2VwYXJhdGUgd29ya2Zsb3cgdGhhdCBydW5zIGluIHByaXZpbGVnZWQgY29udGV4dC4gV2UgaGF2ZSBhIGNvdXBsZVxuICogb2Ygb3B0aW9uczpcbiAqXG4gKiAtIGB3b3JrZmxvd19ydW5gOiB3ZSBjYW4gdHJpZ2dlciBhIHByaXZpbGVnZWQgd29ya2Zsb3cgcnVuIGFmdGVyIHRoZSB1bnByaXZpbGVnZWRcbiAqICAgYHB1bGxfcmVxdWVzdGAgd29ya2Zsb3cgZmluaXNoZXMgYW5kIHJldXNlIGl0cyBvdXRwdXQgYXJ0aWZhY3RzLiBUaGVcbiAqICAgcHJvYmxlbSBpcyB0aGF0IHRoZSBzZWNvbmQgcnVuIGlzIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBQUiBzbyB3ZSB3b3VsZCBuZWVkXG4gKiAgIHRvIHNjcmlwdCBpbiB2aXNpYmlsaXR5IGZvciBhcHByb3ZhbHMgYW5kIHN1Y2Nlc3MgKGJ5IHBvc3RpbmcgY29tbWVudHMsIGZvclxuICogICBleGFtcGxlKVxuICogLSBVc2Ugb25seSBhIGBwdWxsX3JlcXVlc3RfdGFyZ2V0YCB3b3JrZmxvdyBvbiB0aGUgUFI6IHRoaXMgZWl0aGVyIHdvdWxkIHJ1blxuICogICBhIHByaXZpbGVnZWQgd29ya2Zsb3cgb24gYW55IHVzZXIgY29kZSBzdWJtaXNzaW9uIChtaWdodCBiZSBmaW5lIGdpdmVuIHRoZVxuICogICB3b3JrZmxvdydzIGBwZXJtaXNzaW9uc2AsIGJ1dCBJJ20gc3VyZSB0aGlzIHdpbGwgbWFrZSBvdXIgc2VjdXJpdHkgdGVhbSB1bmVhc3lcbiAqICAgYW55d2F5KSwgT1IgdGhpcyB3b3VsZCBtZWFuIGFueSBidWlsZCBuZWVkcyBodW1hbiBjb25maXJtYXRpb24gd2hpY2ggbWVhbnMgc2xvd1xuICogICBmZWVkYmFjay5cbiAqIC0gVXNlIGEgYHB1bGxfcmVxdWVzdGAgZm9yIGEgcmVndWxhciBmYXN0LWZlZWRiYWNrIGJ1aWxkLCBhbmQgYSBzZXBhcmF0ZVxuICogICBgcHVsbF9yZXF1ZXN0X3RhcmdldGAgZm9yIHRoZSBpbnRlZyB0ZXN0cy4gVGhpcyBtZWFucyB3ZSdyZSBidWlsZGluZyB0d2ljZS5cbiAqXG4gKiBVbHRpbWF0ZWx5LCBvdXIgYnVpbGQgaXNuJ3QgaGVhdnkgZW5vdWdoIHRvIHB1dCBpbiBhIGxvdCBvZiBlZmZvcnQgZGVkdXBpbmdcbiAqIGl0LCBzbyB3ZSdsbCBnbyB3aXRoIHRoZSBzaW1wbGVzdCBzb2x1dGlvbiB3aGljaCBpcyB0aGUgbGFzdCBvbmU6IDJcbiAqIGluZGVwZW5kZW50IHdvcmtmbG93cy5cbiAqXG4gKiBwcm9qZW4gZG9lc24ndCBtYWtlIGl0IGVhc3kgdG8gY29weSB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlICdidWlsZCcgd29ya2Zsb3csXG4gKiBzbyB0aGV5J3JlIHVuZm9ydHVuYXRlbHkgZHVwbGljYXRlZCBoZXJlLlxuICovXG5leHBvcnQgY2xhc3MgQ2RrQ2xpSW50ZWdUZXN0c1dvcmtmbG93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocmVwbzogamF2YXNjcmlwdC5Ob2RlUHJvamVjdCwgcHJvcHM6IENka0NsaUludGVnVGVzdHNXb3JrZmxvd1Byb3BzKSB7XG4gICAgc3VwZXIocmVwbyk7XG5cbiAgICBjb25zdCBidWlsZFdvcmtmbG93ID0gcmVwby5idWlsZFdvcmtmbG93O1xuICAgIGNvbnN0IHJ1blRlc3RzV29ya2Zsb3cgPSByZXBvLmdpdGh1Yj8uYWRkV29ya2Zsb3coJ2ludGVnJyk7XG4gICAgaWYgKCFidWlsZFdvcmtmbG93IHx8ICFydW5UZXN0c1dvcmtmbG93KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGJ1aWxkIGFuZCBydW4gdGVzdHMgd29ya2Zsb3cnKTtcbiAgICB9XG4gICAgKChidWlsZFdvcmtmbG93IGFzIGFueSkud29ya2Zsb3cgYXMgZ2l0aHViLkdpdGh1YldvcmtmbG93KTtcblxuICAgIHByb3BzLmFsbG93VXBzdHJlYW1WZXJzaW9ucz8uZm9yRWFjaCgocGFjaykgPT4ge1xuICAgICAgaWYgKCFwcm9wcy5sb2NhbFBhY2thZ2VzLmluY2x1ZGVzKHBhY2spKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGFja2FnZSBpbiBhbGxvd1Vwc3RyZWFtVmVyc2lvbnMgYnV0IG5vdCBpbiBsb2NhbFBhY2thZ2VzOiAke3BhY2t9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgbWF4V29ya2Vyc0FyZyA9ICcnO1xuICAgIGlmIChwcm9wcy5tYXhXb3JrZXJzKSB7XG4gICAgICBtYXhXb3JrZXJzQXJnID0gYCAtLW1heFdvcmtlcnM9JHtwcm9wcy5tYXhXb3JrZXJzfWA7XG4gICAgfVxuXG4gICAgcnVuVGVzdHNXb3JrZmxvdy5vbih7XG4gICAgICBwdWxsUmVxdWVzdFRhcmdldDoge1xuICAgICAgICBicmFuY2hlczogWydtYWluJ10sXG4gICAgICB9LFxuICAgICAgLy8gTmVlZHMgdG8gdHJpZ2dlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgb24gbWVyZ2UgcXVldWUgYnVpbGRzIGFzIHdlbGxcbiAgICAgIG1lcmdlR3JvdXA6IHt9LFxuICAgICAgLy8gTmV2ZXIgaHVydHMgdG8gYmUgYWJsZSB0byBydW4gdGhpcyBtYW51YWxseVxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG4gICAgLy8gVGhlICdidWlsZCcgcGFydCBydW5zIG9uIHRoZSAnaW50ZWctYXBwcm92YWwnIGVudmlyb25tZW50LCB3aGljaCByZXF1aXJlc1xuICAgIC8vIGFwcHJvdmFsLiBUaGUgYWN0dWFsIHJ1bnMgYWNjZXNzIHRoZSByZWFsIGVudmlyb25tZW50LCBub3QgcmVxdWlyaW5nIGFwcHJvdmFsXG4gICAgLy8gYW55bW9yZS5cbiAgICAvL1xuICAgIC8vIFRoaXMgaXMgZm9yIDIgcmVhc29uczpcbiAgICAvLyAtIFRoZSBidWlsZCBqb2IgaXMgdGhlIGZpcnN0IG9uZSB0aGF0IHJ1bnMuIFRoYXQgbWVhbnMgeW91IGdldCBhc2tlZCBhcHByb3ZhbFxuICAgIC8vICAgaW1tZWRpYXRlbHkgYWZ0ZXIgcHVzaCwgaW5zdGVhZCBvZiA1IG1pbnV0ZXMgbGF0ZXIgYWZ0ZXIgdGhlIGJ1aWxkIGNvbXBsZXRlcy5cbiAgICAvLyAtIFRoZSBidWlsZCBqb2IgaXMgb25seSBvbmUgam9iLCB2ZXJzdXMgdGhlIHRlc3RzIHdoaWNoIGFyZSBhIG1hdHJpeCBidWlsZC5cbiAgICAvLyAgIElmIHRoZSBtYXRyaXggdGVzdCBqb2IgbmVlZHMgYXBwcm92YWwsIHRoZSBQdWxsIFJlcXVlc3QgdGltZWxpbmUgZ2V0cyBzcGFtbWVkXG4gICAgLy8gICB3aXRoIGFuIGFwcHJvdmFsIHJlcXVlc3QgZm9yIGV2ZXJ5IGluZGl2aWR1YWwgcnVuLlxuICAgIGNvbnN0IEpPQl9QUkVQQVJFID0gJ3ByZXBhcmUnO1xuICAgIHJ1blRlc3RzV29ya2Zsb3cuYWRkSm9iKEpPQl9QUkVQQVJFLCB7XG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuYXBwcm92YWxFbnZpcm9ubWVudCxcbiAgICAgIHJ1bnNPbjogW3Byb3BzLmJ1aWxkUnVuc09uXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgIH0sXG4gICAgICAvLyBEb24ndCBydW4gYWdhaW4gb24gdGhlIG1lcmdlIHF1ZXVlLCB3ZSBhbHJlYWR5IGdvdCBjb25maXJtYXRpb24gdGhhdCBpdCB3b3JrcyBhbmQgdGhlXG4gICAgICAvLyB0ZXN0cyBhcmUgcXVpdGUgZXhwZW5zaXZlLlxuICAgICAgaWY6IGBnaXRodWIuZXZlbnRfbmFtZSAhPSAnbWVyZ2VfZ3JvdXAnICYmICR7Tk9UX0ZMQUdHRURfRVhQUn1gLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIC8vIElNUE9SVEFOVCEgVGhpcyBtdXN0IGJlIGBoZWFkLnNoYWAgbm90IGBoZWFkLnJlZmAsIG90aGVyd2lzZSB3ZVxuICAgICAgICAgICAgLy8gYXJlIHZ1bG5lcmFibGUgdG8gYSBUT0NUT1UgYXR0YWNrLlxuICAgICAgICAgICAgcmVmOiAnJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QuaGVhZC5zaGEgfX0nLFxuICAgICAgICAgICAgcmVwb3NpdG9yeTogJyR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmhlYWQucmVwby5mdWxsX25hbWUgfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdlIHVzZWQgdG8gZmV0Y2ggdGFncyBmcm9tIHRoZSByZXBvIHVzaW5nICdjaGVja291dCcsIGJ1dCBpZiBpdCdzIGEgZm9ya1xuICAgICAgICAvLyB0aGUgdGFncyB3b24ndCBiZSB0aGVyZSwgc28gd2UgaGF2ZSB0byBmZXRjaCB0aGVtIGZyb20gdXBzdHJlYW0uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSB0YWdzIGFyZSBuZWNlc3NhcnkgdG8gcmVhbGlzdGljYWxseSBidW1wIHZlcnNpb25zXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRmV0Y2ggdGFncyBmcm9tIG9yaWdpbiByZXBvJyxcbiAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgIC8vIENhbiBiZSBlaXRoZXIgYXdzL2F3cy1jZGstY2xpIG9yIGF3cy9hd3MtY2RrLWNsaS10ZXN0aW5nXG4gICAgICAgICAgICAvLyAoTXVzdCBjbG9uZSBvdmVyIEhUVFBTIGJlY2F1c2Ugd2UgaGF2ZSBubyBTU0ggYXV0aCBzZXQgdXApXG4gICAgICAgICAgICBgZ2l0IHJlbW90ZSBhZGQgdXBzdHJlYW0gaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMuc291cmNlUmVwb30uZ2l0YCxcbiAgICAgICAgICAgICdnaXQgZmV0Y2ggdXBzdHJlYW0gXFwncmVmcy90YWdzLyo6cmVmcy90YWdzLypcXCcnLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ25vZGUtdmVyc2lvbic6ICdsdHMvKicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgcnVuOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0J1bXAgdG8gcmVhbGlzdGljIHZlcnNpb25zJyxcbiAgICAgICAgICBydW46ICd5YXJuIHdvcmtzcGFjZXMgcnVuIGJ1bXAnLFxuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgVEVTVElOR19DQU5ESURBVEU6ICd0cnVlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2J1aWxkJyxcbiAgICAgICAgICBydW46ICducHggcHJvamVuIGJ1aWxkJyxcbiAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgcHJvamVuIGZyb20gcmVzZXR0aW5nIHRoZSB2ZXJzaW9uIG51bWJlcnMgdG9cbiAgICAgICAgICAgIC8vIDAuMC4wIGR1cmluZyBpdHMgc3ludGhlc2lzLlxuICAgICAgICAgICAgUkVMRUFTRTogJ3RydWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnVXBsb2FkIGFydGlmYWN0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjQuNC4wJyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBuYW1lOiAnYnVpbGQtYXJ0aWZhY3QnLFxuICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzLyoqL2Rpc3QvanMvKi50Z3onLFxuICAgICAgICAgICAgb3ZlcndyaXRlOiAndHJ1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2ZXJkYWNjaW9Db25maWcgPSB7XG4gICAgICBzdG9yYWdlOiAnLi9zdG9yYWdlJyxcbiAgICAgIGF1dGg6IHsgaHRwYXNzd2Q6IHsgZmlsZTogJy4vaHRwYXNzd2QnIH0gfSxcbiAgICAgIHVwbGlua3M6IHsgbnBtanM6IHsgdXJsOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyB9IH0sXG4gICAgICBwYWNrYWdlczoge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgcGFjayBvZiBwcm9wcy5sb2NhbFBhY2thZ2VzKSB7XG4gICAgICBjb25zdCBhbGxvd1Vwc3RyZWFtID0gcHJvcHMuYWxsb3dVcHN0cmVhbVZlcnNpb25zPy5pbmNsdWRlcyhwYWNrKTtcblxuICAgICAgdmVyZGFjY2lvQ29uZmlnLnBhY2thZ2VzW3BhY2tdID0ge1xuICAgICAgICBhY2Nlc3M6ICckYWxsJyxcbiAgICAgICAgcHVibGlzaDogJyRhbGwnLFxuICAgICAgICBwcm94eTogYWxsb3dVcHN0cmVhbSA/ICducG1qcycgOiAnbm9uZScsXG4gICAgICB9O1xuICAgIH07XG4gICAgdmVyZGFjY2lvQ29uZmlnLnBhY2thZ2VzWycqKiddID0ge1xuICAgICAgYWNjZXNzOiAnJGFsbCcsXG4gICAgICBwcm94eTogJ25wbWpzJyxcbiAgICB9O1xuXG4gICAgLy8gYmFzaCBvbmx5IGV4cGFuZHMgey4uLn0gaWYgdGhlcmUncyBhICwgaW4gdGhlcmUsIG90aGVyd2lzZSBpdCB3aWxsIGxlYXZlIHRoZVxuICAgIC8vIGJyYWNlcyBpbiBsaXRlcmFsbHkuIFNvIHdlIG5lZWQgdG8gZG8gY2FzZSBhbmFseXNpcyBoZXJlLiBUaGFua3MsIEkgaGF0ZSBpdC5cbiAgICBjb25zdCB0YXJiYWxsQmFzaEV4cHIgPSBwcm9wcy5sb2NhbFBhY2thZ2VzLmxlbmd0aCA9PT0gMVxuICAgICAgPyBgcGFja2FnZXMvJHtwcm9wcy5sb2NhbFBhY2thZ2VzWzBdfS9kaXN0L2pzLyoudGd6YFxuICAgICAgOiBgcGFja2FnZXMveyR7cHJvcHMubG9jYWxQYWNrYWdlcy5qb2luKCcsJyl9fS9kaXN0L2pzLyoudGd6YDtcblxuICAgIC8vIFdlIGNyZWF0ZSBhIG1hdHJpeCBqb2IgZm9yIHRoZSB0ZXN0LlxuICAgIC8vIFRoaXMgam9iIHdpbGwgcnVuIGFsbCB0aGUgZGlmZmVyZW50IHRlc3Qgc3VpdGVzIGluIHBhcmFsbGVsLlxuICAgIGNvbnN0IEpPQl9JTlRFR19NQVRSSVggPSAnaW50ZWdfbWF0cml4JztcbiAgICBydW5UZXN0c1dvcmtmbG93LmFkZEpvYihKT0JfSU5URUdfTUFUUklYLCB7XG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMudGVzdEVudmlyb25tZW50LFxuICAgICAgcnVuc09uOiBbcHJvcHMudGVzdFJ1bnNPbl0sXG4gICAgICBuZWVkczogW0pPQl9QUkVQQVJFXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgaWRUb2tlbjogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIGVudjoge1xuICAgICAgICAvLyBPdGhlcndpc2UgTWF2ZW4gaXMgdG9vIG5vaXN5XG4gICAgICAgIE1BVkVOX0FSR1M6ICctLW5vLXRyYW5zZmVyLXByb2dyZXNzJyxcbiAgICAgICAgLy8gVGhpcyBpcyBub3QgYWN0dWFsbHkgYSBjYW5hcnksIGJ1dCB0aGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIG1ha2luZ1xuICAgICAgICAvLyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgYXZhaWxhYmlsaXR5IG9mIHNvdXJjZSBwYWNrYWdlcy5cbiAgICAgICAgSVNfQ0FOQVJZOiAndHJ1ZScsXG4gICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIG5ldyB2ZXJzaW9uaW5nIG9mIEBhd3MtY2RrL2NsaS1saWItYWxwaGFcbiAgICAgICAgLy8gbWF0Y2hlcyB0aGUgQ0xJIGFuZCBub3QgdGhlIGZyYW1ld29yay5cbiAgICAgICAgQ0xJX0xJQl9WRVJTSU9OX01JUlJPUlNfQ0xJOiAndHJ1ZScsXG4gICAgICB9LFxuICAgICAgLy8gRG9uJ3QgcnVuIGFnYWluIG9uIHRoZSBtZXJnZSBxdWV1ZSwgd2UgYWxyZWFkeSBnb3QgY29uZmlybWF0aW9uIHRoYXQgaXQgd29ya3MgYW5kIHRoZVxuICAgICAgLy8gdGVzdHMgYXJlIHF1aXRlIGV4cGVuc2l2ZS5cbiAgICAgIGlmOiBgZ2l0aHViLmV2ZW50X25hbWUgIT0gJ21lcmdlX2dyb3VwJyAmJiAke05PVF9GTEFHR0VEX0VYUFJ9YCxcbiAgICAgIHN0cmF0ZWd5OiB7XG4gICAgICAgIGZhaWxGYXN0OiBmYWxzZSxcbiAgICAgICAgbWF0cml4OiB7XG4gICAgICAgICAgZG9tYWluOiB7XG4gICAgICAgICAgICBzdWl0ZTogW1xuICAgICAgICAgICAgICAnY2xpLWludGVnLXRlc3RzJyxcbiAgICAgICAgICAgICAgJ2luaXQtY3NoYXJwJyxcbiAgICAgICAgICAgICAgJ2luaXQtZnNoYXJwJyxcbiAgICAgICAgICAgICAgJ2luaXQtZ28nLFxuICAgICAgICAgICAgICAnaW5pdC1qYXZhJyxcbiAgICAgICAgICAgICAgJ2luaXQtamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICdpbml0LXB5dGhvbicsXG4gICAgICAgICAgICAgICdpbml0LXR5cGVzY3JpcHQtYXBwJyxcbiAgICAgICAgICAgICAgJ2luaXQtdHlwZXNjcmlwdC1saWInLFxuICAgICAgICAgICAgICAndG9vbC1pbnRlZ3JhdGlvbnMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRG93bmxvYWQgYnVpbGQgYXJ0aWZhY3RzJyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgbmFtZTogJ2J1aWxkLWFydGlmYWN0JyxcbiAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTZXQgdXAgSkRLIDE4JyxcbiAgICAgICAgICBpZjogJ21hdHJpeC5zdWl0ZSA9PSBcXCdpbml0LWphdmFcXCcgfHwgbWF0cml4LnN1aXRlID09IFxcJ2NsaS1pbnRlZy10ZXN0c1xcJycsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtamF2YUB2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ2phdmEtdmVyc2lvbic6ICcxOCcsXG4gICAgICAgICAgICAnZGlzdHJpYnV0aW9uJzogJ2NvcnJldHRvJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0F1dGhlbnRpY2F0ZSBWaWEgT0lEQyBSb2xlJyxcbiAgICAgICAgICBpZDogJ2NyZWRzJyxcbiAgICAgICAgICB1c2VzOiAnYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0B2NCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiAndXMtZWFzdC0xJyxcbiAgICAgICAgICAgICdyb2xlLWR1cmF0aW9uLXNlY29uZHMnOiBwcm9wcy5lbmFibGVBdG1vc3BoZXJlID8gNjAgKiA2MCA6IDQgKiA2MCAqIDYwLFxuICAgICAgICAgICAgLy8gRXhwZWN0IHRoaXMgaW4gRW52aXJvbm1lbnQgVmFyaWFibGVzXG4gICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBwcm9wcy5lbmFibGVBdG1vc3BoZXJlID8gcHJvcHMuZW5hYmxlQXRtb3NwaGVyZS5vaWRjUm9sZUFybiA6ICcke3sgdmFycy5BV1NfUk9MRV9UT19BU1NVTUVfRk9SX1RFU1RJTkcgfX0nLFxuICAgICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogJ3J1bi10ZXN0c0Bhd3MtY2RrLWNsaS1pbnRlZycsXG4gICAgICAgICAgICAnb3V0cHV0LWNyZWRlbnRpYWxzJzogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGluaXQgdGVzdHMgdG8gc3VjY2VlZCwgdGhleSBzZXQgdXAgYSBnaXQgcmVwby5cbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTZXQgZ2l0IGlkZW50aXR5JyxcbiAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICdnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcImF3cy1jZGstY2xpLWludGVnXCInLFxuICAgICAgICAgICAgJ2dpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcIm5vcmVwbHlAZXhhbXBsZS5jb21cIicsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdJbnN0YWxsIFZlcmRhY2NpbycsXG4gICAgICAgICAgcnVuOiAnbnBtIGluc3RhbGwgLWcgdmVyZGFjY2lvIHBtMicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFZlcmRhY2NpbyBjb25maWcnLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgJ21rZGlyIC1wICRIT01FLy5jb25maWcvdmVyZGFjY2lvJyxcbiAgICAgICAgICAgIGBlY2hvICcke0pTT04uc3RyaW5naWZ5KHZlcmRhY2Npb0NvbmZpZyl9JyA+ICRIT01FLy5jb25maWcvdmVyZGFjY2lvL2NvbmZpZy55YW1sYCxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1N0YXJ0IFZlcmRhY2NpbycsXG4gICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAncG0yIHN0YXJ0IHZlcmRhY2NpbyAtLSAtLWNvbmZpZyAkSE9NRS8uY29uZmlnL3ZlcmRhY2Npby9jb25maWcueWFtbCcsXG4gICAgICAgICAgICAnc2xlZXAgNSAjIFdhaXQgZm9yIFZlcmRhY2NpbyB0byBzdGFydCcsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDb25maWd1cmUgbnBtIHRvIHVzZSBsb2NhbCByZWdpc3RyeScsXG4gICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAvLyBUaGlzIHRva2VuIGlzIGEgYm9ndXMgdG9rZW4uIEl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueSBhY3R1YWwgc2VjcmV0LCBpdCBqdXN0IG5lZWRzIHRvIGV4aXN0LlxuICAgICAgICAgICAgJ2VjaG8gXFwnLy9sb2NhbGhvc3Q6NDg3My86X2F1dGhUb2tlbj1cIk1XUmpORFUzT1RFMU5UbGpZV1V5T1RGa01XSmtPR1V5WVRJd1pXTXdOVEk2WVRnd1pqa3lOREUwTnpnd1lXUXpOUT09XCJcXCcgPiB+Ly5ucG1yYycsXG4gICAgICAgICAgICAnZWNobyBcXCdyZWdpc3RyeT1odHRwOi8vbG9jYWxob3N0OjQ4NzMvXFwnID4+IH4vLm5wbXJjJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ZpbmQgYW4gbG9jYWxseSBwdWJsaXNoIGFsbCB0YXJiYWxscycsXG4gICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICBgZm9yIHBrZyBpbiAke3RhcmJhbGxCYXNoRXhwcn07IGRvYCxcbiAgICAgICAgICAgICcgIG5wbSBwdWJsaXNoICRwa2cnLFxuICAgICAgICAgICAgJ2RvbmUnLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIHRlc3QgYXJ0aWZhY3QnLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgJ25wbSBpbnN0YWxsIEBhd3MtY2RrLXRlc3RpbmcvY2xpLWludGVnJyxcbiAgICAgICAgICAgIC8vIE1vdmUgdGhlIGluc3RhbGxlZCBmaWxlcyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIGJlY2F1c2UgYXNcbiAgICAgICAgICAgIC8vIGN1cnJlbnRseSBjb25maWd1cmVkIHRoZSB0ZXN0cyB3b24ndCBydW4gZnJvbSBhbiBpbnN0YWxsZWRcbiAgICAgICAgICAgIC8vIG5vZGVfbW9kdWxlcyBkaXJlY3RvcnkuXG4gICAgICAgICAgICAnbXYgLi9ub2RlX21vZHVsZXMvQGF3cy1jZGstdGVzdGluZy9jbGktaW50ZWcvKiAuJyxcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0RldGVybWluZSBsYXRlc3QgcGFja2FnZSB2ZXJzaW9ucycsXG4gICAgICAgICAgaWQ6ICd2ZXJzaW9ucycsXG4gICAgICAgICAgcnVuOiBbXG4gICAgICAgICAgICAnQ0xJX1ZFUlNJT049JChjZCAke1RNUERJUjotL3RtcH0gJiYgbnBtIHZpZXcgYXdzLWNkayB2ZXJzaW9uKScsXG4gICAgICAgICAgICAnZWNobyBcIkNMSSB2ZXJzaW9uOiAke0NMSV9WRVJTSU9OfVwiJyxcbiAgICAgICAgICAgICdlY2hvIFwiY2xpX3ZlcnNpb249JHtDTElfVkVSU0lPTn1cIiA+PiAkR0lUSFVCX09VVFBVVCcsXG4gICAgICAgICAgICAnTElCX1ZFUlNJT049JChjZCAke1RNUERJUjotL3RtcH0gJiYgbnBtIHZpZXcgYXdzLWNkay1saWIgdmVyc2lvbiknLFxuICAgICAgICAgICAgJ2VjaG8gXCJsaWIgdmVyc2lvbjogJHtMSUJfVkVSU0lPTn1cIicsXG4gICAgICAgICAgICAnZWNobyBcImxpYl92ZXJzaW9uPSR7TElCX1ZFUlNJT059XCIgPj4gJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnUnVuIHRoZSB0ZXN0IHN1aXRlOiAke3sgbWF0cml4LnN1aXRlIH19JyxcbiAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgIGBiaW4vcnVuLXN1aXRlJHttYXhXb3JrZXJzQXJnfSAtLXVzZS1jbGktcmVsZWFzZT1cXCR7eyBzdGVwcy52ZXJzaW9ucy5vdXRwdXRzLmNsaV92ZXJzaW9uIH19IC0tZnJhbWV3b3JrLXZlcnNpb249XFwke3sgc3RlcHMudmVyc2lvbnMub3V0cHV0cy5saWJfdmVyc2lvbiB9fSBcXCR7eyBtYXRyaXguc3VpdGUgfX1gLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBKU0lJX1NJTEVOQ0VfV0FSTklOR19ERVBSRUNBVEVEX05PREVfVkVSU0lPTjogJ3RydWUnLFxuICAgICAgICAgICAgSlNJSV9TSUxFTkNFX1dBUk5JTkdfVU5URVNURURfTk9ERV9WRVJTSU9OOiAndHJ1ZScsXG4gICAgICAgICAgICBKU0lJX1NJTEVOQ0VfV0FSTklOR19LTk9XTl9CUk9LRU5fTk9ERV9WRVJTSU9OOiAndHJ1ZScsXG4gICAgICAgICAgICBET0NLRVJIVUJfRElTQUJMRUQ6ICd0cnVlJyxcbiAgICAgICAgICAgIC4uLihwcm9wcy5lbmFibGVBdG1vc3BoZXJlID9cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIENES19JTlRFR19BVE1PU1BIRVJFX0VOQUJMRUQ6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBDREtfSU5URUdfQVRNT1NQSEVSRV9FTkRQT0lOVDogcHJvcHMuZW5hYmxlQXRtb3NwaGVyZS5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICBDREtfSU5URUdfQVRNT1NQSEVSRV9QT09MOiBwcm9wcy5lbmFibGVBdG1vc3BoZXJlLnBvb2wsXG4gICAgICAgICAgICAgIH0gOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQVdTX1JFR0lPTlM6IFsndXMtZWFzdC0yJywgJ2V1LXdlc3QtMScsICdldS1ub3J0aC0xJywgJ2FwLW5vcnRoZWFzdC0xJywgJ2FwLXNvdXRoLTEnXS5qb2luKCcsJyksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgQ0RLX01BSk9SX1ZFUlNJT046ICcyJyxcbiAgICAgICAgICAgIFJFTEVBU0VfVEFHOiAnbGF0ZXN0JyxcbiAgICAgICAgICAgIEdJVEhVQl9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYSBqb2IgdGhhdCBjb2xsYXRlcyBhbGwgbWF0cml4IGpvYnMgaW50byBhIHNpbmdsZSBzdGF0dXNcbiAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuIHNldHVwIHJlcXVpcmVkIHN0YXR1cyBjaGVja3NcbiAgICAvLyBhbmQgaWYgd2UgZXZlciBjaGFuZ2UgdGhlIHRlc3QgbWF0cml4LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZVxuICAgIC8vIHRoZSBzdGF0dXMgY2hlY2sgY29uZmlndXJhdGlvbi5cbiAgICBydW5UZXN0c1dvcmtmbG93LmFkZEpvYignaW50ZWcnLCB7XG4gICAgICBwZXJtaXNzaW9uczoge30sXG4gICAgICBydW5zT246IFtwcm9wcy50ZXN0UnVuc09uXSxcbiAgICAgIG5lZWRzOiBbSk9CX1BSRVBBUkUsIEpPQl9JTlRFR19NQVRSSVhdLFxuICAgICAgaWY6ICdhbHdheXMoKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ludGVnIHRlc3QgcmVzdWx0JyxcbiAgICAgICAgICBydW46IGBlY2hvIFxcJHt7IG5lZWRzLiR7Sk9CX0lOVEVHX01BVFJJWH0ucmVzdWx0IH19YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIERvbid0IGZhaWwgdGhlIGpvYiBpZiB0aGUgdGVzdCB3YXMgc3VjY2Vzc2Z1bCBvciBpbnRlbnRpb25hbGx5IHNraXBwZWRcbiAgICAgICAgICBpZjogYFxcJHt7ICEoY29udGFpbnMoZnJvbUpTT04oJ1tcInN1Y2Nlc3NcIiwgXCJza2lwcGVkXCJdJyksIG5lZWRzLiR7Sk9CX1BSRVBBUkV9LnJlc3VsdCkgJiYgY29udGFpbnMoZnJvbUpTT04oJ1tcInN1Y2Nlc3NcIiwgXCJza2lwcGVkXCJdJyksIG5lZWRzLiR7Sk9CX0lOVEVHX01BVFJJWH0ucmVzdWx0KSkgfX1gLFxuICAgICAgICAgIG5hbWU6ICdTZXQgc3RhdHVzIGJhc2VkIG9uIG1hdHJpeCBqb2InLFxuICAgICAgICAgIHJ1bjogJ2V4aXQgMScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|