UNPKG

opinionated-ci-pipeline

Version:

CI/CD on AWS with feature-branch builds, developer-environment deployments, and build status notifications.

58 lines 6.97 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CDKApplication = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const ciStack_1 = require("./ciStack"); const context_1 = require("./util/context"); const applicationProps_1 = require("./applicationProps"); const lodash_1 = require("lodash"); class CDKApplication extends aws_cdk_lib_1.App { constructor(props) { super(props); const ci = this.node.tryGetContext('ci'); const env = this.node.tryGetContext('env'); const projectName = (0, context_1.getProjectName)(this); const resolvedProps = this.resolveProps(props); if (ci && ci.toLowerCase() === 'true') { const environment = (0, context_1.getEnvironmentConfig)(this, 'ci'); const stackId = resolvedProps.prefixStackIdWithProjectName ? `${projectName}CI` : 'CI'; new ciStack_1.CIStack(this, stackId, { stackName: `${projectName}-ci`, env: environment, ...resolvedProps, }); } else if (env) { props.stacks.create(this, projectName, env); } else { throw new Error('Either "env" or "ci" context value must be provided'); } } resolveProps(props) { if (props.packageManager) { (0, lodash_1.merge)(applicationProps_1.defaultProps, { commands: defaultCommands[props.packageManager] }); } return (0, lodash_1.defaultsDeep)((0, lodash_1.cloneDeep)(props), applicationProps_1.defaultProps); } } exports.CDKApplication = CDKApplication; _a = JSII_RTTI_SYMBOL_1; CDKApplication[_a] = { fqn: "opinionated-ci-pipeline.CDKApplication", version: "4.3.0" }; const defaultCommands = { npm: { install: [ 'npm install --location=global aws-cdk@2', 'npm ci', ], }, pnpm: { install: [ 'npm install --location=global aws-cdk@2 pnpm', 'pnpm install --frozen-lockfile', ], }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrQXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2RrQXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBMEM7QUFDMUMsdUNBQWtDO0FBQ2xDLDRDQUFvRTtBQUNwRSx5REFBNEY7QUFDNUYsbUNBQXNEO0FBS3RELE1BQWEsY0FBZSxTQUFRLGlCQUFHO0lBQ25DLFlBQVksS0FBMEI7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUF1QixDQUFDO1FBQy9ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBdUIsQ0FBQztRQUVqRSxNQUFNLFdBQVcsR0FBRyxJQUFBLHdCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBQSw4QkFBb0IsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdkYsSUFBSSxpQkFBTyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQ3ZCLFNBQVMsRUFBRSxHQUFHLFdBQVcsS0FBSztnQkFDOUIsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLEdBQUcsYUFBYTthQUNuQixDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNiLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBdUI7UUFDeEMsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBQSxjQUFLLEVBQUMsK0JBQVksRUFBRSxFQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsT0FBTyxJQUFBLHFCQUFZLEVBQUMsSUFBQSxrQkFBUyxFQUFDLEtBQUssQ0FBQyxFQUFFLCtCQUFZLENBQTZCLENBQUM7SUFDcEYsQ0FBQzs7QUFoQ0wsd0NBaUNDOzs7QUFFRCxNQUFNLGVBQWUsR0FBbUg7SUFDcEksR0FBRyxFQUFFO1FBQ0QsT0FBTyxFQUFFO1lBQ0wseUNBQXlDO1lBQ3pDLFFBQVE7U0FDWDtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsT0FBTyxFQUFFO1lBQ0wsOENBQThDO1lBQzlDLGdDQUFnQztTQUNuQztLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwLCBBcHBQcm9wc30gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtDSVN0YWNrfSBmcm9tICcuL2NpU3RhY2snO1xuaW1wb3J0IHtnZXRFbnZpcm9ubWVudENvbmZpZywgZ2V0UHJvamVjdE5hbWV9IGZyb20gJy4vdXRpbC9jb250ZXh0JztcbmltcG9ydCB7QXBwbGljYXRpb25Qcm9wcywgZGVmYXVsdFByb3BzLCBSZXNvbHZlZEFwcGxpY2F0aW9uUHJvcHN9IGZyb20gJy4vYXBwbGljYXRpb25Qcm9wcyc7XG5pbXBvcnQge2Nsb25lRGVlcCwgZGVmYXVsdHNEZWVwLCBtZXJnZX0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBDREtBcHBsaWNhdGlvblByb3BzIGV4dGVuZHMgQXBwUHJvcHMsIEFwcGxpY2F0aW9uUHJvcHMge1xufVxuXG5leHBvcnQgY2xhc3MgQ0RLQXBwbGljYXRpb24gZXh0ZW5kcyBBcHAge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzOiBDREtBcHBsaWNhdGlvblByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICBjb25zdCBjaSA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCdjaScpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZW52ID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoJ2VudicpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGdldFByb2plY3ROYW1lKHRoaXMpO1xuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkUHJvcHMgPSB0aGlzLnJlc29sdmVQcm9wcyhwcm9wcyk7XG5cbiAgICAgICAgaWYgKGNpICYmIGNpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudENvbmZpZyh0aGlzLCAnY2knKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YWNrSWQgPSByZXNvbHZlZFByb3BzLnByZWZpeFN0YWNrSWRXaXRoUHJvamVjdE5hbWUgPyBgJHtwcm9qZWN0TmFtZX1DSWAgOiAnQ0knO1xuICAgICAgICAgICAgbmV3IENJU3RhY2sodGhpcywgc3RhY2tJZCwge1xuICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogYCR7cHJvamVjdE5hbWV9LWNpYCxcbiAgICAgICAgICAgICAgICBlbnY6IGVudmlyb25tZW50LFxuICAgICAgICAgICAgICAgIC4uLnJlc29sdmVkUHJvcHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbnYpIHtcbiAgICAgICAgICAgIHByb3BzLnN0YWNrcy5jcmVhdGUodGhpcywgcHJvamVjdE5hbWUsIGVudik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBcImVudlwiIG9yIFwiY2lcIiBjb250ZXh0IHZhbHVlIG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVByb3BzKHByb3BzOiBBcHBsaWNhdGlvblByb3BzKTogUmVzb2x2ZWRBcHBsaWNhdGlvblByb3BzIHtcbiAgICAgICAgaWYgKHByb3BzLnBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgICAgICAgICBtZXJnZShkZWZhdWx0UHJvcHMsIHtjb21tYW5kczogZGVmYXVsdENvbW1hbmRzW3Byb3BzLnBhY2thZ2VNYW5hZ2VyXX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzRGVlcChjbG9uZURlZXAocHJvcHMpLCBkZWZhdWx0UHJvcHMpIGFzIFJlc29sdmVkQXBwbGljYXRpb25Qcm9wcztcbiAgICB9XG59XG5cbmNvbnN0IGRlZmF1bHRDb21tYW5kczogeyBba2V5IGluIE5vbk51bGxhYmxlPEFwcGxpY2F0aW9uUHJvcHNbJ3BhY2thZ2VNYW5hZ2VyJ10+XTogRXhjbHVkZTxBcHBsaWNhdGlvblByb3BzWydjb21tYW5kcyddLCB1bmRlZmluZWQ+IH0gPSB7XG4gICAgbnBtOiB7XG4gICAgICAgIGluc3RhbGw6IFtcbiAgICAgICAgICAgICducG0gaW5zdGFsbCAtLWxvY2F0aW9uPWdsb2JhbCBhd3MtY2RrQDInLFxuICAgICAgICAgICAgJ25wbSBjaScsXG4gICAgICAgIF0sXG4gICAgfSxcbiAgICBwbnBtOiB7XG4gICAgICAgIGluc3RhbGw6IFtcbiAgICAgICAgICAgICducG0gaW5zdGFsbCAtLWxvY2F0aW9uPWdsb2JhbCBhd3MtY2RrQDIgcG5wbScsXG4gICAgICAgICAgICAncG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJyxcbiAgICAgICAgXSxcbiAgICB9LFxufTtcbiJdfQ==