opinionated-ci-pipeline
Version:
CI/CD on AWS with feature-branch builds, developer-environment deployments, and build status notifications.
58 lines • 6.97 kB
JavaScript
;
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==