@codedrifters/configulator 0.0.0
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/LICENSE +19 -0
- package/README.md +4 -0
- package/lib/aws/aws-deployment-config.d.ts +141 -0
- package/lib/aws/aws-deployment-config.js +165 -0
- package/lib/aws/aws-types.d.ts +63 -0
- package/lib/aws/aws-types.js +9 -0
- package/lib/aws/index.d.ts +2 -0
- package/lib/aws/index.js +19 -0
- package/lib/git/git-types.d.ts +18 -0
- package/lib/git/git-types.js +9 -0
- package/lib/git/index.d.ts +1 -0
- package/lib/git/index.js +18 -0
- package/lib/pnpm/index.d.ts +1 -0
- package/lib/pnpm/index.js +18 -0
- package/lib/pnpm/pnpm-workspace.d.ts +5 -0
- package/lib/pnpm/pnpm-workspace.js +36 -0
- package/lib/turbo/index.d.ts +2 -0
- package/lib/turbo/index.js +19 -0
- package/lib/turbo/turbo-repo-task.d.ts +36 -0
- package/lib/turbo/turbo-repo-task.js +43 -0
- package/lib/turbo/turbo-repo.d.ts +268 -0
- package/lib/turbo/turbo-repo.js +213 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.js +18 -0
- package/lib/typescript/typescript-config.d.ts +13 -0
- package/lib/typescript/typescript-config.js +40 -0
- package/lib/versions.d.ts +22 -0
- package/lib/versions.js +26 -0
- package/lib/vscode/index.d.ts +1 -0
- package/lib/vscode/index.js +18 -0
- package/lib/vscode/vscode.d.ts +10 -0
- package/lib/vscode/vscode.js +37 -0
- package/lib/workflows/build-workflow.d.ts +13 -0
- package/lib/workflows/build-workflow.js +64 -0
- package/lib/workflows/deploy-workflow.d.ts +17 -0
- package/lib/workflows/deploy-workflow.js +113 -0
- package/lib/workflows/index.d.ts +2 -0
- package/lib/workflows/index.js +19 -0
- package/lib/workflows/steps/deploy.d.ts +4 -0
- package/lib/workflows/steps/deploy.js +62 -0
- package/package.json +63 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeScriptConfig = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const projen_1 = require("projen");
|
|
6
|
+
const path_1 = require("projen/lib/util/path");
|
|
7
|
+
/*******************************************************************************
|
|
8
|
+
*
|
|
9
|
+
* Update / customize typescript configs for a project.
|
|
10
|
+
*
|
|
11
|
+
* Update typescript paths in tsconfig so we don't have to compile packages to
|
|
12
|
+
* dist in order to see changes.
|
|
13
|
+
*
|
|
14
|
+
******************************************************************************/
|
|
15
|
+
class TypeScriptConfig extends projen_1.Component {
|
|
16
|
+
constructor(project) {
|
|
17
|
+
super(project);
|
|
18
|
+
/**
|
|
19
|
+
* Container for paths to insert at the end.
|
|
20
|
+
*/
|
|
21
|
+
let tsPaths = {};
|
|
22
|
+
const workspaceDeps = project.deps.all.filter((d) => d.version === "workspace:*");
|
|
23
|
+
workspaceDeps.forEach((dep) => {
|
|
24
|
+
const subproject = project.root.subprojects.find((p) => p.package.packageName === dep.name);
|
|
25
|
+
if (!subproject) {
|
|
26
|
+
throw new Error(`Could not find subproject ${dep.name} in monorepo.`);
|
|
27
|
+
}
|
|
28
|
+
tsPaths = {
|
|
29
|
+
...tsPaths,
|
|
30
|
+
[dep.name]: [
|
|
31
|
+
(0, path_1.ensureRelativePathStartsWithDot)((0, node_path_1.relative)(project.outdir, subproject.outdir)),
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
project.tsconfig?.file.addOverride("compilerOptions.paths", tsPaths);
|
|
36
|
+
project.tsconfigDev?.file.addOverride("compilerOptions.paths", tsPaths);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.TypeScriptConfig = TypeScriptConfig;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBcUM7QUFDckMsbUNBQW1DO0FBRW5DLCtDQUF1RTtBQUV2RTs7Ozs7OztnRkFPZ0Y7QUFDaEYsTUFBYSxnQkFBaUIsU0FBUSxrQkFBUztJQUM3QyxZQUFZLE9BQTBCO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmOztXQUVHO1FBQ0gsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUNuQyxDQUFDO1FBRUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FDZCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELE9BQU8sR0FBRztnQkFDUixHQUFHLE9BQU87Z0JBQ1YsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ1YsSUFBQSxzQ0FBK0IsRUFDN0IsSUFBQSxvQkFBUSxFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUM1QztpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBbkNELDRDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBlbnN1cmVSZWxhdGl2ZVBhdGhTdGFydHNXaXRoRG90IH0gZnJvbSBcInByb2plbi9saWIvdXRpbC9wYXRoXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogVXBkYXRlIC8gY3VzdG9taXplIHR5cGVzY3JpcHQgY29uZmlncyBmb3IgYSBwcm9qZWN0LlxuICpcbiAqIFVwZGF0ZSB0eXBlc2NyaXB0IHBhdGhzIGluIHRzY29uZmlnIHNvIHdlIGRvbid0IGhhdmUgdG8gY29tcGlsZSBwYWNrYWdlcyB0b1xuICogZGlzdCBpbiBvcmRlciB0byBzZWUgY2hhbmdlcy5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVyIGZvciBwYXRocyB0byBpbnNlcnQgYXQgdGhlIGVuZC5cbiAgICAgKi9cbiAgICBsZXQgdHNQYXRocyA9IHt9O1xuXG4gICAgY29uc3Qgd29ya3NwYWNlRGVwcyA9IHByb2plY3QuZGVwcy5hbGwuZmlsdGVyKFxuICAgICAgKGQpID0+IGQudmVyc2lvbiA9PT0gXCJ3b3Jrc3BhY2U6KlwiLFxuICAgICk7XG5cbiAgICB3b3Jrc3BhY2VEZXBzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgY29uc3Qgc3VicHJvamVjdCA9IChcbiAgICAgICAgcHJvamVjdC5yb290LnN1YnByb2plY3RzIGFzIEFycmF5PFR5cGVTY3JpcHRQcm9qZWN0PlxuICAgICAgKS5maW5kKChwKSA9PiBwLnBhY2thZ2UucGFja2FnZU5hbWUgPT09IGRlcC5uYW1lKTtcblxuICAgICAgaWYgKCFzdWJwcm9qZWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3VicHJvamVjdCAke2RlcC5uYW1lfSBpbiBtb25vcmVwby5gKTtcbiAgICAgIH1cblxuICAgICAgdHNQYXRocyA9IHtcbiAgICAgICAgLi4udHNQYXRocyxcbiAgICAgICAgW2RlcC5uYW1lXTogW1xuICAgICAgICAgIGVuc3VyZVJlbGF0aXZlUGF0aFN0YXJ0c1dpdGhEb3QoXG4gICAgICAgICAgICByZWxhdGl2ZShwcm9qZWN0Lm91dGRpciwgc3VicHJvamVjdC5vdXRkaXIpLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcHJvamVjdC50c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZShcImNvbXBpbGVyT3B0aW9ucy5wYXRoc1wiLCB0c1BhdGhzKTtcbiAgICBwcm9qZWN0LnRzY29uZmlnRGV2Py5maWxlLmFkZE92ZXJyaWRlKFwiY29tcGlsZXJPcHRpb25zLnBhdGhzXCIsIHRzUGF0aHMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const VERSION: {
|
|
2
|
+
/**
|
|
3
|
+
* CDK CLI for workflows and command line operations..
|
|
4
|
+
*/
|
|
5
|
+
readonly CDK_CLI_VERISON: "2.1018.0";
|
|
6
|
+
/**
|
|
7
|
+
* CDK Version to use for construct projects.
|
|
8
|
+
*/
|
|
9
|
+
readonly CDK_LIB_VERISON: "2.200.1";
|
|
10
|
+
/**
|
|
11
|
+
* Version of Node.js to use in workflows at github actions.
|
|
12
|
+
*/
|
|
13
|
+
readonly NODE_WORKFLOWS: "20";
|
|
14
|
+
/**
|
|
15
|
+
* Version of PNPM to use in workflows at github actions.
|
|
16
|
+
*/
|
|
17
|
+
readonly PNPM_VERSION: "10.12.1";
|
|
18
|
+
/**
|
|
19
|
+
* What version of the turborepo library should we use?
|
|
20
|
+
*/
|
|
21
|
+
readonly TURBO_VERSION: "2.5.4";
|
|
22
|
+
};
|
package/lib/versions.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VERSION = void 0;
|
|
4
|
+
exports.VERSION = {
|
|
5
|
+
/**
|
|
6
|
+
* CDK CLI for workflows and command line operations..
|
|
7
|
+
*/
|
|
8
|
+
CDK_CLI_VERISON: "2.1018.0",
|
|
9
|
+
/**
|
|
10
|
+
* CDK Version to use for construct projects.
|
|
11
|
+
*/
|
|
12
|
+
CDK_LIB_VERISON: "2.200.1",
|
|
13
|
+
/**
|
|
14
|
+
* Version of Node.js to use in workflows at github actions.
|
|
15
|
+
*/
|
|
16
|
+
NODE_WORKFLOWS: "20",
|
|
17
|
+
/**
|
|
18
|
+
* Version of PNPM to use in workflows at github actions.
|
|
19
|
+
*/
|
|
20
|
+
PNPM_VERSION: "10.12.1",
|
|
21
|
+
/**
|
|
22
|
+
* What version of the turborepo library should we use?
|
|
23
|
+
*/
|
|
24
|
+
TURBO_VERSION: "2.5.4",
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmVyc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxPQUFPLEdBQUc7SUFDckI7O09BRUc7SUFDSCxlQUFlLEVBQUUsVUFBVTtJQUUzQjs7T0FFRztJQUNILGVBQWUsRUFBRSxTQUFTO0lBRTFCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLElBQUk7SUFFcEI7O09BRUc7SUFDSCxZQUFZLEVBQUUsU0FBUztJQUV2Qjs7T0FFRztJQUNILGFBQWEsRUFBRSxPQUFPO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0ge1xuICAvKipcbiAgICogQ0RLIENMSSBmb3Igd29ya2Zsb3dzIGFuZCBjb21tYW5kIGxpbmUgb3BlcmF0aW9ucy4uXG4gICAqL1xuICBDREtfQ0xJX1ZFUklTT046IFwiMi4xMDE4LjBcIixcblxuICAvKipcbiAgICogQ0RLIFZlcnNpb24gdG8gdXNlIGZvciBjb25zdHJ1Y3QgcHJvamVjdHMuXG4gICAqL1xuICBDREtfTElCX1ZFUklTT046IFwiMi4yMDAuMVwiLFxuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIE5vZGUuanMgdG8gdXNlIGluIHdvcmtmbG93cyBhdCBnaXRodWIgYWN0aW9ucy5cbiAgICovXG4gIE5PREVfV09SS0ZMT1dTOiBcIjIwXCIsXG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgUE5QTSB0byB1c2UgaW4gd29ya2Zsb3dzIGF0IGdpdGh1YiBhY3Rpb25zLlxuICAgKi9cbiAgUE5QTV9WRVJTSU9OOiBcIjEwLjEyLjFcIixcblxuICAvKipcbiAgICogV2hhdCB2ZXJzaW9uIG9mIHRoZSB0dXJib3JlcG8gbGlicmFyeSBzaG91bGQgd2UgdXNlP1xuICAgKi9cbiAgVFVSQk9fVkVSU0lPTjogXCIyLjUuNFwiLFxufSBhcyBjb25zdDtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./vscode";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./vscode"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdnNjb2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92c2NvZGVcIjtcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Component } from "projen";
|
|
2
|
+
import { TypeScriptAppProject } from "projen/lib/typescript";
|
|
3
|
+
/*******************************************************************************
|
|
4
|
+
*
|
|
5
|
+
* Configure VSCode Settings
|
|
6
|
+
*
|
|
7
|
+
******************************************************************************/
|
|
8
|
+
export declare class VSCodeConfig extends Component {
|
|
9
|
+
constructor(project: TypeScriptAppProject);
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VSCodeConfig = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
/*******************************************************************************
|
|
6
|
+
*
|
|
7
|
+
* Configure VSCode Settings
|
|
8
|
+
*
|
|
9
|
+
******************************************************************************/
|
|
10
|
+
class VSCodeConfig extends projen_1.Component {
|
|
11
|
+
constructor(project) {
|
|
12
|
+
super(project);
|
|
13
|
+
/**
|
|
14
|
+
* Create instance of config file.
|
|
15
|
+
*/
|
|
16
|
+
const vsConfig = new projen_1.vscode.VsCode(project);
|
|
17
|
+
/**
|
|
18
|
+
* Add some basic configuration settings to the VS Code settings file:
|
|
19
|
+
*
|
|
20
|
+
* - Set the tab size to 2 spaces
|
|
21
|
+
* - Enable bracket pair colorization
|
|
22
|
+
* - Highlight active bracket pairs
|
|
23
|
+
* - Add rulers at 80 and 120 characters
|
|
24
|
+
*/
|
|
25
|
+
const vsSettings = new projen_1.vscode.VsCodeSettings(vsConfig);
|
|
26
|
+
vsSettings.addSetting("editor.tabSize", 2);
|
|
27
|
+
vsSettings.addSetting("editor.bracketPairColorization.enabled", true);
|
|
28
|
+
vsSettings.addSetting("editor.guides.bracketPairs", "active");
|
|
29
|
+
vsSettings.addSetting("editor.rulers", [80, 120]);
|
|
30
|
+
/**
|
|
31
|
+
* Add some ESLint specific settings to the VS Code settings file.
|
|
32
|
+
*/
|
|
33
|
+
vsSettings.addSetting("editor.codeActionsOnSave", { "source.fixAll.eslint": "explicit" }, "typescript");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.VSCodeConfig = VSCodeConfig;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZzY29kZS92c2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTJDO0FBRzNDOzs7O2dGQUlnRjtBQUVoRixNQUFhLFlBQWEsU0FBUSxrQkFBUztJQUN6QyxZQUFZLE9BQTZCO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmOztXQUVHO1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDOzs7Ozs7O1dBT0c7UUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxVQUFVLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLFVBQVUsQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsRDs7V0FFRztRQUNILFVBQVUsQ0FBQyxVQUFVLENBQ25CLDBCQUEwQixFQUMxQixFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxFQUN0QyxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhDRCxvQ0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHZzY29kZSB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIENvbmZpZ3VyZSBWU0NvZGUgU2V0dGluZ3NcbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgY2xhc3MgVlNDb2RlQ29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpbnN0YW5jZSBvZiBjb25maWcgZmlsZS5cbiAgICAgKi9cbiAgICBjb25zdCB2c0NvbmZpZyA9IG5ldyB2c2NvZGUuVnNDb2RlKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byB0aGUgVlMgQ29kZSBzZXR0aW5ncyBmaWxlOlxuICAgICAqXG4gICAgICogLSBTZXQgdGhlIHRhYiBzaXplIHRvIDIgc3BhY2VzXG4gICAgICogLSBFbmFibGUgYnJhY2tldCBwYWlyIGNvbG9yaXphdGlvblxuICAgICAqIC0gSGlnaGxpZ2h0IGFjdGl2ZSBicmFja2V0IHBhaXJzXG4gICAgICogLSBBZGQgcnVsZXJzIGF0IDgwIGFuZCAxMjAgY2hhcmFjdGVyc1xuICAgICAqL1xuICAgIGNvbnN0IHZzU2V0dGluZ3MgPSBuZXcgdnNjb2RlLlZzQ29kZVNldHRpbmdzKHZzQ29uZmlnKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IudGFiU2l6ZVwiLCAyKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IuYnJhY2tldFBhaXJDb2xvcml6YXRpb24uZW5hYmxlZFwiLCB0cnVlKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IuZ3VpZGVzLmJyYWNrZXRQYWlyc1wiLCBcImFjdGl2ZVwiKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IucnVsZXJzXCIsIFs4MCwgMTIwXSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgc29tZSBFU0xpbnQgc3BlY2lmaWMgc2V0dGluZ3MgdG8gdGhlIFZTIENvZGUgc2V0dGluZ3MgZmlsZS5cbiAgICAgKi9cbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXG4gICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiLFxuICAgICAgeyBcInNvdXJjZS5maXhBbGwuZXNsaW50XCI6IFwiZXhwbGljaXRcIiB9LFxuICAgICAgXCJ0eXBlc2NyaXB0XCIsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component } from "projen";
|
|
2
|
+
import { TypeScriptAppProject } from "projen/lib/typescript";
|
|
3
|
+
export declare const PREVIEW_DEPLOY_NAME = "preview-deploy";
|
|
4
|
+
export declare class BuildWorkflow extends Component {
|
|
5
|
+
project: TypeScriptAppProject;
|
|
6
|
+
constructor(project: TypeScriptAppProject);
|
|
7
|
+
/**
|
|
8
|
+
* This runs after all the projects are setup but before any files are
|
|
9
|
+
* synthesized. This allows us to update the build yaml with complete
|
|
10
|
+
* information.
|
|
11
|
+
*/
|
|
12
|
+
preSynthesize(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildWorkflow = exports.PREVIEW_DEPLOY_NAME = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
const awscdk_1 = require("projen/lib/awscdk");
|
|
6
|
+
const workflows_model_1 = require("projen/lib/github/workflows-model");
|
|
7
|
+
const deploy_1 = require("./steps/deploy");
|
|
8
|
+
const aws_deployment_config_1 = require("../aws/aws-deployment-config");
|
|
9
|
+
exports.PREVIEW_DEPLOY_NAME = "preview-deploy";
|
|
10
|
+
class BuildWorkflow extends projen_1.Component {
|
|
11
|
+
constructor(project) {
|
|
12
|
+
super(project);
|
|
13
|
+
this.project = project;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* This runs after all the projects are setup but before any files are
|
|
17
|
+
* synthesized. This allows us to update the build yaml with complete
|
|
18
|
+
* information.
|
|
19
|
+
*/
|
|
20
|
+
preSynthesize() {
|
|
21
|
+
super.preSynthesize();
|
|
22
|
+
/**
|
|
23
|
+
* Deploy PR preview to dev environment(s)
|
|
24
|
+
*/
|
|
25
|
+
this.project.subprojects
|
|
26
|
+
// only AwsCdkTypeScriptApp projects
|
|
27
|
+
.filter((subproject) => subproject instanceof awscdk_1.AwsCdkTypeScriptApp)
|
|
28
|
+
.forEach((subproject) => {
|
|
29
|
+
/**
|
|
30
|
+
* an array of all deployment configs.
|
|
31
|
+
*/
|
|
32
|
+
const deployConfigs = aws_deployment_config_1.AwsDeploymentConfig.of(subproject);
|
|
33
|
+
/**
|
|
34
|
+
* Any configs? let's see if any have CI support for PR deploys!
|
|
35
|
+
*/
|
|
36
|
+
if (deployConfigs) {
|
|
37
|
+
deployConfigs.forEach((config) => {
|
|
38
|
+
config.deploymentTargets
|
|
39
|
+
// only development targets for CI
|
|
40
|
+
.filter((dt) => dt.ciDeployment &&
|
|
41
|
+
dt.awsDeploymentType === aws_deployment_config_1.AWS_DEPLOY_TYPE.DEV)
|
|
42
|
+
.forEach((dt) => {
|
|
43
|
+
/**
|
|
44
|
+
* Nice long annoying but unique name.
|
|
45
|
+
*/
|
|
46
|
+
const deployJobName = `${exports.PREVIEW_DEPLOY_NAME}-${this.project.name}-${dt.account}-${dt.region}`;
|
|
47
|
+
this.project.buildWorkflow?.addPostBuildJob(deployJobName, {
|
|
48
|
+
name: `Deploy PR Preview to ${dt.account}/${dt.region}`,
|
|
49
|
+
runsOn: ["ubuntu-latest"],
|
|
50
|
+
permissions: {
|
|
51
|
+
contents: workflows_model_1.JobPermission.READ,
|
|
52
|
+
idToken: workflows_model_1.JobPermission.WRITE,
|
|
53
|
+
},
|
|
54
|
+
concurrency: deployJobName,
|
|
55
|
+
steps: [...(0, deploy_1.deploySteps)(subproject, dt)],
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.BuildWorkflow = BuildWorkflow;
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3dzL2J1aWxkLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUNuQyw4Q0FBd0Q7QUFDeEQsdUVBQWtFO0FBRWxFLDJDQUE2QztBQUM3Qyx3RUFHc0M7QUFFekIsUUFBQSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFhLGFBQWMsU0FBUSxrQkFBUztJQUMxQyxZQUFtQixPQUE2QjtRQUM5QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFERSxZQUFPLEdBQVAsT0FBTyxDQUFzQjtJQUVoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWE7UUFDWCxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDdEIsb0NBQW9DO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxZQUFZLDRCQUFtQixDQUFDO2FBQ2pFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RCOztlQUVHO1lBQ0gsTUFBTSxhQUFhLEdBQUcsMkNBQW1CLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpEOztlQUVHO1lBQ0gsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMvQixNQUFNLENBQUMsaUJBQWlCO3dCQUN0QixrQ0FBa0M7eUJBQ2pDLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsRUFBRSxDQUFDLFlBQVk7d0JBQ2YsRUFBRSxDQUFDLGlCQUFpQixLQUFLLHVDQUFlLENBQUMsR0FBRyxDQUMvQzt5QkFDQSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3QkFDZDs7MkJBRUc7d0JBQ0gsTUFBTSxhQUFhLEdBQUcsR0FBRywyQkFBbUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFFL0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWEsRUFBRTs0QkFDekQsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7NEJBQ3ZELE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQzs0QkFDekIsV0FBVyxFQUFFO2dDQUNYLFFBQVEsRUFBRSwrQkFBYSxDQUFDLElBQUk7Z0NBQzVCLE9BQU8sRUFBRSwrQkFBYSxDQUFDLEtBQUs7NkJBQzdCOzRCQUNELFdBQVcsRUFBRSxhQUFhOzRCQUMxQixLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUEsb0JBQVcsRUFBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3hDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRjtBQTFERCxzQ0EwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSBcInByb2plbi9saWIvYXdzY2RrXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZXBsb3lTdGVwcyB9IGZyb20gXCIuL3N0ZXBzL2RlcGxveVwiO1xuaW1wb3J0IHtcbiAgQVdTX0RFUExPWV9UWVBFLFxuICBBd3NEZXBsb3ltZW50Q29uZmlnLFxufSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuXG5leHBvcnQgY29uc3QgUFJFVklFV19ERVBMT1lfTkFNRSA9IFwicHJldmlldy1kZXBsb3lcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkV29ya2Zsb3cgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJ1bnMgYWZ0ZXIgYWxsIHRoZSBwcm9qZWN0cyBhcmUgc2V0dXAgYnV0IGJlZm9yZSBhbnkgZmlsZXMgYXJlXG4gICAqIHN5bnRoZXNpemVkLiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgdGhlIGJ1aWxkIHlhbWwgd2l0aCBjb21wbGV0ZVxuICAgKiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgLyoqXG4gICAgICogRGVwbG95IFBSIHByZXZpZXcgdG8gZGV2IGVudmlyb25tZW50KHMpXG4gICAgICovXG4gICAgdGhpcy5wcm9qZWN0LnN1YnByb2plY3RzXG4gICAgICAvLyBvbmx5IEF3c0Nka1R5cGVTY3JpcHRBcHAgcHJvamVjdHNcbiAgICAgIC5maWx0ZXIoKHN1YnByb2plY3QpID0+IHN1YnByb2plY3QgaW5zdGFuY2VvZiBBd3NDZGtUeXBlU2NyaXB0QXBwKVxuICAgICAgLmZvckVhY2goKHN1YnByb2plY3QpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFuIGFycmF5IG9mIGFsbCBkZXBsb3ltZW50IGNvbmZpZ3MuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkZXBsb3lDb25maWdzID0gQXdzRGVwbG95bWVudENvbmZpZy5vZihzdWJwcm9qZWN0KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQW55IGNvbmZpZ3M/IGxldCdzIHNlZSBpZiBhbnkgaGF2ZSBDSSBzdXBwb3J0IGZvciBQUiBkZXBsb3lzIVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGRlcGxveUNvbmZpZ3MpIHtcbiAgICAgICAgICBkZXBsb3lDb25maWdzLmZvckVhY2goKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uZmlnLmRlcGxveW1lbnRUYXJnZXRzXG4gICAgICAgICAgICAgIC8vIG9ubHkgZGV2ZWxvcG1lbnQgdGFyZ2V0cyBmb3IgQ0lcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZHQpID0+XG4gICAgICAgICAgICAgICAgICBkdC5jaURlcGxveW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgIGR0LmF3c0RlcGxveW1lbnRUeXBlID09PSBBV1NfREVQTE9ZX1RZUEUuREVWLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChkdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE5pY2UgbG9uZyBhbm5veWluZyBidXQgdW5pcXVlIG5hbWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwbG95Sm9iTmFtZSA9IGAke1BSRVZJRVdfREVQTE9ZX05BTUV9LSR7dGhpcy5wcm9qZWN0Lm5hbWV9LSR7ZHQuYWNjb3VudH0tJHtkdC5yZWdpb259YDtcblxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdC5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRKb2IoZGVwbG95Sm9iTmFtZSwge1xuICAgICAgICAgICAgICAgICAgbmFtZTogYERlcGxveSBQUiBQcmV2aWV3IHRvICR7ZHQuYWNjb3VudH0vJHtkdC5yZWdpb259YCxcbiAgICAgICAgICAgICAgICAgIHJ1bnNPbjogW1widWJ1bnR1LWxhdGVzdFwiXSxcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29uY3VycmVuY3k6IGRlcGxveUpvYk5hbWUsXG4gICAgICAgICAgICAgICAgICBzdGVwczogWy4uLmRlcGxveVN0ZXBzKHN1YnByb2plY3QsIGR0KV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component } from "projen";
|
|
2
|
+
import { TypeScriptAppProject } from "projen/lib/typescript";
|
|
3
|
+
export declare const PROD_DEPLOY_NAME = "prod-deploy";
|
|
4
|
+
export declare class DeployWorkflow extends Component {
|
|
5
|
+
project: TypeScriptAppProject;
|
|
6
|
+
/**
|
|
7
|
+
* Hold the deploy workflow so we can add to it in preSynth
|
|
8
|
+
*/
|
|
9
|
+
private workflow;
|
|
10
|
+
constructor(project: TypeScriptAppProject);
|
|
11
|
+
/**
|
|
12
|
+
* This runs after all the projects are setup but before any files are
|
|
13
|
+
* synthesized. This allows us to update the build yaml with complete
|
|
14
|
+
* information.
|
|
15
|
+
*/
|
|
16
|
+
preSynthesize(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeployWorkflow = exports.PROD_DEPLOY_NAME = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
const awscdk_1 = require("projen/lib/awscdk");
|
|
6
|
+
const build_1 = require("projen/lib/build");
|
|
7
|
+
const github_1 = require("projen/lib/github");
|
|
8
|
+
const workflows_model_1 = require("projen/lib/github/workflows-model");
|
|
9
|
+
const versions_1 = require("../versions");
|
|
10
|
+
const deploy_1 = require("./steps/deploy");
|
|
11
|
+
const aws_deployment_config_1 = require("../aws/aws-deployment-config");
|
|
12
|
+
const turbo_1 = require("../turbo");
|
|
13
|
+
exports.PROD_DEPLOY_NAME = "prod-deploy";
|
|
14
|
+
class DeployWorkflow extends projen_1.Component {
|
|
15
|
+
constructor(project) {
|
|
16
|
+
super(project);
|
|
17
|
+
this.project = project;
|
|
18
|
+
const github = github_1.GitHub.of(project);
|
|
19
|
+
if (!github) {
|
|
20
|
+
throw new Error("DeployWorkflow requires a GitHub component in the project");
|
|
21
|
+
}
|
|
22
|
+
/***************************************************************************
|
|
23
|
+
*
|
|
24
|
+
* Build normally
|
|
25
|
+
*
|
|
26
|
+
* TODO: This should really be using a released artifact from a
|
|
27
|
+
* versioned build.
|
|
28
|
+
*
|
|
29
|
+
**************************************************************************/
|
|
30
|
+
this.workflow = new build_1.BuildWorkflow(project, {
|
|
31
|
+
name: "deploy",
|
|
32
|
+
buildTask: project.buildTask,
|
|
33
|
+
workflowTriggers: {
|
|
34
|
+
push: {
|
|
35
|
+
branches: ["main"],
|
|
36
|
+
},
|
|
37
|
+
workflowDispatch: {},
|
|
38
|
+
},
|
|
39
|
+
mutableBuild: false,
|
|
40
|
+
preBuildSteps: [
|
|
41
|
+
{
|
|
42
|
+
name: "Setup PNPM",
|
|
43
|
+
uses: "pnpm/action-setup@v3",
|
|
44
|
+
with: {
|
|
45
|
+
version: versions_1.VERSION.PNPM_VERSION,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Install dependencies",
|
|
50
|
+
run: "pnpm i --no-frozen-lockfile",
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Attach build all turbo runner to the build workflow.
|
|
56
|
+
*/
|
|
57
|
+
this.workflow.addPostBuildSteps({
|
|
58
|
+
name: "Build Sub Projects",
|
|
59
|
+
run: `npx projen ${turbo_1.ROOT_CI_TASK_NAME}`,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* This runs after all the projects are setup but before any files are
|
|
64
|
+
* synthesized. This allows us to update the build yaml with complete
|
|
65
|
+
* information.
|
|
66
|
+
*/
|
|
67
|
+
preSynthesize() {
|
|
68
|
+
super.preSynthesize();
|
|
69
|
+
/***************************************************************************
|
|
70
|
+
*
|
|
71
|
+
* Production Deploy
|
|
72
|
+
*
|
|
73
|
+
**************************************************************************/
|
|
74
|
+
this.project.subprojects
|
|
75
|
+
// only AwsCdkTypeScriptApp projects
|
|
76
|
+
.filter((subproject) => subproject instanceof awscdk_1.AwsCdkTypeScriptApp)
|
|
77
|
+
.forEach((subproject) => {
|
|
78
|
+
/**
|
|
79
|
+
* An array of all deployment configs.
|
|
80
|
+
*/
|
|
81
|
+
const deployConfigs = aws_deployment_config_1.AwsDeploymentConfig.of(subproject);
|
|
82
|
+
/**
|
|
83
|
+
* Any configs? let's see if any have CI support for PR deploys!
|
|
84
|
+
*/
|
|
85
|
+
if (deployConfigs) {
|
|
86
|
+
deployConfigs.forEach((config) => {
|
|
87
|
+
config.deploymentTargets
|
|
88
|
+
// only development targets for CI
|
|
89
|
+
.filter((dt) => dt.ciDeployment &&
|
|
90
|
+
dt.awsDeploymentType === aws_deployment_config_1.AWS_DEPLOY_TYPE.PROD)
|
|
91
|
+
.forEach((dt) => {
|
|
92
|
+
/**
|
|
93
|
+
* Nice long annoying but unique name.
|
|
94
|
+
*/
|
|
95
|
+
const deployJobName = `deploy-${this.project.name}-${dt.account}-${dt.region}`;
|
|
96
|
+
this.workflow.addPostBuildJob(deployJobName, {
|
|
97
|
+
name: `Deploy Prod to ${dt.account}/${dt.region}`,
|
|
98
|
+
runsOn: ["ubuntu-latest"],
|
|
99
|
+
permissions: {
|
|
100
|
+
contents: workflows_model_1.JobPermission.READ,
|
|
101
|
+
idToken: workflows_model_1.JobPermission.WRITE,
|
|
102
|
+
},
|
|
103
|
+
concurrency: deployJobName,
|
|
104
|
+
steps: [...(0, deploy_1.deploySteps)(subproject, dt)],
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.DeployWorkflow = DeployWorkflow;
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtmbG93cy9kZXBsb3ktd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBQ25DLDhDQUF3RDtBQUN4RCw0Q0FBaUQ7QUFDakQsOENBQTJDO0FBQzNDLHVFQUFrRTtBQUVsRSwwQ0FBc0M7QUFDdEMsMkNBQTZDO0FBQzdDLHdFQUdzQztBQUN0QyxvQ0FBNkM7QUFFaEMsUUFBQSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFFOUMsTUFBYSxjQUFlLFNBQVEsa0JBQVM7SUFNM0MsWUFBbUIsT0FBNkI7UUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREUsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFHOUMsTUFBTSxNQUFNLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUVEOzs7Ozs7O29GQU80RTtRQUU1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDekMsSUFBSSxFQUFFLFFBQVE7WUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsZ0JBQWdCLEVBQUU7Z0JBQ2hCLElBQUksRUFBRTtvQkFDSixRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ25CO2dCQUNELGdCQUFnQixFQUFFLEVBQUU7YUFDckI7WUFDRCxZQUFZLEVBQUUsS0FBSztZQUVuQixhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxzQkFBc0I7b0JBQzVCLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO3FCQUM5QjtpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixHQUFHLEVBQUUsNkJBQTZCO2lCQUNuQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsR0FBRyxFQUFFLGNBQWMseUJBQWlCLEVBQUU7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhO1FBQ1gsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRCOzs7O29GQUk0RTtRQUU1RSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDdEIsb0NBQW9DO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxZQUFZLDRCQUFtQixDQUFDO2FBQ2pFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RCOztlQUVHO1lBQ0gsTUFBTSxhQUFhLEdBQUcsMkNBQW1CLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpEOztlQUVHO1lBQ0gsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMvQixNQUFNLENBQUMsaUJBQWlCO3dCQUN0QixrQ0FBa0M7eUJBQ2pDLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsRUFBRSxDQUFDLFlBQVk7d0JBQ2YsRUFBRSxDQUFDLGlCQUFpQixLQUFLLHVDQUFlLENBQUMsSUFBSSxDQUNoRDt5QkFDQSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3QkFDZDs7MkJBRUc7d0JBQ0gsTUFBTSxhQUFhLEdBQUcsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFFL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFOzRCQUMzQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTs0QkFDakQsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDOzRCQUN6QixXQUFXLEVBQUU7Z0NBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsSUFBSTtnQ0FDNUIsT0FBTyxFQUFFLCtCQUFhLENBQUMsS0FBSzs2QkFDN0I7NEJBQ0QsV0FBVyxFQUFFLGFBQWE7NEJBQzFCLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBQSxvQkFBVyxFQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDeEMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGO0FBckhELHdDQXFIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tIFwicHJvamVuL2xpYi9hd3NjZGtcIjtcbmltcG9ydCB7IEJ1aWxkV29ya2Zsb3cgfSBmcm9tIFwicHJvamVuL2xpYi9idWlsZFwiO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5pbXBvcnQgeyBkZXBsb3lTdGVwcyB9IGZyb20gXCIuL3N0ZXBzL2RlcGxveVwiO1xuaW1wb3J0IHtcbiAgQVdTX0RFUExPWV9UWVBFLFxuICBBd3NEZXBsb3ltZW50Q29uZmlnLFxufSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgUk9PVF9DSV9UQVNLX05BTUUgfSBmcm9tIFwiLi4vdHVyYm9cIjtcblxuZXhwb3J0IGNvbnN0IFBST0RfREVQTE9ZX05BTUUgPSBcInByb2QtZGVwbG95XCI7XG5cbmV4cG9ydCBjbGFzcyBEZXBsb3lXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBIb2xkIHRoZSBkZXBsb3kgd29ya2Zsb3cgc28gd2UgY2FuIGFkZCB0byBpdCBpbiBwcmVTeW50aFxuICAgKi9cbiAgcHJpdmF0ZSB3b3JrZmxvdzogQnVpbGRXb3JrZmxvdztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IGdpdGh1YiA9IEdpdEh1Yi5vZihwcm9qZWN0KTtcblxuICAgIGlmICghZ2l0aHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRGVwbG95V29ya2Zsb3cgcmVxdWlyZXMgYSBHaXRIdWIgY29tcG9uZW50IGluIHRoZSBwcm9qZWN0XCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJ1aWxkIG5vcm1hbGx5XG4gICAgICpcbiAgICAgKiBUT0RPOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgdXNpbmcgYSByZWxlYXNlZCBhcnRpZmFjdCBmcm9tIGFcbiAgICAgKiAgICAgICAgdmVyc2lvbmVkIGJ1aWxkLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy53b3JrZmxvdyA9IG5ldyBCdWlsZFdvcmtmbG93KHByb2plY3QsIHtcbiAgICAgIG5hbWU6IFwiZGVwbG95XCIsXG4gICAgICBidWlsZFRhc2s6IHByb2plY3QuYnVpbGRUYXNrLFxuICAgICAgd29ya2Zsb3dUcmlnZ2Vyczoge1xuICAgICAgICBwdXNoOiB7XG4gICAgICAgICAgYnJhbmNoZXM6IFtcIm1haW5cIl0sXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgfSxcbiAgICAgIG11dGFibGVCdWlsZDogZmFsc2UsXG5cbiAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiU2V0dXAgUE5QTVwiLFxuICAgICAgICAgIHVzZXM6IFwicG5wbS9hY3Rpb24tc2V0dXBAdjNcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OLlBOUE1fVkVSU0lPTixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJJbnN0YWxsIGRlcGVuZGVuY2llc1wiLFxuICAgICAgICAgIHJ1bjogXCJwbnBtIGkgLS1uby1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2ggYnVpbGQgYWxsIHR1cmJvIHJ1bm5lciB0byB0aGUgYnVpbGQgd29ya2Zsb3cuXG4gICAgICovXG4gICAgdGhpcy53b3JrZmxvdy5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICBuYW1lOiBcIkJ1aWxkIFN1YiBQcm9qZWN0c1wiLFxuICAgICAgcnVuOiBgbnB4IHByb2plbiAke1JPT1RfQ0lfVEFTS19OQU1FfWAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBydW5zIGFmdGVyIGFsbCB0aGUgcHJvamVjdHMgYXJlIHNldHVwIGJ1dCBiZWZvcmUgYW55IGZpbGVzIGFyZVxuICAgKiBzeW50aGVzaXplZC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIHRoZSBidWlsZCB5YW1sIHdpdGggY29tcGxldGVcbiAgICogaW5mb3JtYXRpb24uXG4gICAqL1xuICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFByb2R1Y3Rpb24gRGVwbG95XG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHNcbiAgICAgIC8vIG9ubHkgQXdzQ2RrVHlwZVNjcmlwdEFwcCBwcm9qZWN0c1xuICAgICAgLmZpbHRlcigoc3VicHJvamVjdCkgPT4gc3VicHJvamVjdCBpbnN0YW5jZW9mIEF3c0Nka1R5cGVTY3JpcHRBcHApXG4gICAgICAuZm9yRWFjaCgoc3VicHJvamVjdCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQW4gYXJyYXkgb2YgYWxsIGRlcGxveW1lbnQgY29uZmlncy5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGRlcGxveUNvbmZpZ3MgPSBBd3NEZXBsb3ltZW50Q29uZmlnLm9mKHN1YnByb2plY3QpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbnkgY29uZmlncz8gbGV0J3Mgc2VlIGlmIGFueSBoYXZlIENJIHN1cHBvcnQgZm9yIFBSIGRlcGxveXMhXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZGVwbG95Q29uZmlncykge1xuICAgICAgICAgIGRlcGxveUNvbmZpZ3MuZm9yRWFjaCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25maWcuZGVwbG95bWVudFRhcmdldHNcbiAgICAgICAgICAgICAgLy8gb25seSBkZXZlbG9wbWVudCB0YXJnZXRzIGZvciBDSVxuICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChkdCkgPT5cbiAgICAgICAgICAgICAgICAgIGR0LmNpRGVwbG95bWVudCAmJlxuICAgICAgICAgICAgICAgICAgZHQuYXdzRGVwbG95bWVudFR5cGUgPT09IEFXU19ERVBMT1lfVFlQRS5QUk9ELFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChkdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE5pY2UgbG9uZyBhbm5veWluZyBidXQgdW5pcXVlIG5hbWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwbG95Sm9iTmFtZSA9IGBkZXBsb3ktJHt0aGlzLnByb2plY3QubmFtZX0tJHtkdC5hY2NvdW50fS0ke2R0LnJlZ2lvbn1gO1xuXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5hZGRQb3N0QnVpbGRKb2IoZGVwbG95Sm9iTmFtZSwge1xuICAgICAgICAgICAgICAgICAgbmFtZTogYERlcGxveSBQcm9kIHRvICR7ZHQuYWNjb3VudH0vJHtkdC5yZWdpb259YCxcbiAgICAgICAgICAgICAgICAgIHJ1bnNPbjogW1widWJ1bnR1LWxhdGVzdFwiXSxcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29uY3VycmVuY3k6IGRlcGxveUpvYk5hbWUsXG4gICAgICAgICAgICAgICAgICBzdGVwczogWy4uLmRlcGxveVN0ZXBzKHN1YnByb2plY3QsIGR0KV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./build-workflow"), exports);
|
|
18
|
+
__exportStar(require("./deploy-workflow"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYnVpbGQtd29ya2Zsb3dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcGxveS13b3JrZmxvd1wiO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AwsCdkTypeScriptApp } from "projen/lib/awscdk";
|
|
2
|
+
import { JobStep } from "projen/lib/github/workflows-model";
|
|
3
|
+
import { AwsDeploymentTarget } from "../../aws/aws-deployment-config";
|
|
4
|
+
export declare const deploySteps: (project: AwsCdkTypeScriptApp, deployTarget: AwsDeploymentTarget) => Array<JobStep>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deploySteps = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const versions_1 = require("../../versions");
|
|
6
|
+
const deploySteps = (project, deployTarget) => {
|
|
7
|
+
const projectPath = (0, node_path_1.relative)(project.root.outdir, project.outdir);
|
|
8
|
+
const cdkOut = (0, node_path_1.join)("dist", projectPath, "cdk.out");
|
|
9
|
+
return [
|
|
10
|
+
/**
|
|
11
|
+
* Setup PNPM
|
|
12
|
+
*/
|
|
13
|
+
{
|
|
14
|
+
name: "Setup PNPM",
|
|
15
|
+
uses: "pnpm/action-setup@v3",
|
|
16
|
+
with: {
|
|
17
|
+
version: versions_1.VERSION.PNPM_VERSION,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
/**
|
|
21
|
+
* Setup Node
|
|
22
|
+
*/
|
|
23
|
+
{
|
|
24
|
+
name: "Setup Node",
|
|
25
|
+
uses: "actions/setup-node@v4",
|
|
26
|
+
with: {
|
|
27
|
+
["node-version"]: versions_1.VERSION.NODE_WORKFLOWS,
|
|
28
|
+
},
|
|
29
|
+
// occasionally this step fails due to internal issues at github
|
|
30
|
+
timeoutMinutes: 1,
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* Install CDK
|
|
34
|
+
*/
|
|
35
|
+
{
|
|
36
|
+
name: "Install CDK",
|
|
37
|
+
run: "pnpm add aws-cdk",
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* Configure AWS creds.
|
|
41
|
+
*/
|
|
42
|
+
{
|
|
43
|
+
name: `Configure AWS Credentials for ${deployTarget.account}/${deployTarget.region}`,
|
|
44
|
+
uses: "aws-actions/configure-aws-credentials@v4",
|
|
45
|
+
with: {
|
|
46
|
+
"role-to-assume": deployTarget.ciDeploymentConfig?.roleArn ??
|
|
47
|
+
"ERROR: No role ARN provided",
|
|
48
|
+
"aws-region": deployTarget.region,
|
|
49
|
+
"role-duration-seconds": 900, // 15 minutes
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* Run CDK Deploy
|
|
54
|
+
*/
|
|
55
|
+
{
|
|
56
|
+
name: `Deploy To ${deployTarget.account}/${deployTarget.region}`,
|
|
57
|
+
run: `pnpm dlx aws-cdk deploy --no-rollback --require-approval=never --app=${cdkOut} "*-${deployTarget.account}-${deployTarget.region}"`,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
};
|
|
61
|
+
exports.deploySteps = deploySteps;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBSTNDLDZDQUF5QztBQUVsQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixPQUE0QixFQUM1QixZQUFpQyxFQUNqQixFQUFFO0lBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUEsb0JBQVEsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxnQkFBSSxFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFcEQsT0FBTztRQUNMOztXQUVHO1FBQ0g7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO2FBQzlCO1NBQ0Y7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixJQUFJLEVBQUU7Z0JBQ0osQ0FBQyxjQUFjLENBQUMsRUFBRSxrQkFBTyxDQUFDLGNBQWM7YUFDekM7WUFDRCxnRUFBZ0U7WUFDaEUsY0FBYyxFQUFFLENBQUM7U0FDbEI7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsR0FBRyxFQUFFLGtCQUFrQjtTQUN4QjtRQUVEOztXQUVHO1FBQ0g7WUFDRSxJQUFJLEVBQUUsaUNBQWlDLFlBQVksQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNwRixJQUFJLEVBQUUsMENBQTBDO1lBQ2hELElBQUksRUFBRTtnQkFDSixnQkFBZ0IsRUFDZCxZQUFZLENBQUMsa0JBQWtCLEVBQUUsT0FBTztvQkFDeEMsNkJBQTZCO2dCQUMvQixZQUFZLEVBQUUsWUFBWSxDQUFDLE1BQU07Z0JBQ2pDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxhQUFhO2FBQzVDO1NBQ0Y7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLGFBQWEsWUFBWSxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ2hFLEdBQUcsRUFBRSx3RUFBd0UsTUFBTSxPQUFPLFlBQVksQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRztTQUN6STtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFoRVcsUUFBQSxXQUFXLGVBZ0V0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gXCJwcm9qZW4vbGliL2F3c2Nka1wiO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IEF3c0RlcGxveW1lbnRUYXJnZXQgfSBmcm9tIFwiLi4vLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uc1wiO1xuXG5leHBvcnQgY29uc3QgZGVwbG95U3RlcHMgPSAoXG4gIHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsXG4gIGRlcGxveVRhcmdldDogQXdzRGVwbG95bWVudFRhcmdldCxcbik6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgY29uc3QgcHJvamVjdFBhdGggPSByZWxhdGl2ZShwcm9qZWN0LnJvb3Qub3V0ZGlyLCBwcm9qZWN0Lm91dGRpcik7XG5cbiAgY29uc3QgY2RrT3V0ID0gam9pbihcImRpc3RcIiwgcHJvamVjdFBhdGgsIFwiY2RrLm91dFwiKTtcblxuICByZXR1cm4gW1xuICAgIC8qKlxuICAgICAqIFNldHVwIFBOUE1cbiAgICAgKi9cbiAgICB7XG4gICAgICBuYW1lOiBcIlNldHVwIFBOUE1cIixcbiAgICAgIHVzZXM6IFwicG5wbS9hY3Rpb24tc2V0dXBAdjNcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgdmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXR1cCBOb2RlXG4gICAgICovXG4gICAge1xuICAgICAgbmFtZTogXCJTZXR1cCBOb2RlXCIsXG4gICAgICB1c2VzOiBcImFjdGlvbnMvc2V0dXAtbm9kZUB2NFwiLFxuICAgICAgd2l0aDoge1xuICAgICAgICBbXCJub2RlLXZlcnNpb25cIl06IFZFUlNJT04uTk9ERV9XT1JLRkxPV1MsXG4gICAgICB9LFxuICAgICAgLy8gb2NjYXNpb25hbGx5IHRoaXMgc3RlcCBmYWlscyBkdWUgdG8gaW50ZXJuYWwgaXNzdWVzIGF0IGdpdGh1YlxuICAgICAgdGltZW91dE1pbnV0ZXM6IDEsXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEluc3RhbGwgQ0RLXG4gICAgICovXG4gICAge1xuICAgICAgbmFtZTogXCJJbnN0YWxsIENES1wiLFxuICAgICAgcnVuOiBcInBucG0gYWRkIGF3cy1jZGtcIixcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlIEFXUyBjcmVkcy5cbiAgICAgKi9cbiAgICB7XG4gICAgICBuYW1lOiBgQ29uZmlndXJlIEFXUyBDcmVkZW50aWFscyBmb3IgJHtkZXBsb3lUYXJnZXQuYWNjb3VudH0vJHtkZXBsb3lUYXJnZXQucmVnaW9ufWAsXG4gICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgXCJyb2xlLXRvLWFzc3VtZVwiOlxuICAgICAgICAgIGRlcGxveVRhcmdldC5jaURlcGxveW1lbnRDb25maWc/LnJvbGVBcm4gPz9cbiAgICAgICAgICBcIkVSUk9SOiBObyByb2xlIEFSTiBwcm92aWRlZFwiLFxuICAgICAgICBcImF3cy1yZWdpb25cIjogZGVwbG95VGFyZ2V0LnJlZ2lvbixcbiAgICAgICAgXCJyb2xlLWR1cmF0aW9uLXNlY29uZHNcIjogOTAwLCAvLyAxNSBtaW51dGVzXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSdW4gQ0RLIERlcGxveVxuICAgICAqL1xuICAgIHtcbiAgICAgIG5hbWU6IGBEZXBsb3kgVG8gJHtkZXBsb3lUYXJnZXQuYWNjb3VudH0vJHtkZXBsb3lUYXJnZXQucmVnaW9ufWAsXG4gICAgICBydW46IGBwbnBtIGRseCBhd3MtY2RrIGRlcGxveSAtLW5vLXJvbGxiYWNrIC0tcmVxdWlyZS1hcHByb3ZhbD1uZXZlciAtLWFwcD0ke2Nka091dH0gXCIqLSR7ZGVwbG95VGFyZ2V0LmFjY291bnR9LSR7ZGVwbG95VGFyZ2V0LnJlZ2lvbn1cImAsXG4gICAgfSxcbiAgXTtcbn07XG4iXX0=
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@codedrifters/configulator",
|
|
3
|
+
"description": "Projen configs frequently used in CodeDrifter projects.",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "https://github.com/codedrifters/configulator"
|
|
7
|
+
},
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "CodeDrifters",
|
|
10
|
+
"organization": true
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/jest": "^30.0.0",
|
|
14
|
+
"@types/node": "^22.15.3",
|
|
15
|
+
"@typescript-eslint/eslint-plugin": "^8",
|
|
16
|
+
"@typescript-eslint/parser": "^8",
|
|
17
|
+
"commit-and-tag-version": "^12",
|
|
18
|
+
"constructs": "^10.0.0",
|
|
19
|
+
"eslint": "^9",
|
|
20
|
+
"eslint-config-prettier": "^10.1.2",
|
|
21
|
+
"eslint-import-resolver-typescript": "^4.3.4",
|
|
22
|
+
"eslint-plugin-import": "^2.31.0",
|
|
23
|
+
"eslint-plugin-prettier": "^5.2.6",
|
|
24
|
+
"jest": "^30.0.4",
|
|
25
|
+
"jest-junit": "^16",
|
|
26
|
+
"prettier": "^3.5.3",
|
|
27
|
+
"projen": "^0.91.28",
|
|
28
|
+
"ts-jest": "^29.4.0",
|
|
29
|
+
"ts-node": "^10.9.2",
|
|
30
|
+
"typescript": "^5.8.3"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@jsii/spec": "^1.112.0",
|
|
34
|
+
"constructs": "^10.0.5",
|
|
35
|
+
"projen": "^0.91.28",
|
|
36
|
+
"type-fest": "^4"
|
|
37
|
+
},
|
|
38
|
+
"main": "lib/index.js",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"version": "0.0.0",
|
|
41
|
+
"types": "lib/index.d.ts",
|
|
42
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".",
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "npx projen build",
|
|
45
|
+
"bump": "npx projen bump",
|
|
46
|
+
"clobber": "npx projen clobber",
|
|
47
|
+
"compile": "npx projen compile",
|
|
48
|
+
"default": "npx projen default",
|
|
49
|
+
"eject": "npx projen eject",
|
|
50
|
+
"eslint": "npx projen eslint",
|
|
51
|
+
"package": "npx projen package",
|
|
52
|
+
"post-compile": "npx projen post-compile",
|
|
53
|
+
"post-upgrade": "npx projen post-upgrade",
|
|
54
|
+
"pre-compile": "npx projen pre-compile",
|
|
55
|
+
"release": "npx projen release",
|
|
56
|
+
"test": "npx projen test",
|
|
57
|
+
"test:watch": "npx projen test:watch",
|
|
58
|
+
"unbump": "npx projen unbump",
|
|
59
|
+
"upgrade": "npx projen upgrade",
|
|
60
|
+
"watch": "npx projen watch",
|
|
61
|
+
"projen": "npx projen"
|
|
62
|
+
}
|
|
63
|
+
}
|