skuba 3.17.2 โ 4.1.1
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/jest/moduleNameMapper.js +4 -7
- package/lib/cli/adapter/eslint.js +16 -1
- package/lib/cli/adapter/eslint.js.map +1 -1
- package/lib/cli/configure/analysis/package.js +1 -1
- package/lib/cli/configure/analysis/package.js.map +1 -1
- package/lib/cli/configure/modules/package.js +1 -1
- package/lib/cli/configure/modules/package.js.map +1 -1
- package/lib/cli/configure/processing/package.d.ts +1 -0
- package/lib/cli/node.js +5 -2
- package/lib/cli/node.js.map +1 -1
- package/lib/cli/start.js +3 -4
- package/lib/cli/start.js.map +1 -1
- package/package.json +81 -67
- package/template/base/jest.config.ts +6 -0
- package/template/express-rest-api/.buildkite/pipeline.yml +13 -22
- package/template/express-rest-api/.env +1 -0
- package/template/express-rest-api/Dockerfile +3 -0
- package/template/express-rest-api/gantry.apply.yml +2 -0
- package/template/express-rest-api/gantry.build.yml +2 -1
- package/template/express-rest-api/package.json +2 -2
- package/template/greeter/.buildkite/pipeline.yml +4 -9
- package/template/greeter/package.json +2 -2
- package/template/koa-rest-api/.buildkite/pipeline.yml +13 -22
- package/template/koa-rest-api/.env +1 -0
- package/template/koa-rest-api/Dockerfile +3 -0
- package/template/koa-rest-api/README.md +1 -1
- package/template/koa-rest-api/gantry.apply.yml +2 -0
- package/template/koa-rest-api/gantry.build.yml +2 -1
- package/template/koa-rest-api/package.json +3 -3
- package/template/lambda-sqs-worker/.buildkite/pipeline.yml +17 -22
- package/template/lambda-sqs-worker/.env +1 -0
- package/template/lambda-sqs-worker/package.json +3 -3
- package/template/lambda-sqs-worker/serverless.yml +20 -21
- package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +14 -20
- package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +4 -0
- package/template/lambda-sqs-worker-cdk/infra/appStack.ts +4 -0
- package/template/private-npm-package/.buildkite/pipeline.yml +3 -2
package/jest/moduleNameMapper.js
CHANGED
|
@@ -11,7 +11,7 @@ const {
|
|
|
11
11
|
/**
|
|
12
12
|
* Set a default `src` module alias for backward compatibility.
|
|
13
13
|
*
|
|
14
|
-
* TODO: drop this default in skuba
|
|
14
|
+
* TODO: drop this default in skuba v5.
|
|
15
15
|
*/
|
|
16
16
|
const DEFAULT_PATHS = { src: ['src'], 'src/*': ['src/*'] };
|
|
17
17
|
|
|
@@ -20,8 +20,7 @@ const DEFAULT_PATHS = { src: ['src'], 'src/*': ['src/*'] };
|
|
|
20
20
|
*/
|
|
21
21
|
const getConfigFromDisk = () => {
|
|
22
22
|
const filename =
|
|
23
|
-
|
|
24
|
-
findConfigFile('.', sys.fileExists.bind(this)) || 'tsconfig.json';
|
|
23
|
+
findConfigFile('.', sys.fileExists.bind(this)) ?? 'tsconfig.json';
|
|
25
24
|
|
|
26
25
|
return readConfigFile(filename, sys.readFile.bind(this)).config;
|
|
27
26
|
};
|
|
@@ -33,8 +32,7 @@ module.exports.createModuleNameMapper = (getConfig = getConfigFromDisk) => {
|
|
|
33
32
|
const parsedConfig = parseJsonConfigFileContent(json, sys, '.');
|
|
34
33
|
|
|
35
34
|
const paths = Object.fromEntries(
|
|
36
|
-
|
|
37
|
-
Object.entries(parsedConfig.options.paths || DEFAULT_PATHS).flatMap(
|
|
35
|
+
Object.entries(parsedConfig.options.paths ?? DEFAULT_PATHS).flatMap(
|
|
38
36
|
([key, values]) => [
|
|
39
37
|
// Pass through the input path entry almost verbatim.
|
|
40
38
|
// We trim a trailing slash because TypeScript allows `import 'src'`
|
|
@@ -66,8 +64,7 @@ module.exports.createModuleNameMapper = (getConfig = getConfigFromDisk) => {
|
|
|
66
64
|
),
|
|
67
65
|
);
|
|
68
66
|
|
|
69
|
-
|
|
70
|
-
const prefix = path.join('<rootDir>', parsedConfig.options.baseUrl || '.');
|
|
67
|
+
const prefix = path.join('<rootDir>', parsedConfig.options.baseUrl ?? '.');
|
|
71
68
|
|
|
72
69
|
const moduleNameMapper = pathsToModuleNameMapper(paths, { prefix });
|
|
73
70
|
|
|
@@ -34,10 +34,25 @@ const runESLint = (mode, logger) => __awaiter(void 0, void 0, void 0, function*
|
|
|
34
34
|
const cwd = process.cwd();
|
|
35
35
|
logger.debug('Processing files...');
|
|
36
36
|
const start = process.hrtime.bigint();
|
|
37
|
+
/* eslint-disable no-console */
|
|
38
|
+
const ogConsoleError = console.error;
|
|
39
|
+
console.error = (...args) => {
|
|
40
|
+
if (args[0] !==
|
|
41
|
+
// `eslint-plugin-react` prints this annoying error on non-React repos.
|
|
42
|
+
// We still want to support React linting for repos that have React code,
|
|
43
|
+
// so we have to manually suppress it.
|
|
44
|
+
//
|
|
45
|
+
// https://github.com/yannickcr/eslint-plugin-react/blob/7484acaca8351a8568fa99344bc811c5cd8396bd/lib/util/version.js#L61-L65
|
|
46
|
+
'Warning: React version was set to "detect" in eslint-plugin-react settings, but the "react" package is not installed. Assuming latest React version for linting.') {
|
|
47
|
+
ogConsoleError(...args);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
37
50
|
const [formatter, results] = yield Promise.all([
|
|
38
51
|
engine.loadFormatter(),
|
|
39
52
|
engine.lintFiles('.'),
|
|
40
53
|
]);
|
|
54
|
+
console.error = ogConsoleError;
|
|
55
|
+
/* eslint-enable no-console */
|
|
41
56
|
const end = process.hrtime.bigint();
|
|
42
57
|
logger.plain(`Processed ${(0, logging_1.pluralise)(results.length, 'file')} in ${logger.timing(start, end)}.`);
|
|
43
58
|
const errors = [];
|
|
@@ -60,7 +75,7 @@ const runESLint = (mode, logger) => __awaiter(void 0, void 0, void 0, function*
|
|
|
60
75
|
}
|
|
61
76
|
const ok = errors.length === 0;
|
|
62
77
|
yield eslint_1.ESLint.outputFixes(results);
|
|
63
|
-
const output = formatter.format(results);
|
|
78
|
+
const output = yield formatter.format(results);
|
|
64
79
|
if (output) {
|
|
65
80
|
logger.plain(output);
|
|
66
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,kDAA0B;AAE1B,mCAAgC;AAGhC,iDAAgD;AAEhD,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACpD,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC,CAAC;AAcK,MAAM,SAAS,GAAG,CACvB,IAAuB,EACvB,MAAc,EACS,EAAE;IACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;QACxB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE,IAAI,KAAK,QAAQ;QACtB,6BAA6B,EAAE,OAAO;KACvC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEtC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,MAAM,CAAC,aAAa,EAAE;QACtB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEpC,MAAM,CAAC,KAAK,CACV,aAAa,IAAA,mBAAS,EAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAChE,KAAK,EACL,GAAG,CACJ,GAAG,CACL,CAAC;IAEF,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;KACrD;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAE/B,MAAM,eAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ const generateNotices = ({ dependencies, devDependencies, }) => {
|
|
|
56
56
|
logging_1.log.newline();
|
|
57
57
|
logging_1.log.warn("We're going to tweak your output directories,", 'so double check your bundle once this is done.');
|
|
58
58
|
logging_1.log.newline();
|
|
59
|
-
logging_1.log.warn('Read more:', logging_1.log.bold('https://
|
|
59
|
+
logging_1.log.warn('Read more:', logging_1.log.bold('https://seek-oss.github.io/skuba/docs/migration-guides/seek-module-toolkit.html#building'));
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
return () => { };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/analysis/package.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/analysis/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const packageModule = ({ entryPoint, type, }) => __awaiter(void 0, void 0, void
|
|
|
24
24
|
const version = yield (0, version_1.getSkubaVersion)();
|
|
25
25
|
const initialData = {
|
|
26
26
|
private: type !== 'package',
|
|
27
|
-
scripts: Object.assign(Object.assign({ build: type === 'package' ? 'skuba build-package' : 'skuba build', format: 'skuba format', lint: 'skuba lint' }, (type === 'package' ? {} : { start: '
|
|
27
|
+
scripts: Object.assign(Object.assign({ build: type === 'package' ? 'skuba build-package' : 'skuba build', format: 'skuba format', lint: 'skuba lint' }, (type === 'package' ? {} : { start: 'skuba start' })), { test: 'skuba test --coverage', 'test:watch': 'skuba test --watch' }),
|
|
28
28
|
skuba: {
|
|
29
29
|
entryPoint,
|
|
30
30
|
template: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/modules/package.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAyD;AACzD,2DAAwD;AACxD,mDAAoD;AACpD,iDAA6C;AAG7C,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,gBAAgB;CACjB,CAAC;AAEK,MAAM,aAAa,GAAG,CAAO,EAClC,UAAU,EACV,IAAI,GACI,EAAmB,EAAE;IAC7B,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAe,GAAE,CAAC;IAExC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,IAAI,KAAK,SAAS;QAE3B,OAAO,gCACL,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,EACjE,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,YAAY,IACf,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/modules/package.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export declare const createDependencyFilter: (names: readonly string[], type: 'd
|
|
|
21
21
|
type?: "module" | "commonjs" | undefined;
|
|
22
22
|
main?: string | undefined;
|
|
23
23
|
exports?: import("type-fest").PackageJson.Exports | undefined;
|
|
24
|
+
imports?: import("type-fest").PackageJson.Imports | undefined;
|
|
24
25
|
bin?: string | Record<string, string> | undefined;
|
|
25
26
|
man?: string | string[] | undefined;
|
|
26
27
|
directories?: import("type-fest").PackageJson.DirectoryLocations | undefined;
|
package/lib/cli/node.js
CHANGED
|
@@ -50,13 +50,16 @@ const node = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
50
50
|
});
|
|
51
51
|
// Run a script with plain `node` to support inspector options.
|
|
52
52
|
// https://github.com/TypeStrong/ts-node#programmatic
|
|
53
|
-
return exec('node', ...args.node, '--require', 'tsconfig-paths/register', '--require', 'ts-node/register/transpile-only',
|
|
53
|
+
return exec('node', ...args.node, '--require', 'dotenv/config', '--require', 'tsconfig-paths/register', '--require', 'ts-node/register/transpile-only',
|
|
54
|
+
// Override dangerously warn-only default on Node.js <15 so that we
|
|
55
|
+
// predictably return a non-zero exit code on an unhandled rejection.
|
|
56
|
+
'--unhandled-rejections=throw', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
|
|
54
57
|
}
|
|
55
58
|
// REPL with `ts-node` to support import statements.
|
|
56
59
|
return tsNode
|
|
57
60
|
.createRepl({
|
|
58
61
|
service: tsNode.register({
|
|
59
|
-
require: ['tsconfig-paths/register'],
|
|
62
|
+
require: ['dotenv/config', 'tsconfig-paths/register'],
|
|
60
63
|
transpileOnly: true,
|
|
61
64
|
}),
|
|
62
65
|
})
|
package/lib/cli/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cli/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAC/B,gDAAkC;AAElC,wCAA6C;AAC7C,wCAA2C;AAC3C,oDAA+C;AAExC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAO,GAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC;YACtB,GAAG,EAAE;gBACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;aACtE;SACF,CAAC,CAAC;QAEH,+DAA+D;QAC/D,qDAAqD;QACrD,OAAO,IAAI,CACT,MAAM,EACN,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,iCAAiC,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cli/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAC/B,gDAAkC;AAElC,wCAA6C;AAC7C,wCAA2C;AAC3C,oDAA+C;AAExC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAO,GAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC;YACtB,GAAG,EAAE;gBACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;aACtE;SACF,CAAC,CAAC;QAEH,+DAA+D;QAC/D,qDAAqD;QACrD,OAAO,IAAI,CACT,MAAM,EACN,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,eAAe,EACf,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,iCAAiC;QACjC,mEAAmE;QACnE,qEAAqE;QACrE,8BAA8B,EAC9B,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;KACH;IAED,oDAAoD;IACpD,OAAO,MAAM;SACV,UAAU,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;YACvB,OAAO,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;YACrD,aAAa,EAAE,IAAI;SACpB,CAAC;KACH,CAAC;SACD,KAAK,EAAE,CAAC;AACb,CAAC,CAAA,CAAC;AAzCW,QAAA,IAAI,QAyCf"}
|
package/lib/cli/start.js
CHANGED
|
@@ -20,20 +20,19 @@ const exec_1 = require("../utils/exec");
|
|
|
20
20
|
const manifest_1 = require("../utils/manifest");
|
|
21
21
|
const validation_1 = require("../utils/validation");
|
|
22
22
|
const start = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
var _a;
|
|
23
24
|
const [args, availablePort] = yield Promise.all([
|
|
24
25
|
(0, args_1.parseRunArgs)(process.argv.slice(2)),
|
|
25
26
|
(0, get_port_1.default)(),
|
|
26
27
|
]);
|
|
27
|
-
|
|
28
|
-
args.entryPoint = yield (0, manifest_1.getEntryPointFromManifest)();
|
|
29
|
-
}
|
|
28
|
+
(_a = args.entryPoint) !== null && _a !== void 0 ? _a : (args.entryPoint = yield (0, manifest_1.getEntryPointFromManifest)());
|
|
30
29
|
const execProcess = (0, exec_1.createExec)({
|
|
31
30
|
env: {
|
|
32
31
|
__SKUBA_ENTRY_POINT: args.entryPoint,
|
|
33
32
|
__SKUBA_PORT: String((0, validation_1.isIpPort)(args.port) ? args.port : availablePort),
|
|
34
33
|
},
|
|
35
34
|
});
|
|
36
|
-
return execProcess('ts-node-dev', ...args.node, '--require', 'tsconfig-paths/register', '--respawn', '--transpile-only', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
|
|
35
|
+
return execProcess('ts-node-dev', ...args.node, '--require', 'dotenv/config', '--require', 'tsconfig-paths/register', '--respawn', '--transpile-only', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
|
|
37
36
|
});
|
|
38
37
|
exports.start = start;
|
|
39
38
|
//# sourceMappingURL=start.js.map
|
package/lib/cli/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAE/B,wCAA6C;AAC7C,wCAA2C;AAC3C,gDAA8D;AAC9D,oDAA+C;AAExC,MAAM,KAAK,GAAG,GAAS,EAAE
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAE/B,wCAA6C;AAC7C,wCAA2C;AAC3C,gDAA8D;AAC9D,oDAA+C;AAExC,MAAM,KAAK,GAAG,GAAS,EAAE;;IAC9B,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,IAAA,kBAAO,GAAE;KACV,CAAC,CAAC;IAEH,MAAA,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,MAAM,IAAA,oCAAyB,GAAE,EAAC;IAEtD,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC;QAC7B,GAAG,EAAE;YACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;YACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;SACtE;KACF,CAAC,CAAC;IAEH,OAAO,WAAW,CAChB,aAAa,EACb,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,eAAe,EACf,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;AACJ,CAAC,CAAA,CAAC;AA3BW,QAAA,KAAK,SA2BhB"}
|
package/package.json
CHANGED
|
@@ -1,76 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "skuba",
|
|
3
|
-
"description": "Toolkit for backend TypeScript development",
|
|
4
2
|
"bin": {
|
|
5
3
|
"skuba": "lib/skuba.js"
|
|
6
4
|
},
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
},
|
|
10
|
-
"version": "3.17.2",
|
|
11
|
-
"main": "lib/index.js",
|
|
12
|
-
"typings": "lib/index.d.ts",
|
|
13
|
-
"files": [
|
|
14
|
-
"config/**/*",
|
|
15
|
-
"jest/**/*",
|
|
16
|
-
"lib*/**/*.d.ts",
|
|
17
|
-
"lib*/**/*.js",
|
|
18
|
-
"lib*/**/*.js.map",
|
|
19
|
-
"template/**/*",
|
|
20
|
-
"jest-preset.js"
|
|
21
|
-
],
|
|
22
|
-
"sideEffects": false,
|
|
23
|
-
"license": "MIT",
|
|
24
|
-
"scripts": {
|
|
25
|
-
"build": "ts-node --transpile-only src/skuba build && scripts/postbuild.sh",
|
|
26
|
-
"changeset:add": "changeset add && prettier --loglevel silent --write '.changeset/*.md'",
|
|
27
|
-
"deploy": "scripts/deploy.sh",
|
|
28
|
-
"format": "yarn skuba format",
|
|
29
|
-
"lint": "yarn skuba lint",
|
|
30
|
-
"release": "yarn build && changeset publish",
|
|
31
|
-
"stage": "changeset version && yarn format",
|
|
32
|
-
"skuba": "yarn build && node lib/skuba",
|
|
33
|
-
"test": "yarn skuba test",
|
|
34
|
-
"test:ci": "yarn skuba test --config jest.config.int.ts --runInBand",
|
|
35
|
-
"test:int": "yarn skuba test --config jest.config.int.ts --runInBand",
|
|
36
|
-
"test:template": "scripts/test-template.sh",
|
|
37
|
-
"test:watch": "yarn skuba test --config jest.config.int.ts --runInBand --watch"
|
|
38
|
-
},
|
|
39
|
-
"repository": {
|
|
40
|
-
"type": "git",
|
|
41
|
-
"url": "https://github.com/seek-oss/skuba.git"
|
|
42
|
-
},
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"@changesets/cli": "2.19.0",
|
|
45
|
-
"@changesets/get-github-info": "0.5.0",
|
|
46
|
-
"@jest/reporters": "27.4.6",
|
|
47
|
-
"@types/ejs": "3.1.0",
|
|
48
|
-
"@types/express": "4.17.13",
|
|
49
|
-
"@types/fs-extra": "9.0.13",
|
|
50
|
-
"@types/koa": "2.13.4",
|
|
51
|
-
"@types/lodash.mergewith": "4.6.6",
|
|
52
|
-
"@types/module-alias": "2.0.1",
|
|
53
|
-
"@types/npm-which": "3.0.1",
|
|
54
|
-
"@types/picomatch": "2.3.0",
|
|
55
|
-
"@types/supertest": "2.0.11",
|
|
56
|
-
"express": "4.17.2",
|
|
57
|
-
"jsonfile": "6.1.0",
|
|
58
|
-
"koa": "2.13.4",
|
|
59
|
-
"memfs": "3.4.1",
|
|
60
|
-
"semver": "7.3.5",
|
|
61
|
-
"supertest": "6.2.1",
|
|
62
|
-
"type-fest": "2.9.0"
|
|
5
|
+
"bugs": {
|
|
6
|
+
"url": "https://github.com/seek-oss/skuba/issues"
|
|
63
7
|
},
|
|
64
8
|
"dependencies": {
|
|
65
9
|
"@octokit/rest": "^18.12.0",
|
|
66
10
|
"@octokit/types": "^6.34.0",
|
|
67
11
|
"@types/jest": "^27.4.0",
|
|
12
|
+
"@types/node": ">=14.18",
|
|
68
13
|
"chalk": "^4.1.0",
|
|
69
14
|
"concurrently": "^7.0.0",
|
|
15
|
+
"dotenv": "^16.0.0",
|
|
70
16
|
"ejs": "^3.1.6",
|
|
71
17
|
"enquirer": "^2.3.6",
|
|
72
18
|
"eslint": "^7.27.0",
|
|
73
|
-
"eslint-config-skuba": "1.0.
|
|
19
|
+
"eslint-config-skuba": "1.0.15",
|
|
74
20
|
"execa": "^5.0.0",
|
|
75
21
|
"fdir": "^5.0.0",
|
|
76
22
|
"fs-extra": "^10.0.0",
|
|
@@ -78,37 +24,105 @@
|
|
|
78
24
|
"get-port": "^5.1.1",
|
|
79
25
|
"ignore": "^5.1.8",
|
|
80
26
|
"is-installed-globally": "^0.4.0",
|
|
81
|
-
"isomorphic-git": "^1.
|
|
27
|
+
"isomorphic-git": "^1.11.1",
|
|
82
28
|
"jest": "^27.4.5",
|
|
83
29
|
"latest-version": "^5.1.0",
|
|
84
30
|
"lodash.mergewith": "^4.6.2",
|
|
85
|
-
"normalize-package-data": "^
|
|
31
|
+
"normalize-package-data": "^4.0.0",
|
|
86
32
|
"npm-run-path": "^4.0.1",
|
|
87
33
|
"npm-which": "^3.0.1",
|
|
88
34
|
"picomatch": "^2.2.2",
|
|
89
|
-
"prettier": "~2.
|
|
35
|
+
"prettier": "~2.6.0",
|
|
90
36
|
"read-pkg-up": "^7.0.1",
|
|
91
37
|
"runtypes": "^6.0.0",
|
|
92
|
-
"semantic-release": "^
|
|
38
|
+
"semantic-release": "^19.0.0",
|
|
93
39
|
"serialize-error": "^8.0.1",
|
|
94
40
|
"simple-git": "^3.0.0",
|
|
95
41
|
"strip-ansi": "^6.0.1",
|
|
96
42
|
"ts-jest": "^27.1.2",
|
|
97
|
-
"ts-node": "^
|
|
98
|
-
"ts-node-dev": "^
|
|
43
|
+
"ts-node": "^10.5.0",
|
|
44
|
+
"ts-node-dev": "^2.0.0-0",
|
|
99
45
|
"tsconfig-paths": "^3.11.0",
|
|
100
46
|
"tsconfig-seek": "1.0.2",
|
|
101
47
|
"typescript": "~4.4.4"
|
|
102
48
|
},
|
|
49
|
+
"description": "SEEK development toolkit for backend applications and packages",
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@changesets/cli": "2.21.1",
|
|
52
|
+
"@changesets/get-github-info": "0.5.0",
|
|
53
|
+
"@jest/reporters": "27.5.1",
|
|
54
|
+
"@types/ejs": "3.1.0",
|
|
55
|
+
"@types/express": "4.17.13",
|
|
56
|
+
"@types/fs-extra": "9.0.13",
|
|
57
|
+
"@types/koa": "2.13.4",
|
|
58
|
+
"@types/lodash.mergewith": "4.6.6",
|
|
59
|
+
"@types/module-alias": "2.0.1",
|
|
60
|
+
"@types/npm-which": "3.0.1",
|
|
61
|
+
"@types/picomatch": "2.3.0",
|
|
62
|
+
"@types/supertest": "2.0.11",
|
|
63
|
+
"express": "4.17.3",
|
|
64
|
+
"jsonfile": "6.1.0",
|
|
65
|
+
"koa": "2.13.4",
|
|
66
|
+
"memfs": "3.4.1",
|
|
67
|
+
"semver": "7.3.5",
|
|
68
|
+
"supertest": "6.2.2",
|
|
69
|
+
"type-fest": "2.12.0"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=14.18"
|
|
73
|
+
},
|
|
74
|
+
"files": [
|
|
75
|
+
"config/**/*",
|
|
76
|
+
"jest/**/*",
|
|
77
|
+
"lib*/**/*.d.ts",
|
|
78
|
+
"lib*/**/*.js",
|
|
79
|
+
"lib*/**/*.js.map",
|
|
80
|
+
"template/**/*",
|
|
81
|
+
"jest-preset.js"
|
|
82
|
+
],
|
|
83
|
+
"homepage": "https://github.com/seek-oss/skuba#readme",
|
|
84
|
+
"license": "MIT",
|
|
85
|
+
"main": "lib/index.js",
|
|
86
|
+
"name": "skuba",
|
|
103
87
|
"peerDependencies": {
|
|
104
|
-
"skuba-dive": "1"
|
|
88
|
+
"skuba-dive": "1 || 2"
|
|
105
89
|
},
|
|
106
90
|
"peerDependenciesMeta": {
|
|
107
91
|
"skuba-dive": {
|
|
108
92
|
"optional": true
|
|
109
93
|
}
|
|
110
94
|
},
|
|
95
|
+
"private": false,
|
|
96
|
+
"repository": {
|
|
97
|
+
"type": "git",
|
|
98
|
+
"url": "git+https://github.com/seek-oss/skuba.git"
|
|
99
|
+
},
|
|
111
100
|
"resolutions": {
|
|
101
|
+
"**/@types/node": ">=14.18",
|
|
112
102
|
"semantic-release/@semantic-release/npm/npm/**/ansi-regex": "5.0.1"
|
|
113
|
-
}
|
|
103
|
+
},
|
|
104
|
+
"scripts": {
|
|
105
|
+
"build": "ts-node --transpile-only src/skuba build && scripts/postbuild.sh",
|
|
106
|
+
"changeset:add": "changeset add && prettier --loglevel silent --write '.changeset/*.md'",
|
|
107
|
+
"deploy": "scripts/deploy.sh",
|
|
108
|
+
"format": "yarn skuba format",
|
|
109
|
+
"lint": "yarn skuba lint",
|
|
110
|
+
"release": "yarn build && changeset publish",
|
|
111
|
+
"stage": "changeset version && yarn format",
|
|
112
|
+
"skuba": "yarn build && node lib/skuba",
|
|
113
|
+
"test": "yarn skuba test",
|
|
114
|
+
"test:ci": "yarn skuba test --config jest.config.int.ts --runInBand",
|
|
115
|
+
"test:int": "yarn skuba test --config jest.config.int.ts --runInBand",
|
|
116
|
+
"test:template": "scripts/test-template.sh",
|
|
117
|
+
"test:watch": "yarn skuba test --config jest.config.int.ts --runInBand --watch"
|
|
118
|
+
},
|
|
119
|
+
"sideEffects": false,
|
|
120
|
+
"skuba": {
|
|
121
|
+
"entryPoint": "src/index.ts",
|
|
122
|
+
"template": null,
|
|
123
|
+
"type": "package",
|
|
124
|
+
"version": "4.0.0"
|
|
125
|
+
},
|
|
126
|
+
"types": "./lib/index.d.ts",
|
|
127
|
+
"version": "4.1.1"
|
|
114
128
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- &dev
|
|
4
|
-
agents:
|
|
5
|
-
queue: <%- devBuildkiteQueueName %>
|
|
6
|
-
|
|
7
|
-
- &prod
|
|
8
|
-
agents:
|
|
9
|
-
queue: <%- prodBuildkiteQueueName %>
|
|
1
|
+
agents:
|
|
2
|
+
queue: <%- prodBuildkiteQueueName %>
|
|
10
3
|
|
|
4
|
+
configs:
|
|
11
5
|
plugins:
|
|
12
6
|
- &aws-sm
|
|
13
7
|
seek-oss/aws-sm#v2.3.1:
|
|
@@ -36,8 +30,7 @@ configs:
|
|
|
36
30
|
permit_on_passed: true
|
|
37
31
|
|
|
38
32
|
steps:
|
|
39
|
-
-
|
|
40
|
-
label: ๐งโโ๏ธ Warm Prod
|
|
33
|
+
- label: ๐งโโ๏ธ Warm Prod
|
|
41
34
|
command: ':'
|
|
42
35
|
key: warm-prod
|
|
43
36
|
plugins:
|
|
@@ -45,8 +38,7 @@ steps:
|
|
|
45
38
|
- *private-npm
|
|
46
39
|
- *docker-ecr-cache
|
|
47
40
|
|
|
48
|
-
-
|
|
49
|
-
label: ๐งช Test & Lint
|
|
41
|
+
- label: ๐งช Test & Lint
|
|
50
42
|
commands:
|
|
51
43
|
- echo '+++ yarn test:ci'
|
|
52
44
|
- yarn test:ci
|
|
@@ -62,14 +54,13 @@ steps:
|
|
|
62
54
|
- docker-compose#v3.9.0:
|
|
63
55
|
run: app
|
|
64
56
|
|
|
65
|
-
-
|
|
66
|
-
label: ๐ฆ Build & Package
|
|
57
|
+
- label: ๐ฆ Build & Package
|
|
67
58
|
depends_on: warm-prod
|
|
68
59
|
plugins:
|
|
69
60
|
- *aws-sm
|
|
70
61
|
- *private-npm
|
|
71
62
|
- *docker-ecr-cache
|
|
72
|
-
- seek-jobs/gantry#v1.
|
|
63
|
+
- seek-jobs/gantry#v1.6.2:
|
|
73
64
|
command: build
|
|
74
65
|
file: gantry.build.yml
|
|
75
66
|
region: <%- region %>
|
|
@@ -79,13 +70,14 @@ steps:
|
|
|
79
70
|
- block: ๐๐ปโโ๏ธ Deploy Dev
|
|
80
71
|
branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
|
|
81
72
|
|
|
82
|
-
- <<: *
|
|
83
|
-
|
|
73
|
+
- <<: *deploy
|
|
74
|
+
agents:
|
|
75
|
+
queue: <%- devBuildkiteQueueName %>
|
|
84
76
|
label: ๐ค Deploy Dev
|
|
85
77
|
concurrency_group: <%- teamName %>/deploy/gantry/<%- devGantryEnvironmentName %>
|
|
86
78
|
key: deploy-dev
|
|
87
79
|
plugins:
|
|
88
|
-
- seek-jobs/gantry#v1.
|
|
80
|
+
- seek-jobs/gantry#v1.6.2:
|
|
89
81
|
command: apply
|
|
90
82
|
environment: <%- devGantryEnvironmentName %>
|
|
91
83
|
file: gantry.apply.yml
|
|
@@ -94,14 +86,13 @@ steps:
|
|
|
94
86
|
- .gantry/common.yml
|
|
95
87
|
- .gantry/dev.yml
|
|
96
88
|
|
|
97
|
-
- <<: *
|
|
98
|
-
<<: *deploy
|
|
89
|
+
- <<: *deploy
|
|
99
90
|
label: ๐ Deploy Prod
|
|
100
91
|
branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
|
|
101
92
|
concurrency_group: <%- teamName %>/deploy/gantry/<%- prodGantryEnvironmentName %>
|
|
102
93
|
depends_on: deploy-dev
|
|
103
94
|
plugins:
|
|
104
|
-
- seek-jobs/gantry#v1.
|
|
95
|
+
- seek-jobs/gantry#v1.6.2:
|
|
105
96
|
command: apply
|
|
106
97
|
environment: <%- prodGantryEnvironmentName %>
|
|
107
98
|
file: gantry.apply.yml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ENVIRONMENT=local
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"dependencies": {
|
|
3
3
|
"@seek/logger": "^5.0.1",
|
|
4
4
|
"express": "^4.17.1",
|
|
5
|
-
"skuba-dive": "^
|
|
5
|
+
"skuba-dive": "^2.0.0"
|
|
6
6
|
},
|
|
7
7
|
"devDependencies": {
|
|
8
8
|
"@types/express": "^4.17.13",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"build": "skuba build",
|
|
22
22
|
"format": "skuba format",
|
|
23
23
|
"lint": "skuba lint",
|
|
24
|
-
"start": "
|
|
24
|
+
"start": "skuba start --port <%- port %>",
|
|
25
25
|
"start:debug": "yarn start --inspect-brk",
|
|
26
26
|
"test": "skuba test",
|
|
27
27
|
"test:ci": "skuba test --coverage",
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- &prod
|
|
4
|
-
agents:
|
|
5
|
-
queue: <%- prodBuildkiteQueueName %>
|
|
6
|
-
env:
|
|
7
|
-
ENVIRONMENT: prod
|
|
1
|
+
agents:
|
|
2
|
+
queue: <%- prodBuildkiteQueueName %>
|
|
8
3
|
|
|
4
|
+
configs:
|
|
9
5
|
plugins:
|
|
10
6
|
- &aws-sm
|
|
11
7
|
seek-oss/aws-sm#v2.3.1:
|
|
@@ -24,8 +20,7 @@ configs:
|
|
|
24
20
|
env: NPM_READ_TOKEN
|
|
25
21
|
|
|
26
22
|
steps:
|
|
27
|
-
-
|
|
28
|
-
label: ๐งช Test & Lint
|
|
23
|
+
- label: ๐งช Test & Lint
|
|
29
24
|
commands:
|
|
30
25
|
- echo '+++ yarn test:ci'
|
|
31
26
|
- yarn test:ci
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"skuba-dive": "^
|
|
3
|
+
"skuba-dive": "^2.0.0"
|
|
4
4
|
},
|
|
5
5
|
"devDependencies": {
|
|
6
6
|
"@types/node": "^16.0.0",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"build": "skuba build",
|
|
16
16
|
"format": "skuba format",
|
|
17
17
|
"lint": "skuba lint",
|
|
18
|
-
"start": "
|
|
18
|
+
"start": "skuba start",
|
|
19
19
|
"start:debug": "yarn start --inspect-brk",
|
|
20
20
|
"test": "skuba test",
|
|
21
21
|
"test:ci": "skuba test --coverage",
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- &dev
|
|
4
|
-
agents:
|
|
5
|
-
queue: <%- devBuildkiteQueueName %>
|
|
6
|
-
|
|
7
|
-
- &prod
|
|
8
|
-
agents:
|
|
9
|
-
queue: <%- prodBuildkiteQueueName %>
|
|
1
|
+
agents:
|
|
2
|
+
queue: <%- prodBuildkiteQueueName %>
|
|
10
3
|
|
|
4
|
+
configs:
|
|
11
5
|
plugins:
|
|
12
6
|
- &aws-sm
|
|
13
7
|
seek-oss/aws-sm#v2.3.1:
|
|
@@ -36,8 +30,7 @@ configs:
|
|
|
36
30
|
permit_on_passed: true
|
|
37
31
|
|
|
38
32
|
steps:
|
|
39
|
-
-
|
|
40
|
-
label: ๐งโโ๏ธ Warm Prod
|
|
33
|
+
- label: ๐งโโ๏ธ Warm Prod
|
|
41
34
|
command: ':'
|
|
42
35
|
key: warm-prod
|
|
43
36
|
plugins:
|
|
@@ -45,8 +38,7 @@ steps:
|
|
|
45
38
|
- *private-npm
|
|
46
39
|
- *docker-ecr-cache
|
|
47
40
|
|
|
48
|
-
-
|
|
49
|
-
label: ๐งช Test & Lint
|
|
41
|
+
- label: ๐งช Test & Lint
|
|
50
42
|
commands:
|
|
51
43
|
- echo '+++ yarn test:ci'
|
|
52
44
|
- yarn test:ci
|
|
@@ -62,14 +54,13 @@ steps:
|
|
|
62
54
|
- docker-compose#v3.9.0:
|
|
63
55
|
run: app
|
|
64
56
|
|
|
65
|
-
-
|
|
66
|
-
label: ๐ฆ Build & Package
|
|
57
|
+
- label: ๐ฆ Build & Package
|
|
67
58
|
depends_on: warm-prod
|
|
68
59
|
plugins:
|
|
69
60
|
- *aws-sm
|
|
70
61
|
- *private-npm
|
|
71
62
|
- *docker-ecr-cache
|
|
72
|
-
- seek-jobs/gantry#v1.
|
|
63
|
+
- seek-jobs/gantry#v1.6.2:
|
|
73
64
|
command: build
|
|
74
65
|
file: gantry.build.yml
|
|
75
66
|
region: <%- region %>
|
|
@@ -79,13 +70,14 @@ steps:
|
|
|
79
70
|
- block: ๐๐ปโโ๏ธ Deploy Dev
|
|
80
71
|
branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
|
|
81
72
|
|
|
82
|
-
- <<: *
|
|
83
|
-
|
|
73
|
+
- <<: *deploy
|
|
74
|
+
agents:
|
|
75
|
+
queue: <%- devBuildkiteQueueName %>
|
|
84
76
|
label: ๐ค Deploy Dev
|
|
85
77
|
concurrency_group: <%- teamName %>/deploy/gantry/<%- devGantryEnvironmentName %>
|
|
86
78
|
key: deploy-dev
|
|
87
79
|
plugins:
|
|
88
|
-
- seek-jobs/gantry#v1.
|
|
80
|
+
- seek-jobs/gantry#v1.6.2:
|
|
89
81
|
command: apply
|
|
90
82
|
environment: <%- devGantryEnvironmentName %>
|
|
91
83
|
file: gantry.apply.yml
|
|
@@ -94,14 +86,13 @@ steps:
|
|
|
94
86
|
- .gantry/common.yml
|
|
95
87
|
- .gantry/dev.yml
|
|
96
88
|
|
|
97
|
-
- <<: *
|
|
98
|
-
<<: *deploy
|
|
89
|
+
- <<: *deploy
|
|
99
90
|
label: ๐ Deploy Prod
|
|
100
91
|
branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
|
|
101
92
|
concurrency_group: <%- teamName %>/deploy/gantry/<%- prodGantryEnvironmentName %>
|
|
102
93
|
depends_on: deploy-dev
|
|
103
94
|
plugins:
|
|
104
|
-
- seek-jobs/gantry#v1.
|
|
95
|
+
- seek-jobs/gantry#v1.6.2:
|
|
105
96
|
command: apply
|
|
106
97
|
environment: <%- prodGantryEnvironmentName %>
|
|
107
98
|
file: gantry.apply.yml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ENVIRONMENT=local
|
|
@@ -36,7 +36,7 @@ This would be replaced with an external data store in production.
|
|
|
36
36
|
|
|
37
37
|
This project is deployed as a containerised application with [Gantry].
|
|
38
38
|
A typical resource API instance does not require more than 1 vCPU,
|
|
39
|
-
so we
|
|
39
|
+
so we eschew clustering configurations in favour of a single Node.js process per container.
|
|
40
40
|
Under load, we autoscale horizontally in terms of container count up to `autoScaling.maxCount`.
|
|
41
41
|
|
|
42
42
|
Gantry configures [CodeDeploy] for a blue-green deployment approach.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"@koa/router": "^10.1.1",
|
|
4
4
|
"@opentelemetry/api": "^1.0.4",
|
|
5
5
|
"@opentelemetry/exporter-collector-grpc": "^0.25.0",
|
|
6
|
-
"@opentelemetry/instrumentation-aws-sdk": "^0.
|
|
6
|
+
"@opentelemetry/instrumentation-aws-sdk": "^0.6.0",
|
|
7
7
|
"@opentelemetry/instrumentation-http": "^0.27.0",
|
|
8
8
|
"@opentelemetry/sdk-node": "^0.27.0",
|
|
9
9
|
"@seek/logger": "^5.0.1",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"runtypes-filter": "^0.6.0",
|
|
17
17
|
"seek-datadog-custom-metrics": "^4.0.0",
|
|
18
18
|
"seek-koala": "^5.1.0",
|
|
19
|
-
"skuba-dive": "^
|
|
19
|
+
"skuba-dive": "^2.0.0",
|
|
20
20
|
"uuid": "^8.3.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"build": "skuba build",
|
|
42
42
|
"format": "skuba format",
|
|
43
43
|
"lint": "skuba lint",
|
|
44
|
-
"start": "
|
|
44
|
+
"start": "skuba start --port <%- port %>",
|
|
45
45
|
"start:debug": "yarn start --inspect-brk",
|
|
46
46
|
"test": "skuba test",
|
|
47
47
|
"test:ci": "skuba test --coverage",
|
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
agents:
|
|
2
|
+
queue: <%- prodBuildkiteQueueName %>
|
|
3
3
|
|
|
4
4
|
configs:
|
|
5
|
-
environments:
|
|
6
|
-
- &dev
|
|
7
|
-
agents:
|
|
8
|
-
queue: <%- devBuildkiteQueueName %>
|
|
9
|
-
env:
|
|
10
|
-
ENVIRONMENT: dev
|
|
11
|
-
|
|
12
|
-
- &prod
|
|
13
|
-
agents:
|
|
14
|
-
queue: <%- prodBuildkiteQueueName %>
|
|
15
|
-
env:
|
|
16
|
-
ENVIRONMENT: prod
|
|
17
|
-
|
|
18
5
|
plugins:
|
|
19
6
|
- &aws-sm
|
|
20
7
|
seek-oss/aws-sm#v2.3.1:
|
|
@@ -48,15 +35,18 @@ configs:
|
|
|
48
35
|
- docker-compose#v3.9.0:
|
|
49
36
|
dependencies: false
|
|
50
37
|
run: app
|
|
38
|
+
tty: false
|
|
51
39
|
retry:
|
|
52
40
|
manual:
|
|
53
41
|
# Only use this if you need to roll back a deployment ASAP.
|
|
54
42
|
# Always follow up with a proper revert or fix in Git history.
|
|
55
43
|
permit_on_passed: true
|
|
56
44
|
|
|
45
|
+
env:
|
|
46
|
+
VERSION: ${BUILDKITE_COMMIT:0:7}.${BUILDKITE_BUILD_NUMBER}
|
|
47
|
+
|
|
57
48
|
steps:
|
|
58
|
-
-
|
|
59
|
-
label: ๐งช Test, Lint & Build
|
|
49
|
+
- label: ๐งช Test, Lint & Build
|
|
60
50
|
artifact_paths: lib/**/*
|
|
61
51
|
commands:
|
|
62
52
|
- echo '+++ yarn test:ci'
|
|
@@ -74,7 +64,8 @@ steps:
|
|
|
74
64
|
- docker-compose#v3.9.0:
|
|
75
65
|
run: app
|
|
76
66
|
|
|
77
|
-
-
|
|
67
|
+
- agents:
|
|
68
|
+
queue: <%- devBuildkiteQueueName %>
|
|
78
69
|
branches: '!renovate/*'
|
|
79
70
|
label: ๐งโโ๏ธ Warm Dev
|
|
80
71
|
command: ':'
|
|
@@ -87,15 +78,19 @@ steps:
|
|
|
87
78
|
- block: ๐๐ปโโ๏ธ Deploy Dev
|
|
88
79
|
branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
|
|
89
80
|
|
|
90
|
-
- <<: *
|
|
91
|
-
|
|
81
|
+
- <<: *deploy
|
|
82
|
+
agents:
|
|
83
|
+
queue: <%- devBuildkiteQueueName %>
|
|
84
|
+
env:
|
|
85
|
+
ENVIRONMENT: dev
|
|
92
86
|
concurrency_group: <%- repoName %>/deploy/dev
|
|
93
87
|
label: ๐ค Deploy Dev
|
|
94
88
|
|
|
95
89
|
- wait
|
|
96
90
|
|
|
97
|
-
- <<: *
|
|
98
|
-
|
|
91
|
+
- <<: *deploy
|
|
92
|
+
env:
|
|
93
|
+
ENVIRONMENT: prod
|
|
99
94
|
branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
|
|
100
95
|
concurrency_group: <%- repoName %>/deploy/prod
|
|
101
96
|
label: ๐ Deploy Prod
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ENVIRONMENT=local
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"@seek/logger": "^5.0.1",
|
|
4
4
|
"aws-sdk": "^2.1011.0",
|
|
5
5
|
"seek-datadog-custom-metrics": "^4.0.0",
|
|
6
|
-
"skuba-dive": "^
|
|
6
|
+
"skuba-dive": "^2.0.0",
|
|
7
7
|
"runtypes": "^6.4.1",
|
|
8
8
|
"runtypes-filter": "^0.6.0"
|
|
9
9
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"@types/node": "^14.0.0",
|
|
14
14
|
"chance": "^1.1.8",
|
|
15
15
|
"pino-pretty": "^7.1.0",
|
|
16
|
-
"serverless": "^
|
|
16
|
+
"serverless": "^3.0.0",
|
|
17
17
|
"serverless-plugin-canary-deployments": "^0.7.0",
|
|
18
18
|
"serverless-prune-plugin": "^2.0.0",
|
|
19
19
|
"skuba": "*"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"format": "skuba format",
|
|
30
30
|
"lint": "skuba lint",
|
|
31
31
|
"smoke": "serverless invoke --data '{}' --function Worker",
|
|
32
|
-
"start": "
|
|
32
|
+
"start": "skuba start --port <%- port %>",
|
|
33
33
|
"start:debug": "yarn start --inspect-brk",
|
|
34
34
|
"test": "skuba test",
|
|
35
35
|
"test:ci": "skuba test --coverage",
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
service: <%- serviceName %>
|
|
2
2
|
|
|
3
3
|
configValidationMode: error
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
params:
|
|
6
|
+
default:
|
|
7
|
+
description: <%- description %>
|
|
8
|
+
dev:
|
|
9
|
+
deploymentBucket: 'TODO: deploymentBucketName'
|
|
10
|
+
isProduction: false
|
|
11
|
+
prod:
|
|
12
|
+
deploymentBucket: 'TODO: deploymentBucketName'
|
|
13
|
+
isProduction: true
|
|
5
14
|
|
|
6
15
|
custom:
|
|
7
|
-
description: <%- description %>
|
|
8
|
-
env: ${self:custom.envs.${env:ENVIRONMENT}}
|
|
9
|
-
envs:
|
|
10
|
-
dev:
|
|
11
|
-
deploymentBucket: 'TODO: deploymentBucketName'
|
|
12
|
-
isProduction: false
|
|
13
|
-
prod:
|
|
14
|
-
deploymentBucket: 'TODO: deploymentBucketName'
|
|
15
|
-
isProduction: true
|
|
16
16
|
prune:
|
|
17
17
|
automatic: true
|
|
18
18
|
number: 3
|
|
@@ -22,7 +22,6 @@ plugins:
|
|
|
22
22
|
- serverless-prune-plugin
|
|
23
23
|
|
|
24
24
|
provider:
|
|
25
|
-
lambdaHashingVersion: 20201221
|
|
26
25
|
logRetentionInDays: 30
|
|
27
26
|
name: aws
|
|
28
27
|
region: ap-southeast-2
|
|
@@ -34,7 +33,13 @@ provider:
|
|
|
34
33
|
deploymentBucket:
|
|
35
34
|
# Use a shared account-level bucket for Lambda bundles and other artefacts.
|
|
36
35
|
# This is easier to manage in terms of access, deployment, and tagging.
|
|
37
|
-
name: ${
|
|
36
|
+
name: ${param:deploymentBucket}
|
|
37
|
+
environment:
|
|
38
|
+
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
39
|
+
AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
|
|
40
|
+
NODE_ENV: production
|
|
41
|
+
# https://nodejs.org/api/cli.html#cli_node_options_options
|
|
42
|
+
NODE_OPTIONS: --enable-source-maps
|
|
38
43
|
iam:
|
|
39
44
|
role:
|
|
40
45
|
statements:
|
|
@@ -59,7 +64,7 @@ provider:
|
|
|
59
64
|
# https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#seekdatatypes
|
|
60
65
|
# seek:data:types:restricted: job-ads
|
|
61
66
|
seek:env:label: ${env:ENVIRONMENT}
|
|
62
|
-
seek:env:production: ${
|
|
67
|
+
seek:env:production: ${param:isProduction}
|
|
63
68
|
seek:owner:team: '<%- teamName %>'
|
|
64
69
|
seek:source:sha: ${env:BUILDKITE_COMMIT, 'na'}
|
|
65
70
|
seek:source:url: 'https://github.com/SEEK-Jobs/<%- repoName %>'
|
|
@@ -74,7 +79,7 @@ functions:
|
|
|
74
79
|
Worker:
|
|
75
80
|
name: ${self:service}
|
|
76
81
|
handler: lib/app.handler
|
|
77
|
-
description: ${
|
|
82
|
+
description: ${param:description}
|
|
78
83
|
memorySize: 128
|
|
79
84
|
reservedConcurrency: 20
|
|
80
85
|
timeout: 30
|
|
@@ -83,9 +88,6 @@ functions:
|
|
|
83
88
|
alias: Live
|
|
84
89
|
preTrafficHook: WorkerPreHook
|
|
85
90
|
environment:
|
|
86
|
-
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
87
|
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
|
|
88
|
-
|
|
89
91
|
ENVIRONMENT: ${env:ENVIRONMENT}
|
|
90
92
|
SERVICE: ${self:service}
|
|
91
93
|
VERSION: ${env:VERSION, 'local'}
|
|
@@ -102,14 +104,11 @@ functions:
|
|
|
102
104
|
# This is generous because a timeout will hang the deployment
|
|
103
105
|
timeout: 300
|
|
104
106
|
environment:
|
|
105
|
-
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
106
|
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
|
|
107
|
-
|
|
108
107
|
FUNCTION_NAME_TO_INVOKE: ${self:functions.Worker.name}
|
|
109
108
|
|
|
110
109
|
resources:
|
|
111
110
|
# This becomes the Lambda application's description
|
|
112
|
-
Description: ${
|
|
111
|
+
Description: ${param:description}
|
|
113
112
|
|
|
114
113
|
Resources:
|
|
115
114
|
DeadLetterQueue:
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- &dev
|
|
4
|
-
agents:
|
|
5
|
-
queue: <%- devBuildkiteQueueName %>
|
|
6
|
-
env:
|
|
7
|
-
ENVIRONMENT: dev
|
|
8
|
-
|
|
9
|
-
- &prod
|
|
10
|
-
agents:
|
|
11
|
-
queue: <%- prodBuildkiteQueueName %>
|
|
12
|
-
env:
|
|
13
|
-
ENVIRONMENT: prod
|
|
1
|
+
agents:
|
|
2
|
+
queue: <%- prodBuildkiteQueueName %>
|
|
14
3
|
|
|
4
|
+
configs:
|
|
15
5
|
plugins:
|
|
16
6
|
- &aws-sm
|
|
17
7
|
seek-oss/aws-sm#v2.3.1:
|
|
@@ -52,8 +42,7 @@ configs:
|
|
|
52
42
|
permit_on_passed: true
|
|
53
43
|
|
|
54
44
|
steps:
|
|
55
|
-
-
|
|
56
|
-
label: ๐งช Test, Lint & Build
|
|
45
|
+
- label: ๐งช Test, Lint & Build
|
|
57
46
|
artifact_paths: lib/**/*
|
|
58
47
|
commands:
|
|
59
48
|
- echo '+++ yarn test:ci'
|
|
@@ -71,7 +60,8 @@ steps:
|
|
|
71
60
|
- docker-compose#v3.9.0:
|
|
72
61
|
run: app
|
|
73
62
|
|
|
74
|
-
-
|
|
63
|
+
- agents:
|
|
64
|
+
queue: <%- devBuildkiteQueueName %>
|
|
75
65
|
branches: '!renovate/*'
|
|
76
66
|
label: ๐งโโ๏ธ Warm Dev
|
|
77
67
|
command: ':'
|
|
@@ -84,14 +74,18 @@ steps:
|
|
|
84
74
|
- block: ๐๐ปโโ๏ธ Deploy Dev
|
|
85
75
|
branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
|
|
86
76
|
|
|
87
|
-
- <<: *
|
|
88
|
-
|
|
77
|
+
- <<: *deploy
|
|
78
|
+
agents:
|
|
79
|
+
queue: <%- devBuildkiteQueueName %>
|
|
80
|
+
env:
|
|
81
|
+
ENVIRONMENT: dev
|
|
89
82
|
label: ๐ค Deploy Dev
|
|
90
83
|
concurrency_group: '<%- repoName %>/deploy/dev'
|
|
91
84
|
key: deploy-dev
|
|
92
85
|
|
|
93
|
-
- <<: *
|
|
94
|
-
|
|
86
|
+
- <<: *deploy
|
|
87
|
+
env:
|
|
88
|
+
ENVIRONMENT: prod
|
|
95
89
|
label: ๐ Deploy Prod
|
|
96
90
|
branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
|
|
97
91
|
concurrency_group: '<%- repoName %>/deploy/prod'
|
|
@@ -155,6 +155,8 @@ Object {
|
|
|
155
155
|
"Environment": Object {
|
|
156
156
|
"Variables": Object {
|
|
157
157
|
"AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1",
|
|
158
|
+
"NODE_ENV": "production",
|
|
159
|
+
"NODE_OPTIONS": "--enable-source-maps",
|
|
158
160
|
"SOMETHING": "dev",
|
|
159
161
|
},
|
|
160
162
|
},
|
|
@@ -509,6 +511,8 @@ Object {
|
|
|
509
511
|
"Environment": Object {
|
|
510
512
|
"Variables": Object {
|
|
511
513
|
"AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1",
|
|
514
|
+
"NODE_ENV": "production",
|
|
515
|
+
"NODE_OPTIONS": "--enable-source-maps",
|
|
512
516
|
"SOMETHING": "prod",
|
|
513
517
|
},
|
|
514
518
|
},
|
|
@@ -57,7 +57,11 @@ export class AppStack extends Stack {
|
|
|
57
57
|
functionName: '<%- serviceName %>',
|
|
58
58
|
environmentEncryption: kmsKey,
|
|
59
59
|
environment: {
|
|
60
|
+
// https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
60
61
|
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
|
|
62
|
+
NODE_ENV: 'production',
|
|
63
|
+
// https://nodejs.org/api/cli.html#cli_node_options_options
|
|
64
|
+
NODE_OPTIONS: '--enable-source-maps',
|
|
61
65
|
...context.workerLambda.environment,
|
|
62
66
|
},
|
|
63
67
|
});
|