skuba 5.0.1 → 5.1.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/lib/api/buildkite/annotate.d.ts +1 -1
- package/lib/api/git/getChangedFiles.d.ts +1 -1
- package/lib/api/github/checkRun.d.ts +2 -2
- package/lib/api/jest/index.d.ts +2 -2
- package/lib/cli/adapter/prettier.js +15 -1
- package/lib/cli/adapter/prettier.js.map +2 -2
- package/lib/cli/configure/processing/prettier.d.ts +1 -1
- package/lib/cli/configure/processing/typescript.d.ts +2 -2
- package/lib/cli/configure/types.d.ts +6 -6
- package/lib/cli/init/getConfig.js +18 -5
- package/lib/cli/init/getConfig.js.map +2 -2
- package/lib/cli/init/prompts.d.ts +14 -1
- package/lib/cli/init/prompts.js +7 -1
- package/lib/cli/init/prompts.js.map +2 -2
- package/lib/cli/init/types.d.ts +3 -2
- package/lib/cli/init/types.js +2 -1
- package/lib/cli/init/types.js.map +2 -2
- package/lib/cli/init/validation.d.ts +5 -0
- package/lib/cli/init/validation.js +10 -2
- package/lib/cli/init/validation.js.map +2 -2
- package/lib/skuba.js.map +1 -1
- package/lib/utils/command.d.ts +1 -1
- package/lib/utils/copy.d.ts +1 -1
- package/lib/utils/error.d.ts +1 -1
- package/lib/utils/exec.d.ts +2 -2
- package/lib/utils/logging.d.ts +1 -1
- package/lib/utils/manifest.d.ts +1 -1
- package/lib/utils/template.d.ts +2 -2
- package/lib/utils/version.d.ts +1 -1
- package/lib/utils/wait.d.ts +1 -1
- package/lib/wrapper/main.js.map +1 -1
- package/package.json +14 -14
- package/template/express-rest-api/.buildkite/pipeline.yml +1 -1
- package/template/express-rest-api/.gantry/common.yml +1 -1
- package/template/express-rest-api/.gantry/dev.yml +1 -0
- package/template/express-rest-api/.gantry/prod.yml +1 -0
- package/template/express-rest-api/Dockerfile +1 -1
- package/template/express-rest-api/Dockerfile.dev-deps +1 -1
- package/template/express-rest-api/README.md +7 -10
- package/template/express-rest-api/gantry.apply.yml +2 -2
- package/template/express-rest-api/gantry.build.yml +1 -1
- package/template/greeter/.buildkite/pipeline.yml +1 -1
- package/template/greeter/Dockerfile +1 -1
- package/template/greeter/README.md +6 -9
- package/template/koa-rest-api/.buildkite/pipeline.yml +1 -1
- package/template/koa-rest-api/.gantry/common.yml +1 -1
- package/template/koa-rest-api/.gantry/dev.yml +1 -0
- package/template/koa-rest-api/.gantry/prod.yml +1 -0
- package/template/koa-rest-api/Dockerfile +1 -1
- package/template/koa-rest-api/Dockerfile.dev-deps +1 -1
- package/template/koa-rest-api/README.md +7 -10
- package/template/koa-rest-api/gantry.apply.yml +2 -2
- package/template/koa-rest-api/gantry.build.yml +1 -1
- package/template/koa-rest-api/package.json +2 -2
- package/template/lambda-sqs-worker/.buildkite/pipeline.yml +4 -4
- package/template/lambda-sqs-worker/.nvmrc +1 -1
- package/template/lambda-sqs-worker/Dockerfile +1 -1
- package/template/lambda-sqs-worker/README.md +7 -10
- package/template/lambda-sqs-worker/package.json +10 -5
- package/template/lambda-sqs-worker/serverless.yml +2 -4
- package/template/lambda-sqs-worker/src/app.test.ts +5 -6
- package/template/lambda-sqs-worker/src/framework/handler.test.ts +2 -2
- package/template/lambda-sqs-worker/src/hooks.ts +22 -30
- package/template/lambda-sqs-worker/src/services/aws.ts +2 -2
- package/template/lambda-sqs-worker/src/services/pipelineEventSender.test.ts +9 -7
- package/template/lambda-sqs-worker/src/services/pipelineEventSender.ts +6 -4
- package/template/lambda-sqs-worker/src/testing/services.ts +11 -7
- package/template/lambda-sqs-worker/tsconfig.json +2 -2
- package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +4 -4
- package/template/lambda-sqs-worker-cdk/.nvmrc +1 -1
- package/template/lambda-sqs-worker-cdk/Dockerfile +1 -1
- package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +2 -4
- package/template/lambda-sqs-worker-cdk/infra/appStack.ts +4 -4
- package/template/lambda-sqs-worker-cdk/package.json +4 -4
- package/template/lambda-sqs-worker-cdk/tsconfig.json +2 -2
- package/template/oss-npm-package/_package.json +1 -1
- package/template/private-npm-package/_package.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skuba",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "SEEK development toolkit for backend applications and packages",
|
|
6
6
|
"homepage": "https://github.com/seek-oss/skuba#readme",
|
|
@@ -81,12 +81,12 @@
|
|
|
81
81
|
"dotenv": "^16.0.0",
|
|
82
82
|
"ejs": "^3.1.6",
|
|
83
83
|
"enquirer": "^2.3.6",
|
|
84
|
-
"esbuild": "~0.
|
|
84
|
+
"esbuild": "~0.16.0",
|
|
85
85
|
"eslint": "^8.11.0",
|
|
86
|
-
"eslint-config-skuba": "1.2.
|
|
86
|
+
"eslint-config-skuba": "1.2.1",
|
|
87
87
|
"execa": "^5.0.0",
|
|
88
88
|
"fdir": "^5.0.0",
|
|
89
|
-
"fs-extra": "^
|
|
89
|
+
"fs-extra": "^11.0.0",
|
|
90
90
|
"function-arguments": "^1.0.9",
|
|
91
91
|
"get-port": "^5.1.1",
|
|
92
92
|
"ignore": "^5.1.8",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"npm-run-path": "^4.0.1",
|
|
102
102
|
"npm-which": "^3.0.1",
|
|
103
103
|
"picomatch": "^2.2.2",
|
|
104
|
-
"prettier": "~2.
|
|
104
|
+
"prettier": "~2.8.0",
|
|
105
105
|
"read-pkg-up": "^7.0.1",
|
|
106
106
|
"runtypes": "^6.0.0",
|
|
107
107
|
"semantic-release": "^19.0.0",
|
|
@@ -115,15 +115,15 @@
|
|
|
115
115
|
"ts-node-dev": "^2.0.0",
|
|
116
116
|
"tsconfig-paths": "^4.0.0",
|
|
117
117
|
"tsconfig-seek": "1.0.2",
|
|
118
|
-
"typescript": "~4.
|
|
118
|
+
"typescript": "~4.9.0",
|
|
119
119
|
"validate-npm-package-name": "^5.0.0"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
-
"@changesets/cli": "2.
|
|
123
|
-
"@changesets/get-github-info": "0.5.
|
|
124
|
-
"@jest/reporters": "29.3.
|
|
122
|
+
"@changesets/cli": "2.26.0",
|
|
123
|
+
"@changesets/get-github-info": "0.5.2",
|
|
124
|
+
"@jest/reporters": "29.3.1",
|
|
125
125
|
"@types/ejs": "3.1.1",
|
|
126
|
-
"@types/express": "4.17.
|
|
126
|
+
"@types/express": "4.17.15",
|
|
127
127
|
"@types/fs-extra": "9.0.13",
|
|
128
128
|
"@types/koa": "2.13.5",
|
|
129
129
|
"@types/libnpmsearch": "2.0.3",
|
|
@@ -133,15 +133,15 @@
|
|
|
133
133
|
"@types/picomatch": "2.3.0",
|
|
134
134
|
"@types/supertest": "2.0.12",
|
|
135
135
|
"@types/validate-npm-package-name": "4.0.0",
|
|
136
|
-
"enhanced-resolve": "5.
|
|
136
|
+
"enhanced-resolve": "5.12.0",
|
|
137
137
|
"express": "4.18.2",
|
|
138
138
|
"jsonfile": "6.1.0",
|
|
139
|
-
"koa": "2.
|
|
140
|
-
"memfs": "3.4.
|
|
139
|
+
"koa": "2.14.1",
|
|
140
|
+
"memfs": "3.4.12",
|
|
141
141
|
"remark-cli": "11.0.0",
|
|
142
142
|
"remark-preset-lint-recommended": "6.1.2",
|
|
143
143
|
"semver": "7.3.8",
|
|
144
|
-
"supertest": "6.3.
|
|
144
|
+
"supertest": "6.3.3",
|
|
145
145
|
"type-fest": "2.19.0"
|
|
146
146
|
},
|
|
147
147
|
"peerDependencies": {
|
|
@@ -13,7 +13,7 @@ tags:
|
|
|
13
13
|
# seek:data:consumers: internal
|
|
14
14
|
# https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#seekdatatypes
|
|
15
15
|
# seek:data:types:restricted: job-ads
|
|
16
|
-
seek:env:label: '{{
|
|
16
|
+
seek:env:label: '{{values "environment"}}'
|
|
17
17
|
seek:env:production: '{{values "isProduction"}}'
|
|
18
18
|
seek:owner:team: '<%- teamName %>'
|
|
19
19
|
seek:source:sha: '{{.CommitSHA}}'
|
|
@@ -4,24 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
Next steps:
|
|
6
6
|
|
|
7
|
-
1. [ ]
|
|
8
|
-
see the [ARM64 guide] for more information.
|
|
9
|
-
2. [ ] Finish templating if this was skipped earlier:
|
|
7
|
+
1. [ ] Finish templating if this was skipped earlier:
|
|
10
8
|
|
|
11
9
|
```shell
|
|
12
10
|
yarn skuba configure
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
2. [ ] Create a new repository in the appropriate GitHub organisation.
|
|
14
|
+
3. [ ] Add the repository to BuildAgency;
|
|
17
15
|
see [Builds at SEEK] for more information.
|
|
18
|
-
|
|
16
|
+
4. [ ] Add Datadog configuration and data classification tags to [.gantry/common.yml](.gantry/common.yml);
|
|
19
17
|
see the [Gantry] documentation for more information.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
5. [ ] Push local commits to the upstream GitHub branch.
|
|
19
|
+
6. [ ] Configure [GitHub repository settings].
|
|
20
|
+
7. [ ] Delete this checklist 😌.
|
|
23
21
|
|
|
24
|
-
[arm64 guide]: https://seek-oss.github.io/skuba/docs/deep-dives/arm64.html
|
|
25
22
|
[builds at seek]: https://builds-at-seek.ssod.skinfra.xyz
|
|
26
23
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
27
24
|
|
|
@@ -10,7 +10,7 @@ env:
|
|
|
10
10
|
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
11
11
|
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1'
|
|
12
12
|
|
|
13
|
-
ENVIRONMENT: '{{
|
|
13
|
+
ENVIRONMENT: '{{values "environment"}}'
|
|
14
14
|
SERVICE: '{{values "service"}}'
|
|
15
15
|
|
|
16
16
|
{{range $key, $value := .Values.env}}
|
|
@@ -119,4 +119,4 @@ tags:
|
|
|
119
119
|
{{$key}}: '{{$value}}'
|
|
120
120
|
{{end}}
|
|
121
121
|
|
|
122
|
-
cpuArchitecture:
|
|
122
|
+
cpuArchitecture: <%- platformName %>
|
|
@@ -4,22 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
Next steps:
|
|
6
6
|
|
|
7
|
-
1. [ ]
|
|
8
|
-
see the [ARM64 guide] for more information.
|
|
9
|
-
2. [ ] Finish templating if this was skipped earlier:
|
|
7
|
+
1. [ ] Finish templating if this was skipped earlier:
|
|
10
8
|
|
|
11
9
|
```shell
|
|
12
10
|
yarn skuba configure
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
2. [ ] Create a new repository in the appropriate GitHub organisation.
|
|
14
|
+
3. [ ] Add the repository to BuildAgency;
|
|
17
15
|
see [Builds at SEEK] for more information.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
4. [ ] Push local commits to the upstream GitHub branch.
|
|
17
|
+
5. [ ] Configure [GitHub repository settings].
|
|
18
|
+
6. [ ] Delete this checklist 😌.
|
|
21
19
|
|
|
22
|
-
[arm64 guide]: https://seek-oss.github.io/skuba/docs/deep-dives/arm64.html
|
|
23
20
|
[builds at seek]: https://builds-at-seek.ssod.skinfra.xyz
|
|
24
21
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
25
22
|
|
|
@@ -13,7 +13,7 @@ tags:
|
|
|
13
13
|
# seek:data:consumers: internal
|
|
14
14
|
# https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#seekdatatypes
|
|
15
15
|
# seek:data:types:restricted: job-ads
|
|
16
|
-
seek:env:label: '{{
|
|
16
|
+
seek:env:label: '{{values "environment"}}'
|
|
17
17
|
seek:env:production: '{{values "isProduction"}}'
|
|
18
18
|
seek:owner:team: '<%- teamName %>'
|
|
19
19
|
seek:source:sha: '{{.CommitSHA}}'
|
|
@@ -4,24 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
Next steps:
|
|
6
6
|
|
|
7
|
-
1. [ ]
|
|
8
|
-
see the [ARM64 guide] for more information.
|
|
9
|
-
2. [ ] Finish templating if this was skipped earlier:
|
|
7
|
+
1. [ ] Finish templating if this was skipped earlier:
|
|
10
8
|
|
|
11
9
|
```shell
|
|
12
10
|
yarn skuba configure
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
2. [ ] Create a new repository in the appropriate GitHub organisation.
|
|
14
|
+
3. [ ] Add the repository to BuildAgency;
|
|
17
15
|
see [Builds at SEEK] for more information.
|
|
18
|
-
|
|
16
|
+
4. [ ] Add Datadog configuration and data classification tags to [.gantry/common.yml](.gantry/common.yml);
|
|
19
17
|
see the [Gantry] documentation for more information.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
5. [ ] Push local commits to the upstream GitHub branch.
|
|
19
|
+
6. [ ] Configure [GitHub repository settings].
|
|
20
|
+
7. [ ] Delete this checklist 😌.
|
|
23
21
|
|
|
24
|
-
[arm64 guide]: https://seek-oss.github.io/skuba/docs/deep-dives/arm64.html
|
|
25
22
|
[builds at seek]: https://builds-at-seek.ssod.skinfra.xyz
|
|
26
23
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
27
24
|
|
|
@@ -10,7 +10,7 @@ env:
|
|
|
10
10
|
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
11
11
|
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1'
|
|
12
12
|
|
|
13
|
-
ENVIRONMENT: '{{
|
|
13
|
+
ENVIRONMENT: '{{values "environment"}}'
|
|
14
14
|
OPENTELEMETRY_ENABLED: '{{.Values.openTelemetry.enabled | default false}}'
|
|
15
15
|
SERVICE: '{{values "service"}}'
|
|
16
16
|
|
|
@@ -126,4 +126,4 @@ tags:
|
|
|
126
126
|
{{$key}}: '{{$value}}'
|
|
127
127
|
{{end}}
|
|
128
128
|
|
|
129
|
-
cpuArchitecture:
|
|
129
|
+
cpuArchitecture: <%- platformName %>
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"@opentelemetry/api": "^1.1.0",
|
|
17
17
|
"@opentelemetry/exporter-collector-grpc": "^0.25.0",
|
|
18
18
|
"@opentelemetry/instrumentation-aws-sdk": "^0.32.0",
|
|
19
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
20
|
-
"@opentelemetry/sdk-node": "^0.
|
|
19
|
+
"@opentelemetry/instrumentation-http": "^0.34.0",
|
|
20
|
+
"@opentelemetry/sdk-node": "^0.34.0",
|
|
21
21
|
"@seek/logger": "^5.0.1",
|
|
22
22
|
"aws-sdk": "^2.1039.0",
|
|
23
23
|
"hot-shots": "^9.0.0",
|
|
@@ -26,13 +26,13 @@ configs:
|
|
|
26
26
|
- yarn deploy
|
|
27
27
|
concurrency: 1
|
|
28
28
|
plugins:
|
|
29
|
-
- artifacts#v1.
|
|
29
|
+
- artifacts#v1.8.0:
|
|
30
30
|
build: ${BUILDKITE_BUILD_ID}
|
|
31
31
|
download: lib/*
|
|
32
32
|
- *aws-sm
|
|
33
33
|
- *private-npm
|
|
34
34
|
- *docker-ecr-cache
|
|
35
|
-
- docker-compose#v4.
|
|
35
|
+
- docker-compose#v4.9.0:
|
|
36
36
|
dependencies: false
|
|
37
37
|
run: app
|
|
38
38
|
retry:
|
|
@@ -60,13 +60,13 @@ steps:
|
|
|
60
60
|
- *aws-sm
|
|
61
61
|
- *private-npm
|
|
62
62
|
- *docker-ecr-cache
|
|
63
|
-
- docker-compose#v4.
|
|
63
|
+
- docker-compose#v4.9.0:
|
|
64
64
|
run: app
|
|
65
65
|
timeout_in_minutes: 10
|
|
66
66
|
|
|
67
67
|
- agents:
|
|
68
68
|
queue: <%- devBuildkiteQueueName %>
|
|
69
|
-
branches: '!renovate
|
|
69
|
+
branches: '!renovate-*'
|
|
70
70
|
label: 🧖♀️ Warm Dev
|
|
71
71
|
command: ':'
|
|
72
72
|
plugins:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
18
|
|
@@ -4,23 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
Next steps:
|
|
6
6
|
|
|
7
|
-
1. [ ]
|
|
8
|
-
see the [ARM64 guide] for more information.
|
|
9
|
-
2. [ ] Finish templating if this was skipped earlier:
|
|
7
|
+
1. [ ] Finish templating if this was skipped earlier:
|
|
10
8
|
|
|
11
9
|
```shell
|
|
12
10
|
yarn skuba configure
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
2. [ ] Create a new repository in the appropriate GitHub organisation.
|
|
14
|
+
3. [ ] Add the repository to BuildAgency;
|
|
17
15
|
see [Builds at SEEK] for more information.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
4. [ ] Add Datadog extension, deployment bucket configuration and data classification tags to [serverless.yml](serverless.yml).
|
|
17
|
+
5. [ ] Push local commits to the upstream GitHub branch.
|
|
18
|
+
6. [ ] Configure [GitHub repository settings].
|
|
19
|
+
7. [ ] Delete this checklist 😌.
|
|
22
20
|
|
|
23
|
-
[arm64 guide]: https://seek-oss.github.io/skuba/docs/deep-dives/arm64.html
|
|
24
21
|
[builds at seek]: https://builds-at-seek.ssod.skinfra.xyz
|
|
25
22
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
26
23
|
|
|
@@ -14,25 +14,30 @@
|
|
|
14
14
|
"test:watch": "skuba test --watch"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
+
"@aws-sdk/client-codedeploy": "^3.213.0",
|
|
18
|
+
"@aws-sdk/client-lambda": "^3.213.0",
|
|
19
|
+
"@aws-sdk/client-sns": "^3.213.0",
|
|
17
20
|
"@seek/logger": "^5.0.1",
|
|
18
|
-
"aws-sdk": "^2.1011.0",
|
|
19
21
|
"datadog-lambda-js": "^6.83.0",
|
|
22
|
+
"dd-trace": "^3.8.0",
|
|
20
23
|
"skuba-dive": "^2.0.0",
|
|
21
24
|
"zod": "^3.19.1"
|
|
22
25
|
},
|
|
23
26
|
"devDependencies": {
|
|
24
27
|
"@types/aws-lambda": "^8.10.84",
|
|
25
28
|
"@types/chance": "^1.1.3",
|
|
26
|
-
"@types/node": "
|
|
29
|
+
"@types/node": "^18.11.9",
|
|
30
|
+
"aws-sdk-client-mock": "^2.0.1",
|
|
31
|
+
"aws-sdk-client-mock-jest": "^2.0.1",
|
|
27
32
|
"chance": "^1.1.8",
|
|
28
33
|
"pino-pretty": "^9.0.0",
|
|
29
|
-
"serverless": "^3.
|
|
34
|
+
"serverless": "^3.25.0",
|
|
30
35
|
"serverless-plugin-canary-deployments": "^0.8.0",
|
|
31
|
-
"serverless-plugin-datadog": "^5.
|
|
36
|
+
"serverless-plugin-datadog": "^5.12.0",
|
|
32
37
|
"serverless-prune-plugin": "^2.0.0",
|
|
33
38
|
"skuba": "*"
|
|
34
39
|
},
|
|
35
40
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
41
|
+
"node": ">=18"
|
|
37
42
|
}
|
|
38
43
|
}
|
|
@@ -37,8 +37,8 @@ provider:
|
|
|
37
37
|
logRetentionInDays: 30
|
|
38
38
|
name: aws
|
|
39
39
|
region: ap-southeast-2
|
|
40
|
-
runtime:
|
|
41
|
-
architecture:
|
|
40
|
+
runtime: nodejs18.x
|
|
41
|
+
architecture: <%- lambdaServerlessArchitecture %>
|
|
42
42
|
deploymentMethod: direct
|
|
43
43
|
stackName: ${self:service}
|
|
44
44
|
stage: ${env:ENVIRONMENT}
|
|
@@ -47,8 +47,6 @@ provider:
|
|
|
47
47
|
# This is easier to manage in terms of access, deployment, and tagging.
|
|
48
48
|
name: ${param:deploymentBucket}
|
|
49
49
|
environment:
|
|
50
|
-
# https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
|
|
51
|
-
AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
|
|
52
50
|
NODE_ENV: production
|
|
53
51
|
# https://nodejs.org/api/cli.html#cli_node_options_options
|
|
54
52
|
NODE_OPTIONS: --enable-source-maps
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { PublishCommand } from '@aws-sdk/client-sns';
|
|
2
|
+
|
|
1
3
|
import { metricsClient } from 'src/framework/metrics';
|
|
2
4
|
import { createCtx, createSqsEvent } from 'src/testing/handler';
|
|
3
5
|
import { logger } from 'src/testing/logging';
|
|
@@ -23,13 +25,10 @@ describe('handler', () => {
|
|
|
23
25
|
|
|
24
26
|
beforeAll(logger.spy);
|
|
25
27
|
beforeAll(scoringService.spy);
|
|
26
|
-
beforeAll(sns.spy);
|
|
27
28
|
|
|
28
29
|
beforeEach(() => {
|
|
29
30
|
scoringService.request.mockResolvedValue(score);
|
|
30
|
-
sns.publish.
|
|
31
|
-
Promise.resolve({ MessageId: chance.guid({ version: 4 }) }),
|
|
32
|
-
);
|
|
31
|
+
sns.publish.resolves({ MessageId: chance.guid({ version: 4 }) });
|
|
33
32
|
});
|
|
34
33
|
|
|
35
34
|
afterEach(() => {
|
|
@@ -59,7 +58,7 @@ describe('handler', () => {
|
|
|
59
58
|
['job.scored', 1],
|
|
60
59
|
]);
|
|
61
60
|
|
|
62
|
-
expect(sns.
|
|
61
|
+
expect(sns.client).toReceiveCommandTimes(PublishCommand, 1);
|
|
63
62
|
});
|
|
64
63
|
|
|
65
64
|
it('throws on invalid input', () => {
|
|
@@ -83,7 +82,7 @@ describe('handler', () => {
|
|
|
83
82
|
it('bubbles up SNS error', async () => {
|
|
84
83
|
const err = Error(chance.sentence());
|
|
85
84
|
|
|
86
|
-
sns.publish.
|
|
85
|
+
sns.publish.rejects(err);
|
|
87
86
|
|
|
88
87
|
const event = createSqsEvent([JSON.stringify(jobPublished)]);
|
|
89
88
|
|
|
@@ -40,7 +40,7 @@ describe('createHandler', () => {
|
|
|
40
40
|
|
|
41
41
|
await expect(handler(input, ctx)).rejects.toThrow('Function failed');
|
|
42
42
|
|
|
43
|
-
expect(logger.error
|
|
43
|
+
expect(logger.error).toHaveBeenCalledWith({ err }, 'Function failed');
|
|
44
44
|
|
|
45
45
|
expect(logger.info).not.toHaveBeenCalled();
|
|
46
46
|
});
|
|
@@ -54,7 +54,7 @@ describe('createHandler', () => {
|
|
|
54
54
|
|
|
55
55
|
await expect(handler(input, ctx)).rejects.toThrow('Function failed');
|
|
56
56
|
|
|
57
|
-
expect(logger.error
|
|
57
|
+
expect(logger.error).toHaveBeenCalledWith({ err }, 'Function failed');
|
|
58
58
|
|
|
59
59
|
expect(logger.info).not.toHaveBeenCalled();
|
|
60
60
|
});
|
|
@@ -2,28 +2,21 @@
|
|
|
2
2
|
/* istanbul ignore file */
|
|
3
3
|
|
|
4
4
|
// Use minimal dependencies to reduce the chance of crashes on module load.
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
CodeDeployClient,
|
|
7
|
+
PutLifecycleEventHookExecutionStatusCommand,
|
|
8
|
+
} from '@aws-sdk/client-codedeploy';
|
|
9
|
+
import { InvokeCommand, LambdaClient } from '@aws-sdk/client-lambda';
|
|
10
|
+
import { toUtf8 } from '@aws-sdk/util-utf8-node';
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
* Common AWS options to avoid hanging the deployment on a transient error.
|
|
9
|
-
*
|
|
10
|
-
* AWS uses exponential backoff, so we wait for ~15 seconds total per request.
|
|
11
|
-
*/
|
|
12
|
-
const awsRetryOptions = {
|
|
13
|
-
maxRetries: 5,
|
|
14
|
-
retryDelayOptions: {
|
|
15
|
-
base: 500,
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const codeDeploy = new CodeDeploy({
|
|
20
|
-
...awsRetryOptions,
|
|
12
|
+
const codeDeploy = new CodeDeployClient({
|
|
21
13
|
apiVersion: '2014-10-06',
|
|
14
|
+
maxAttempts: 5,
|
|
22
15
|
});
|
|
23
16
|
|
|
24
|
-
const lambda = new
|
|
25
|
-
...awsRetryOptions,
|
|
17
|
+
const lambda = new LambdaClient({
|
|
26
18
|
apiVersion: '2015-03-31',
|
|
19
|
+
maxAttempts: 5,
|
|
27
20
|
});
|
|
28
21
|
|
|
29
22
|
type Status = 'Succeeded' | 'Failed';
|
|
@@ -43,24 +36,23 @@ const smokeTestLambdaFunction = async (): Promise<Status> => {
|
|
|
43
36
|
|
|
44
37
|
console.info('Function:', functionName);
|
|
45
38
|
|
|
46
|
-
const response = await lambda
|
|
47
|
-
|
|
39
|
+
const response = await lambda.send(
|
|
40
|
+
new InvokeCommand({
|
|
48
41
|
FunctionName: functionName,
|
|
49
42
|
InvocationType: 'RequestResponse',
|
|
50
43
|
// Treat an empty object as our smoke test event.
|
|
51
|
-
Payload: '{}',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Qualifier: undefined,
|
|
55
|
-
})
|
|
56
|
-
.promise();
|
|
44
|
+
Payload: Buffer.from('{}'),
|
|
45
|
+
}),
|
|
46
|
+
);
|
|
57
47
|
|
|
58
48
|
console.info('Version:', response.ExecutedVersion ?? '?');
|
|
59
49
|
console.info('Status', response.StatusCode ?? '?');
|
|
60
50
|
|
|
61
51
|
if (response.FunctionError) {
|
|
62
52
|
console.error('Error:', response.FunctionError);
|
|
63
|
-
|
|
53
|
+
if (response.Payload) {
|
|
54
|
+
console.error(toUtf8(response.Payload));
|
|
55
|
+
}
|
|
64
56
|
return 'Failed';
|
|
65
57
|
}
|
|
66
58
|
|
|
@@ -94,11 +86,11 @@ export const pre = async (
|
|
|
94
86
|
status = 'Failed';
|
|
95
87
|
}
|
|
96
88
|
|
|
97
|
-
await codeDeploy
|
|
98
|
-
|
|
89
|
+
await codeDeploy.send(
|
|
90
|
+
new PutLifecycleEventHookExecutionStatusCommand({
|
|
99
91
|
deploymentId: event.DeploymentId,
|
|
100
92
|
lifecycleEventHookExecutionId: event.LifecycleEventHookExecutionId,
|
|
101
93
|
status,
|
|
102
|
-
})
|
|
103
|
-
|
|
94
|
+
}),
|
|
95
|
+
);
|
|
104
96
|
};
|