skuba 7.2.0 → 7.3.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/config/prettier.d.ts +1 -0
- package/config/prettier.js +1 -0
- package/lib/api/git/commitAllChanges.js +16 -2
- package/lib/api/git/commitAllChanges.js.map +3 -3
- package/lib/api/github/push.d.ts +1 -1
- package/lib/api/github/push.js +13 -4
- package/lib/api/github/push.js.map +3 -3
- package/lib/api/jest/index.d.ts +2 -2
- package/lib/api/jest/index.js +19 -1
- package/lib/api/jest/index.js.map +2 -2
- package/lib/api/net/compose.js +2 -1
- package/lib/api/net/compose.js.map +2 -2
- package/lib/cli/configure/getProjectType.d.ts +1 -1
- package/lib/cli/configure/getProjectType.js +5 -2
- package/lib/cli/configure/getProjectType.js.map +2 -2
- package/lib/cli/configure/index.js +0 -4
- package/lib/cli/configure/index.js.map +2 -2
- package/lib/cli/configure/patchRenovateConfig.js +13 -11
- package/lib/cli/configure/patchRenovateConfig.js.map +2 -2
- package/lib/cli/configure/processing/package.d.ts +1 -1
- package/lib/cli/configure/processing/package.js +8 -10
- package/lib/cli/configure/processing/package.js.map +2 -2
- package/lib/cli/init/getConfig.d.ts +3 -3
- package/lib/cli/init/getConfig.js +8 -8
- package/lib/cli/init/getConfig.js.map +2 -2
- package/lib/cli/init/index.js +0 -1
- package/lib/cli/init/index.js.map +2 -2
- package/lib/cli/init/types.d.ts +99 -27
- package/lib/cli/init/types.js +26 -35
- package/lib/cli/init/types.js.map +2 -2
- package/lib/cli/lint/autofix.js +1 -1
- package/lib/cli/lint/autofix.js.map +2 -2
- package/lib/utils/error.d.ts +30 -10
- package/lib/utils/error.js +10 -20
- package/lib/utils/error.js.map +2 -2
- package/lib/utils/exec.js +2 -2
- package/lib/utils/exec.js.map +2 -2
- package/lib/utils/manifest.d.ts +3 -3
- package/lib/utils/manifest.js +9 -9
- package/lib/utils/manifest.js.map +2 -2
- package/lib/utils/template.d.ts +43 -13
- package/lib/utils/template.js +15 -15
- package/lib/utils/template.js.map +2 -2
- package/package.json +25 -25
- package/template/express-rest-api/.buildkite/pipeline.yml +7 -4
- package/template/express-rest-api/.nvmrc +1 -1
- package/template/express-rest-api/Dockerfile +1 -1
- package/template/express-rest-api/Dockerfile.dev-deps +3 -3
- package/template/express-rest-api/README.md +6 -6
- package/template/express-rest-api/package.json +2 -2
- package/template/greeter/.buildkite/pipeline.yml +4 -3
- package/template/greeter/.nvmrc +1 -1
- package/template/greeter/Dockerfile +3 -3
- package/template/greeter/README.md +3 -3
- package/template/greeter/package.json +2 -2
- package/template/koa-rest-api/.buildkite/pipeline.yml +7 -4
- package/template/koa-rest-api/Dockerfile +1 -1
- package/template/koa-rest-api/Dockerfile.dev-deps +3 -3
- package/template/koa-rest-api/README.md +6 -6
- package/template/koa-rest-api/package.json +5 -5
- package/template/koa-rest-api/src/app.test.ts +8 -4
- package/template/lambda-sqs-worker/.buildkite/pipeline.yml +9 -6
- package/template/lambda-sqs-worker/.nvmrc +1 -1
- package/template/lambda-sqs-worker/Dockerfile +3 -3
- package/template/lambda-sqs-worker/README.md +6 -6
- package/template/lambda-sqs-worker/package.json +3 -3
- package/template/lambda-sqs-worker/serverless.yml +1 -1
- package/template/lambda-sqs-worker/src/framework/validation.test.ts +1 -1
- package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +9 -6
- package/template/lambda-sqs-worker-cdk/Dockerfile +3 -3
- package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +2 -2
- package/template/lambda-sqs-worker-cdk/infra/appStack.ts +1 -1
- package/template/lambda-sqs-worker-cdk/package.json +4 -4
- package/template/oss-npm-package/.nvmrc +1 -1
- package/template/oss-npm-package/README.md +1 -1
- package/template/private-npm-package/.nvmrc +1 -1
- package/template/private-npm-package/README.md +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# syntax=docker/dockerfile:1.
|
|
1
|
+
# syntax=docker/dockerfile:1.6
|
|
2
2
|
|
|
3
|
-
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:
|
|
3
|
+
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:20-alpine AS dev-deps
|
|
4
4
|
|
|
5
5
|
WORKDIR /workdir
|
|
6
6
|
|
|
7
7
|
COPY package.json yarn.lock ./
|
|
8
8
|
|
|
9
9
|
RUN \
|
|
10
|
-
--mount=type=secret,id=npm,dst=/
|
|
10
|
+
--mount=type=secret,id=npm,dst=/root/.npmrc \
|
|
11
11
|
yarn install --frozen-lockfile --ignore-optional --non-interactive
|
|
@@ -19,12 +19,12 @@ Next steps:
|
|
|
19
19
|
6. [ ] Configure [GitHub repository settings].
|
|
20
20
|
7. [ ] Delete this checklist 😌.
|
|
21
21
|
|
|
22
|
-
[builds at seek]: https://builds-
|
|
22
|
+
[builds at seek]: https://backstage.myseek.xyz/docs/default/component/builds-cicd-seek/
|
|
23
23
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
24
24
|
|
|
25
25
|
## Design
|
|
26
26
|
|
|
27
|
-
<%-repoName %> is a Node.js HTTP server built in line with our [
|
|
27
|
+
<%-repoName %> is a Node.js HTTP server built in line with our [Technical Guidelines].
|
|
28
28
|
It uses the [Koa] middleware framework and common SEEK packages.
|
|
29
29
|
Resource APIs enable synchronous interactions and serve as the backbone of SEEK's general service architecture.
|
|
30
30
|
|
|
@@ -105,7 +105,7 @@ TODO: add support links for the prod environment.
|
|
|
105
105
|
- Splunk logs
|
|
106
106
|
-->
|
|
107
107
|
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
108
|
+
[CodeDeploy]: https://docs.aws.amazon.com/codedeploy
|
|
109
|
+
[Gantry]: https://backstage.myseek.xyz/docs/default/component/gantry/
|
|
110
|
+
[Koa]: https://koajs.com
|
|
111
|
+
[Technical Guidelines]: https://myseek.atlassian.net/wiki/spaces/AA/pages/2358346017/
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@koa/router": "^12.0.0",
|
|
16
16
|
"@opentelemetry/api": "^1.1.0",
|
|
17
|
-
"@opentelemetry/exporter-trace-otlp-grpc": "^0.
|
|
17
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "^0.45.0",
|
|
18
18
|
"@opentelemetry/instrumentation-aws-sdk": "^0.36.0",
|
|
19
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
20
|
-
"@opentelemetry/sdk-node": "^0.
|
|
19
|
+
"@opentelemetry/instrumentation-http": "^0.45.0",
|
|
20
|
+
"@opentelemetry/sdk-node": "^0.45.0",
|
|
21
21
|
"@seek/logger": "^6.0.0",
|
|
22
22
|
"aws-sdk": "^2.1039.0",
|
|
23
23
|
"hot-shots": "^10.0.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@types/koa": "^2.13.4",
|
|
35
35
|
"@types/koa-bodyparser": "^5.0.2",
|
|
36
36
|
"@types/koa__router": "^12.0.0",
|
|
37
|
-
"@types/node": "^
|
|
37
|
+
"@types/node": "^20.9.0",
|
|
38
38
|
"@types/supertest": "^2.0.11",
|
|
39
39
|
"chance": "^1.1.8",
|
|
40
40
|
"pino-pretty": "^10.0.0",
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"supertest": "^6.1.6"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
|
-
"node": ">=
|
|
45
|
+
"node": ">=20"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -10,11 +10,15 @@ describe('app', () => {
|
|
|
10
10
|
|
|
11
11
|
it('has a happy health check', () => agent.get('/health').expect(200, ''));
|
|
12
12
|
|
|
13
|
-
it('has a reachable smoke test', () =>
|
|
14
|
-
agent.get('/smoke')
|
|
13
|
+
it('has a reachable smoke test', async () => {
|
|
14
|
+
const response = await agent.get('/smoke');
|
|
15
|
+
expect(response.status).not.toBe(404);
|
|
16
|
+
});
|
|
15
17
|
|
|
16
|
-
it('has a reachable nested route', () =>
|
|
17
|
-
agent.get('/jobs')
|
|
18
|
+
it('has a reachable nested route', async () => {
|
|
19
|
+
const response = await agent.get('/jobs');
|
|
20
|
+
expect(response.status).not.toBe(404);
|
|
21
|
+
});
|
|
18
22
|
|
|
19
23
|
it('has OPTIONS for a nested route', () =>
|
|
20
24
|
agent.options('/jobs').expect(200).expect('allow', /HEAD/));
|
|
@@ -9,15 +9,16 @@ configs:
|
|
|
9
9
|
NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
|
|
10
10
|
|
|
11
11
|
- &docker-ecr-cache
|
|
12
|
-
seek-oss/docker-ecr-cache#v2.
|
|
12
|
+
seek-oss/docker-ecr-cache#v2.1.0: &docker-ecr-cache-defaults
|
|
13
13
|
cache-on:
|
|
14
14
|
- package.json
|
|
15
15
|
- yarn.lock
|
|
16
|
-
secrets: id=npm,src
|
|
16
|
+
secrets: id=npm,src=tmp/.npmrc
|
|
17
17
|
|
|
18
18
|
- &private-npm
|
|
19
19
|
seek-oss/private-npm#v1.2.0:
|
|
20
20
|
env: NPM_READ_TOKEN
|
|
21
|
+
output-path: tmp/
|
|
21
22
|
|
|
22
23
|
base-steps:
|
|
23
24
|
- &deploy
|
|
@@ -26,13 +27,13 @@ configs:
|
|
|
26
27
|
- yarn deploy
|
|
27
28
|
concurrency: 1
|
|
28
29
|
plugins:
|
|
29
|
-
- artifacts#v1.9.
|
|
30
|
+
- artifacts#v1.9.2:
|
|
30
31
|
build: ${BUILDKITE_BUILD_ID}
|
|
31
32
|
download: lib/*
|
|
32
33
|
- *aws-sm
|
|
33
34
|
- *private-npm
|
|
34
35
|
- *docker-ecr-cache
|
|
35
|
-
- docker-compose#v4.
|
|
36
|
+
- docker-compose#v4.16.0:
|
|
36
37
|
dependencies: false
|
|
37
38
|
run: app
|
|
38
39
|
retry:
|
|
@@ -60,7 +61,7 @@ steps:
|
|
|
60
61
|
- *aws-sm
|
|
61
62
|
- *private-npm
|
|
62
63
|
- *docker-ecr-cache
|
|
63
|
-
- docker-compose#v4.
|
|
64
|
+
- docker-compose#v4.16.0:
|
|
64
65
|
run: app
|
|
65
66
|
timeout_in_minutes: 10
|
|
66
67
|
|
|
@@ -72,7 +73,9 @@ steps:
|
|
|
72
73
|
plugins:
|
|
73
74
|
- *aws-sm
|
|
74
75
|
- *private-npm
|
|
75
|
-
-
|
|
76
|
+
- seek-oss/docker-ecr-cache#v2.1.0:
|
|
77
|
+
<<: *docker-ecr-cache-defaults
|
|
78
|
+
skip-pull-from-cache: true
|
|
76
79
|
|
|
77
80
|
- wait
|
|
78
81
|
- block: 🙋🏻♀️ Deploy Dev
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# syntax=docker/dockerfile:1.
|
|
1
|
+
# syntax=docker/dockerfile:1.6
|
|
2
2
|
|
|
3
|
-
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:
|
|
3
|
+
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:20-alpine AS dev-deps
|
|
4
4
|
|
|
5
5
|
WORKDIR /workdir
|
|
6
6
|
|
|
7
7
|
COPY package.json yarn.lock ./
|
|
8
8
|
|
|
9
9
|
RUN \
|
|
10
|
-
--mount=type=secret,id=npm,dst=/
|
|
10
|
+
--mount=type=secret,id=npm,dst=/root/.npmrc \
|
|
11
11
|
yarn install --frozen-lockfile --ignore-optional --non-interactive && \
|
|
12
12
|
yarn cache clean
|
|
@@ -18,12 +18,12 @@ Next steps:
|
|
|
18
18
|
6. [ ] Configure [GitHub repository settings].
|
|
19
19
|
7. [ ] Delete this checklist 😌.
|
|
20
20
|
|
|
21
|
-
[builds at seek]: https://builds-
|
|
21
|
+
[builds at seek]: https://backstage.myseek.xyz/docs/default/component/builds-cicd-seek/
|
|
22
22
|
[github repository settings]: https://github.com/<%-orgName%>/<%-repoName%>/settings
|
|
23
23
|
|
|
24
24
|
## Design
|
|
25
25
|
|
|
26
|
-
<%-repoName %> is a Node.js [Lambda] application built in line with our [
|
|
26
|
+
<%-repoName %> is a Node.js [Lambda] application built in line with our [Technical Guidelines].
|
|
27
27
|
It is backed by a typical SQS message + dead letter queue configuration and uses common SEEK packages.
|
|
28
28
|
Workers enable fault-tolerant asynchronous processing of events.
|
|
29
29
|
|
|
@@ -126,7 +126,7 @@ TODO: add support links for the prod environment.
|
|
|
126
126
|
- Splunk logs
|
|
127
127
|
-->
|
|
128
128
|
|
|
129
|
-
[
|
|
130
|
-
[
|
|
131
|
-
[
|
|
132
|
-
[
|
|
129
|
+
[CodeDeploy]: https://docs.aws.amazon.com/codedeploy
|
|
130
|
+
[Lambda]: https://docs.aws.amazon.com/lambda
|
|
131
|
+
[Serverless]: https://www.serverless.com/
|
|
132
|
+
[Technical Guidelines]: https://myseek.atlassian.net/wiki/spaces/AA/pages/2358346017/
|
|
@@ -27,18 +27,18 @@
|
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/aws-lambda": "^8.10.84",
|
|
29
29
|
"@types/chance": "^1.1.3",
|
|
30
|
-
"@types/node": "^
|
|
30
|
+
"@types/node": "^20.9.0",
|
|
31
31
|
"aws-sdk-client-mock": "^3.0.0",
|
|
32
32
|
"aws-sdk-client-mock-jest": "^3.0.0",
|
|
33
33
|
"chance": "^1.1.8",
|
|
34
34
|
"pino-pretty": "^10.0.0",
|
|
35
|
-
"serverless": "^3.
|
|
35
|
+
"serverless": "^3.37.0",
|
|
36
36
|
"serverless-plugin-canary-deployments": "^0.8.0",
|
|
37
37
|
"serverless-plugin-datadog": "^5.12.0",
|
|
38
38
|
"serverless-prune-plugin": "^2.0.0",
|
|
39
39
|
"skuba": "*"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
|
-
"node": ">=
|
|
42
|
+
"node": ">=20"
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -9,15 +9,16 @@ configs:
|
|
|
9
9
|
NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
|
|
10
10
|
|
|
11
11
|
- &docker-ecr-cache
|
|
12
|
-
seek-oss/docker-ecr-cache#v2.
|
|
12
|
+
seek-oss/docker-ecr-cache#v2.1.0: &docker-ecr-cache-defaults
|
|
13
13
|
cache-on:
|
|
14
14
|
- package.json
|
|
15
15
|
- yarn.lock
|
|
16
|
-
secrets: id=npm,src
|
|
16
|
+
secrets: id=npm,src=tmp/.npmrc
|
|
17
17
|
|
|
18
18
|
- &private-npm
|
|
19
19
|
seek-oss/private-npm#v1.2.0:
|
|
20
20
|
env: NPM_READ_TOKEN
|
|
21
|
+
output-path: tmp/
|
|
21
22
|
|
|
22
23
|
base-steps:
|
|
23
24
|
- &deploy
|
|
@@ -26,13 +27,13 @@ configs:
|
|
|
26
27
|
- yarn deploy
|
|
27
28
|
concurrency: 1
|
|
28
29
|
plugins:
|
|
29
|
-
- artifacts#v1.9.
|
|
30
|
+
- artifacts#v1.9.2:
|
|
30
31
|
build: ${BUILDKITE_BUILD_ID}
|
|
31
32
|
download: lib/*
|
|
32
33
|
- *aws-sm
|
|
33
34
|
- *private-npm
|
|
34
35
|
- *docker-ecr-cache
|
|
35
|
-
- docker-compose#v4.
|
|
36
|
+
- docker-compose#v4.16.0:
|
|
36
37
|
dependencies: false
|
|
37
38
|
run: app
|
|
38
39
|
retry:
|
|
@@ -57,7 +58,7 @@ steps:
|
|
|
57
58
|
- *aws-sm
|
|
58
59
|
- *private-npm
|
|
59
60
|
- *docker-ecr-cache
|
|
60
|
-
- docker-compose#v4.
|
|
61
|
+
- docker-compose#v4.16.0:
|
|
61
62
|
run: app
|
|
62
63
|
timeout_in_minutes: 10
|
|
63
64
|
|
|
@@ -69,7 +70,9 @@ steps:
|
|
|
69
70
|
plugins:
|
|
70
71
|
- *aws-sm
|
|
71
72
|
- *private-npm
|
|
72
|
-
-
|
|
73
|
+
- seek-oss/docker-ecr-cache#v2.1.0:
|
|
74
|
+
<<: *docker-ecr-cache-defaults
|
|
75
|
+
skip-pull-from-cache: true
|
|
73
76
|
|
|
74
77
|
- wait
|
|
75
78
|
- block: 🙋🏻♀️ Deploy Dev
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# syntax=docker/dockerfile:1.
|
|
1
|
+
# syntax=docker/dockerfile:1.6
|
|
2
2
|
|
|
3
|
-
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:
|
|
3
|
+
FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:20-alpine AS dev-deps
|
|
4
4
|
|
|
5
5
|
WORKDIR /workdir
|
|
6
6
|
|
|
7
7
|
COPY package.json yarn.lock ./
|
|
8
8
|
|
|
9
9
|
RUN \
|
|
10
|
-
--mount=type=secret,id=npm,dst=/
|
|
10
|
+
--mount=type=secret,id=npm,dst=/root/.npmrc \
|
|
11
11
|
yarn install --frozen-lockfile --ignore-optional --non-interactive && \
|
|
12
12
|
yarn package && \
|
|
13
13
|
yarn cache clean
|
|
@@ -176,7 +176,7 @@ exports[`returns expected CloudFormation stack for dev 1`] = `
|
|
|
176
176
|
"Arn",
|
|
177
177
|
],
|
|
178
178
|
},
|
|
179
|
-
"Runtime": "
|
|
179
|
+
"Runtime": "nodejs20.x",
|
|
180
180
|
},
|
|
181
181
|
"Type": "AWS::Lambda::Function",
|
|
182
182
|
},
|
|
@@ -537,7 +537,7 @@ exports[`returns expected CloudFormation stack for prod 1`] = `
|
|
|
537
537
|
"Arn",
|
|
538
538
|
],
|
|
539
539
|
},
|
|
540
|
-
"Runtime": "
|
|
540
|
+
"Runtime": "nodejs20.x",
|
|
541
541
|
},
|
|
542
542
|
"Type": "AWS::Lambda::Function",
|
|
543
543
|
},
|
|
@@ -55,7 +55,7 @@ export class AppStack extends Stack {
|
|
|
55
55
|
const worker = new aws_lambda.Function(this, 'worker', {
|
|
56
56
|
architecture: aws_lambda.Architecture[architecture],
|
|
57
57
|
code: new aws_lambda.AssetCode('./lib'),
|
|
58
|
-
runtime: aws_lambda.Runtime.
|
|
58
|
+
runtime: aws_lambda.Runtime.NODEJS_20_X,
|
|
59
59
|
handler: 'app.handler',
|
|
60
60
|
functionName: '<%- serviceName %>',
|
|
61
61
|
environmentEncryption: kmsKey,
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@aws-cdk/assert": "^2.24.0",
|
|
20
20
|
"@types/aws-lambda": "^8.10.82",
|
|
21
|
-
"@types/node": "^
|
|
22
|
-
"aws-cdk": "^2.
|
|
23
|
-
"aws-cdk-lib": "^2.
|
|
21
|
+
"@types/node": "^20.9.0",
|
|
22
|
+
"aws-cdk": "^2.109.0",
|
|
23
|
+
"aws-cdk-lib": "^2.109.0",
|
|
24
24
|
"constructs": "^10.0.17",
|
|
25
25
|
"skuba": "*"
|
|
26
26
|
},
|
|
27
27
|
"engines": {
|
|
28
|
-
"node": ">=
|
|
28
|
+
"node": ">=20"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20
|
|
@@ -121,7 +121,7 @@ Here are some branches that **semantic-release** supports by default:
|
|
|
121
121
|
For more information, see the **semantic-release** docs on [triggering a release].
|
|
122
122
|
|
|
123
123
|
[distribution tags]: https://docs.npmjs.com/adding-dist-tags-to-packages
|
|
124
|
-
[
|
|
124
|
+
[OSS npm package guidance]: https://github.com/SEEK-Jobs/seek-oss-ci/blob/master/NPM_PACKAGES.md#access-to-publish-to-npm
|
|
125
125
|
[release workflow]: .github/workflows/release.yml
|
|
126
126
|
[seek-oss]: https://github.com/seek-oss
|
|
127
127
|
[semantic-release]: https://github.com/semantic-release/semantic-release
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20
|
|
@@ -103,7 +103,7 @@ Here are some branches that **semantic-release** supports by default:
|
|
|
103
103
|
For more information, see the **semantic-release** docs on [triggering a release].
|
|
104
104
|
|
|
105
105
|
[distribution tags]: https://docs.npmjs.com/adding-dist-tags-to-packages
|
|
106
|
-
[
|
|
107
|
-
[
|
|
106
|
+
[Gutenberg]: https://github.com/SEEK-Jobs/gutenberg
|
|
107
|
+
[SEEK-Jobs]: https://github.com/orgs/seek-jobs/sso
|
|
108
108
|
[semantic-release]: https://github.com/semantic-release/semantic-release
|
|
109
109
|
[triggering a release]: https://github.com/semantic-release/semantic-release/#triggering-a-release
|