@cloudcamp/aws-runtime
Version:
CloudCamp - Launch faster by building scalable infrastructure in few lines of code.
94 lines • 13.1 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGlwZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3Q0FBd0M7QUFDeEMsbURBQW1EO0FBQ25ELDZFQUE2RTtBQUM3RSw0QkFBNEI7QUFDNUIseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUU3Qix5Q0FBc0M7QUFDdEMsK0JBQTRCO0FBQzVCLDJDQUErQzs7Ozs7QUFhL0MsTUFBYSxhQUFjLFNBQVEsR0FBRyxDQUFDLEtBQUs7Ozs7SUFJMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLEdBQUcsRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxHQUFHLEtBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxTQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPO2dCQUMzQyxNQUFNLEVBQUUsU0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTTthQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFMUIsSUFBSSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQy9ELFlBQVksRUFBRSxJQUFJO1lBQ2xCLFlBQVksRUFBRSxJQUFJLENB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Q0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQzs7QUE1Rkgsc0NBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYi9jb3JlXCI7XG5pbXBvcnQgKiBhcyBwaXBlbGluZXMgZnJvbSBcImF3cy1jZGstbGliL3BpcGVsaW5lc1wiO1xuaW1wb3J0ICogYXMgY29kZXBpcGVsaW5lX2FjdGlvbnMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnlIb3N0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSBcIi4vbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcFwiO1xuaW1wb3J0IHsgQ09OVEVYVF9LRVlfSE9NRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWNrUHJvcHMgZXh0ZW5kcyBjZGsuU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFwcE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeVRva2VuU2VjcmV0TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBob3N0OiBSZXBvc2l0b3J5SG9zdDtcbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICByZWFkb25seSBicmFuY2g6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVTdGFjayBleHRlbmRzIGNkay5TdGFjayB7XG4gIHBpcGVsaW5lOiBwaXBlbGluZXMuQ29kZVBpcGVsaW5lO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGVudjogcHJvcHM/LmVudiB8fCB7XG4gICAgICAgIGFjY291bnQ6IEFwcC5pbnN0YW5jZS5jb25maWd1cmF0aW9uLmFjY291bnQsXG4gICAgICAgIHJlZ2lvbjogQXBwLmluc3RhbmNlLmNvbmZpZ3VyYXRpb24ucmVnaW9uLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucGlwZWxpbmVOYW1lID0gXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKHByb3BzLmFwcE5hbWUgKyBcIi1waXBlbGluZVwiKSk7XG4gICAgbGV0IGhvbWUgPSB0aGlzLmdldEhvbWUoKTtcblxuICAgIGxldCB7IGluc3RhbGxDb21tYW5kcywgYnVpbGRDb21tYW5kcywgc3ludGhDb21tYW5kcyB9ID1cbiAgICAgIHRoaXMuZ2V0UGlwZWxpbmVDb21tYW5kcyhob21lKTtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgcGlwZWxpbmVzLkNvZGVQaXBlbGluZSh0aGlzLCBcImNkay1waXBlbGluZVwiLCB7XG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBwaXBlbGluZU5hbWU6IHRoaXMucGlwZWxpbmVOYW1lLFxuICAgICAgc3ludGg6IG5ldyBwaXBlbGluZXMuU2hlbGxTdGVwKFwiU3ludGhcIiwge1xuICAgICAgICBpbnB1dDogcGlwZWxpbmVzLkNvZGVQaXBlbGluZVNvdXJjZS5naXRIdWIoXG4gICAgICAgICAgcHJvcHMub3duZXIgKyBcIi9cIiArIHByb3BzLnJlcG8sXG4gICAgICAgICAgcHJvcHMuYnJhbmNoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoXG4gICAgICAgICAgICAgIHByb3BzLnJlcG9zaXRvcnlUb2tlblNlY3JldE5hbWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmlnZ2VyOiBjb2RlcGlwZWxpbmVfYWN0aW9ucy5HaXRIdWJUcmlnZ2VyLlBPTEwsXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBpbnN0YWxsQ29tbWFuZHM6IGluc3RhbGxDb21tYW5kcyxcbiAgICAgICAgY29tbWFuZHM6IGJ1aWxkQ29tbWFuZHMuY29uY2F0KHN5bnRoQ29tbWFuZHMpLFxuICAgICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwYXRoLmpvaW4oaG9tZSwgXCJjZGsub3V0XCIpLFxuICAgICAgfSksXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SG9tZSgpOiBzdHJpbmcge1xuICAgIC8vIHdoZW4gcnVubmluZyBsb2NhbGx5LCBob21lIGlzIHBhc3NlZCBpbiB2aWEgYSBjb250ZXh0IHZhcmlhYmxlXG4gICAgaWYgKHRoaXMubm9kZS50cnlHZXRDb250ZXh0KENPTlRFWFRfS0VZX0hPTUUpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChDT05URVhUX0tFWV9IT01FKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UsIHdlIGRlcGVuZCBvbiBDT0RFQlVJTERfU1JDX0RJUiB0byBmaW5kIGhvbWVcbiAgICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX1NSQ19ESVIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIGFwcCBob21lLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MuY3dkKCkuc2xpY2UocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX1NSQ19ESVIubGVuZ3RoICsgMSk7XG4gIH1cblxuICBwcml2YXRlIGdldExhbmd1YWdlKCk6IExhbmd1YWdlIHtcbiAgICBsZXQgY2RrX2pzb24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhcImNkay5qc29uXCIpLnRvU3RyaW5nKCkpO1xuICAgIGxldCBjb2RlID0gTGFuZ3VhZ2UubGFuZ3VhZ2VDb2RlRm9yRXh0ZW5zaW9uKHBhdGguZXh0bmFtZShjZGtfanNvbi5hcHApKTtcbiAgICByZXR1cm4gTGFuZ3VhZ2UubWFrZShjb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGlwZWxpbmVDb21tYW5kcyhob21lOiBzdHJpbmcpOiB7XG4gICAgaW5zdGFsbENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgICBidWlsZENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgICBzeW50aENvbW1hbmRzOiBzdHJpbmdbXTtcbiAgfSB7XG4gICAgbGV0IGluSG9tZSA9IChjbWQ6IHN0cmluZykgPT4gYChjZCAke2hvbWV9ICYmICR7Y21kfSlgO1xuICAgIGxldCBsYW5ndWFnZSA9IHRoaXMuZ2V0TGFuZ3VhZ2UoKTtcbiAgICBsZXQgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJwYWNrYWdlLmpzb25cIikpLnRvU3RyaW5nKClcbiAgICApO1xuICAgIGxldCBjZGtWZXJzaW9uID0gcGFja2FnZUpzb24uZGVwZW5kZW5jaWVzW1wiYXdzLWNkay1saWJcIl07XG5cbiAgICBsZXQgaW5zdGFsbENvbW1hbmRzID0gW1xuICAgICAgXCJucG0gaW5zdGFsbCAtZyBucG1AbGF0ZXN0XCIsXG4gICAgICBgbnBtIGluc3RhbGwgYXdzLWNka0Ake2Nka1ZlcnNpb259IC1nYCxcbiAgICBdLmNvbmNhdChsYW5ndWFnZS5pbnN0YWxsQ29tbWFuZHMpO1xuICAgIGxldCBidWlsZENvbW1hbmRzID0gbGFuZ3VhZ2UuYnVpbGRDb21tYW5kcztcbiAgICBsZXQgc3ludGhDb21tYW5kcyA9IFtcbiAgICAgIFwicHdkXCIsXG4gICAgICBcImxzXCIsXG4gICAgICBcImxzIG5vZGVfbW9kdWxlcy9hd3MtY2RrLWxpYi9wYWNrYWdlLmpzb25cIixcbiAgICAgIFwibHMgLWFsIC4uXCIsXG4gICAgICBcImVudlwiLFxuICAgICAgJ3NlZCAtaSBcXCc1NzEgaSBcIi5cXFxcL2NvcmVcXFxcXCI6IFwiLlxcXFwvY29yZVxcXFwvaW5kZXguanNcIixcXCcgbm9kZV9tb2R1bGVzL2F3cy1jZGstbGliL3BhY2thZ2UuanNvbicsXG4gICAgICBcImNkayBzeW50aFwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbENvbW1hbmRzOiBpbnN0YWxsQ29tbWFuZHMubWFwKGluSG9tZSksXG4gICAgICBidWlsZENvbW1hbmRzOiBidWlsZENvbW1hbmRzLm1hcChpbkhvbWUpLFxuICAgICAgc3ludGhDb21tYW5kczogc3ludGhDb21tYW5kcy5tYXAoaW5Ib21lKSxcbiAgICB9O1xuICB9XG59XG4iXX0=