UNPKG

@cloudcamp/aws-runtime

Version:

CloudCamp - Launch faster by building scalable infrastructure in few lines of code.

94 lines 13.1 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PipelineStack = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk = require("aws-cdk-lib/core"); const pipelines = require("aws-cdk-lib/pipelines"); const codepipeline_actions = require("aws-cdk-lib/aws-codepipeline-actions"); const _ = require("lodash"); const fs = require("fs"); const path = require("path"); const language_1 = require("./language"); const app_1 = require("./app"); const constants_1 = require("./constants"); /** * @experimental * @ignore true */ class PipelineStack extends cdk.Stack { /** * @experimental */ constructor(scope, id, props) { super(scope, id, { ...props, env: (props === null || props === void 0 ? void 0 : props.env) || { account: app_1.App.instance.configuration.account, region: app_1.App.instance.configuration.region, }, }); this.pipelineName = _.upperFirst(_.camelCase(props.appName + "-pipeline")); let home = this.getHome(); let { installCommands, buildCommands, synthCommands } = this.getPipelineCommands(home); this.pipeline = new pipelines.CodePipeline(this, "cdk-pipeline", { selfMutation: true, pipelineName: this.pipelineName, synth: new pipelines.ShellStep("Synth", { input: pipelines.CodePipelineSource.gitHub(props.owner + "/" + props.repo, props.branch, { authentication: cdk.SecretValue.secretsManager(props.repositoryTokenSecretName), trigger: codepipeline_actions.GitHubTrigger.POLL, }), installCommands: installCommands, commands: buildCommands.concat(synthCommands), primaryOutputDirectory: path.join(home, "cdk.out"), }), crossAccountKeys: false, }); } getHome() { // when running locally, home is passed in via a context variable if (this.node.tryGetContext(constants_1.CONTEXT_KEY_HOME) !== undefined) { return this.node.tryGetContext(constants_1.CONTEXT_KEY_HOME); } // otherwise, we depend on CODEBUILD_SRC_DIR to find home if (process.env.CODEBUILD_SRC_DIR == undefined) { throw new Error("Could not determine app home."); } return process.cwd().slice(process.env.CODEBUILD_SRC_DIR.length + 1); } getLanguage() { let cdk_json = JSON.parse(fs.readFileSync("cdk.json").toString()); let code = language_1.Language.languageCodeForExtension(path.extname(cdk_json.app)); return language_1.Language.make(code); } getPipelineCommands(home) { let inHome = (cmd) => `(cd ${home} && ${cmd})`; let language = this.getLanguage(); let packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "..", "package.json")).toString()); let cdkVersion = packageJson.dependencies["aws-cdk-lib"]; let installCommands = [ "npm install -g npm@latest", `npm install aws-cdk@${cdkVersion} -g`, ].concat(language.installCommands); let buildCommands = language.buildCommands; let synthCommands = [ "pwd", "ls", "ls node_modules/aws-cdk-lib/package.json", "ls -al ..", "env", 'sed -i \'571 i ".\\/core\\": ".\\/core\\/index.js",\' node_modules/aws-cdk-lib/package.json', "cdk synth", ]; return { installCommands: installCommands.map(inHome), buildCommands: buildCommands.map(inHome), synthCommands: synthCommands.map(inHome), }; } } exports.PipelineStack = PipelineStack; _a = JSII_RTTI_SYMBOL_1; PipelineStack[_a] = { fqn: "@cloudcamp/aws-runtime.PipelineStack", version: "0.0.1" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3Q0FBd0M7QUFDeEMsbURBQW1EO0FBQ25ELDZFQUE2RTtBQUM3RSw0QkFBNEI7QUFDNUIseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUU3Qix5Q0FBc0M7QUFDdEMsK0JBQTRCO0FBQzVCLDJDQUErQzs7Ozs7QUFhL0MsTUFBYSxhQUFjLFNBQVEsR0FBRyxDQUFDLEtBQUs7Ozs7SUFJMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLEdBQUcsRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxHQUFHLEtBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxTQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPO2dCQUMzQyxNQUFNLEVBQUUsU0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTTthQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFMUIsSUFBSSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQy9ELFlBQVksRUFBRSxJQUFJO1lBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixLQUFLLEVBQUUsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3hDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQzlCLEtBQUssQ0FBQyxNQUFNLEVBQ1o7b0JBQ0UsY0FBYyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUM1QyxLQUFLLENBQUMseUJBQXlCLENBQ2hDO29CQUNELE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSTtpQkFDakQsQ0FDRjtnQkFDRCxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUM3QyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7YUFDbkQsQ0FBQztZQUNGLGdCQUFnQixFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE9BQU87UUFDYixpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBZ0IsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUMzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLDRCQUFnQixDQUFDLENBQUM7U0FDbEQ7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsRUFBRTtZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDbEQ7UUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxJQUFJLEdBQUcsbUJBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sbUJBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVk7UUFLdEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ3ZELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUMxQixFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUN2RSxDQUFDO1FBQ0YsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6RCxJQUFJLGVBQWUsR0FBRztZQUNwQiwyQkFBMkI7WUFDM0IsdUJBQXVCLFVBQVUsS0FBSztTQUN2QyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLGFBQWEsR0FBRztZQUNsQixLQUFLO1lBQ0wsSUFBSTtZQUNKLDBDQUEwQztZQUMxQyxXQUFXO1lBQ1gsS0FBSztZQUNMLDZGQUE2RjtZQUM3RixXQUFXO1NBQ1osQ0FBQztRQUVGLE9BQU87WUFDTCxlQUFlLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDNUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQzs7QUE1Rkgsc0NBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYi9jb3JlXCI7XG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiO1xuaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lX2FjdGlvbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnlIb3N0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSBcIi4vbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcFwiO1xuaW1wb3J0IHsgQ09OVEVYVF9LRVlfSE9NRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWNrUHJvcHMgZXh0ZW5kcyBjZGsuU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFwcE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeVRva2VuU2VjcmV0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBob3N0OiBSZXBvc2l0b3J5SG9zdDtcbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVTdGFjayBleHRlbmRzIGNkay5TdGFjayB7XG4gIHBpcGVsaW5lOiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGVudjogcHJvcHM/LmVudiB8fCB7XG4gICAgICAgIGFjY291bnQ6IEFwcC5pbnN0YW5jZS5jb25maWd1cmF0aW9uLmFjY291bnQsXG4gICAgICAgIHJlZ2lvbjogQXBwLmluc3RhbmNlLmNvbmZpZ3VyYXRpb24ucmVnaW9uLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucGlwZWxpbmVOYW1lID0gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKHByb3BzLmFwcE5hbWUgKyBcIi1waXBlbGluZVwiKSk7XG4gICAgbGV0IGhvbWUgPSB0aGlzLmdldEhvbWUoKTtcblxuICAgIGxldCB7IGluc3RhbGxDb21tYW5kcywgYnVpbGRDb21tYW5kcywgc3ludGhDb21tYW5kcyB9ID1cbiAgICAgIHRoaXMuZ2V0UGlwZWxpbmVDb21tYW5kcyhob21lKTtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcImNkay1waXBlbGluZVwiLCB7XG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBwaXBlbGluZU5hbWU6IHRoaXMucGlwZWxpbmVOYW1lLFxuICAgICAgc3ludGg6IG5ldyBwaXBlbGluZXMuU2hlbGxTdGVwKFwiU3ludGhcIiwge1xuICAgICAgICBpbnB1dDogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVNvdXJjZS5naXRIdWIoXG4gICAgICAgICAgcHJvcHMub3duZXIgKyBcIi9cIiArIHByb3BzLnJlcG8sXG4gICAgICAgICAgcHJvcHMuYnJhbmNoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoXG4gICAgICAgICAgICAgIHByb3BzLnJlcG9zaXRvcnlUb2tlblNlY3JldE5hbWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmlnZ2VyOiBjb2RlcGlwZWxpbmVfYWN0aW9ucy5HaXRIdWJUcmlnZ2VyLlBPTEwsXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBpbnN0YWxsQ29tbWFuZHM6IGluc3RhbGxDb21tYW5kcyxcbiAgICAgICAgY29tbWFuZHM6IGJ1aWxkQ29tbWFuZHMuY29uY2F0KHN5bnRoQ29tbWFuZHMpLFxuICAgICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwYXRoLmpvaW4oaG9tZSwgXCJjZGsub3V0XCIpLFxuICAgICAgfSksXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SG9tZSgpOiBzdHJpbmcge1xuICAgIC8vIHdoZW4gcnVubmluZyBsb2NhbGx5LCBob21lIGlzIHBhc3NlZCBpbiB2aWEgYSBjb250ZXh0IHZhcmlhYmxlXG4gICAgaWYgKHRoaXMubm9kZS50cnlHZXRDb250ZXh0KENPTlRFWFRfS0VZX0hPTUUpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChDT05URVhUX0tFWV9IT01FKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UsIHdlIGRlcGVuZCBvbiBDT0RFQlVJTERfU1JDX0RJUiB0byBmaW5kIGhvbWVcbiAgICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX1NSQ19ESVIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIGFwcCBob21lLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MuY3dkKCkuc2xpY2UocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX1NSQ19ESVIubGVuZ3RoICsgMSk7XG4gIH1cblxuICBwcml2YXRlIGdldExhbmd1YWdlKCk6IExhbmd1YWdlIHtcbiAgICBsZXQgY2RrX2pzb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhcImNkay5qc29uXCIpLnRvU3RyaW5nKCkpO1xuICAgIGxldCBjb2RlID0gTGFuZ3VhZ2UubGFuZ3VhZ2VDb2RlRm9yRXh0ZW5zaW9uKHBhdGguZXh0bmFtZShjZGtfanNvbi5hcHApKTtcbiAgICByZXR1cm4gTGFuZ3VhZ2UubWFrZShjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGlwZWxpbmVDb21tYW5kcyhob21lOiBzdHJpbmcpOiB7XG4gICAgaW5zdGFsbENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgICBidWlsZENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgICBzeW50aENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgfSB7XG4gICAgbGV0IGluSG9tZSA9IChjbWQ6IHN0cmluZykgPT4gYChjZCAke2hvbWV9ICYmICR7Y21kfSlgO1xuICAgIGxldCBsYW5ndWFnZSA9IHRoaXMuZ2V0TGFuZ3VhZ2UoKTtcbiAgICBsZXQgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJwYWNrYWdlLmpzb25cIikpLnRvU3RyaW5nKClcbiAgICApO1xuICAgIGxldCBjZGtWZXJzaW9uID0gcGFja2FnZUpzb24uZGVwZW5kZW5jaWVzW1wiYXdzLWNkay1saWJcIl07XG5cbiAgICBsZXQgaW5zdGFsbENvbW1hbmRzID0gW1xuICAgICAgXCJucG0gaW5zdGFsbCAtZyBucG1AbGF0ZXN0XCIsXG4gICAgICBgbnBtIGluc3RhbGwgYXdzLWNka0Ake2Nka1ZlcnNpb259IC1nYCxcbiAgICBdLmNvbmNhdChsYW5ndWFnZS5pbnN0YWxsQ29tbWFuZHMpO1xuICAgIGxldCBidWlsZENvbW1hbmRzID0gbGFuZ3VhZ2UuYnVpbGRDb21tYW5kcztcbiAgICBsZXQgc3ludGhDb21tYW5kcyA9IFtcbiAgICAgIFwicHdkXCIsXG4gICAgICBcImxzXCIsXG4gICAgICBcImxzIG5vZGVfbW9kdWxlcy9hd3MtY2RrLWxpYi9wYWNrYWdlLmpzb25cIixcbiAgICAgIFwibHMgLWFsIC4uXCIsXG4gICAgICBcImVudlwiLFxuICAgICAgJ3NlZCAtaSBcXCc1NzEgaSBcIi5cXFxcL2NvcmVcXFxcXCI6IFwiLlxcXFwvY29yZVxcXFwvaW5kZXguanNcIixcXCcgbm9kZV9tb2R1bGVzL2F3cy1jZGstbGliL3BhY2thZ2UuanNvbicsXG4gICAgICBcImNkayBzeW50aFwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbENvbW1hbmRzOiBpbnN0YWxsQ29tbWFuZHMubWFwKGluSG9tZSksXG4gICAgICBidWlsZENvbW1hbmRzOiBidWlsZENvbW1hbmRzLm1hcChpbkhvbWUpLFxuICAgICAgc3ludGhDb21tYW5kczogc3ludGhDb21tYW5kcy5tYXAoaW5Ib21lKSxcbiAgICB9O1xuICB9XG59XG4iXX0=