skuba 0.0.0-master-20231121000709 → 0.0.0-master-20240206001217

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.
Files changed (207) hide show
  1. package/README.md +3 -3
  2. package/jest/transform.test.ts +3 -1
  3. package/lib/api/jest/index.d.ts +1 -1
  4. package/lib/api/jest/index.js.map +2 -2
  5. package/lib/cli/adapter/prettier.d.ts +1 -1
  6. package/lib/cli/adapter/prettier.js +11 -10
  7. package/lib/cli/adapter/prettier.js.map +2 -2
  8. package/lib/cli/build/index.js +0 -2
  9. package/lib/cli/build/index.js.map +2 -2
  10. package/lib/cli/buildPackage.js +0 -2
  11. package/lib/cli/buildPackage.js.map +2 -2
  12. package/lib/cli/configure/analyseConfiguration.d.ts +2 -0
  13. package/lib/cli/configure/analyseConfiguration.js.map +2 -2
  14. package/lib/cli/configure/getEntryPoint.js +1 -1
  15. package/lib/cli/configure/getEntryPoint.js.map +2 -2
  16. package/lib/cli/configure/getProjectType.js +1 -1
  17. package/lib/cli/configure/getProjectType.js.map +2 -2
  18. package/lib/cli/configure/index.js +11 -8
  19. package/lib/cli/configure/index.js.map +2 -2
  20. package/lib/cli/configure/modules/index.js +0 -2
  21. package/lib/cli/configure/modules/index.js.map +2 -2
  22. package/lib/cli/configure/modules/package.d.ts +1 -1
  23. package/lib/cli/configure/modules/package.js +2 -1
  24. package/lib/cli/configure/modules/package.js.map +2 -2
  25. package/lib/cli/configure/patchRenovateConfig.d.ts +2 -1
  26. package/lib/cli/configure/patchRenovateConfig.js +23 -10
  27. package/lib/cli/configure/patchRenovateConfig.js.map +2 -2
  28. package/lib/cli/configure/types.d.ts +2 -0
  29. package/lib/cli/configure/types.js.map +1 -1
  30. package/lib/cli/configure/upgrade/index.d.ts +15 -0
  31. package/lib/cli/configure/upgrade/index.js +130 -0
  32. package/lib/cli/configure/upgrade/index.js.map +7 -0
  33. package/lib/cli/configure/{addEmptyExports.d.ts → upgrade/patches/7.3.1/addEmptyExports.d.ts} +2 -2
  34. package/lib/cli/configure/{addEmptyExports.js → upgrade/patches/7.3.1/addEmptyExports.js} +15 -11
  35. package/lib/cli/configure/upgrade/patches/7.3.1/addEmptyExports.js.map +7 -0
  36. package/lib/cli/configure/upgrade/patches/7.3.1/index.d.ts +2 -0
  37. package/lib/cli/configure/upgrade/patches/7.3.1/index.js +55 -0
  38. package/lib/cli/configure/upgrade/patches/7.3.1/index.js.map +7 -0
  39. package/lib/cli/configure/upgrade/patches/7.3.1/moveNpmrcOutOfGitignoreManagedSection.d.ts +2 -0
  40. package/lib/cli/configure/upgrade/patches/7.3.1/moveNpmrcOutOfGitignoreManagedSection.js +94 -0
  41. package/lib/cli/configure/upgrade/patches/7.3.1/moveNpmrcOutOfGitignoreManagedSection.js.map +7 -0
  42. package/lib/cli/configure/upgrade/patches/7.3.1/patchDockerfile.d.ts +2 -0
  43. package/lib/cli/configure/{patchDockerfile.js → upgrade/patches/7.3.1/patchDockerfile.js} +18 -12
  44. package/lib/cli/configure/upgrade/patches/7.3.1/patchDockerfile.js.map +7 -0
  45. package/lib/cli/configure/upgrade/patches/7.3.1/patchServerListener.d.ts +2 -0
  46. package/lib/cli/configure/{patchServerListener.js → upgrade/patches/7.3.1/patchServerListener.js} +18 -14
  47. package/lib/cli/configure/upgrade/patches/7.3.1/patchServerListener.js.map +7 -0
  48. package/lib/cli/format.js +7 -14
  49. package/lib/cli/format.js.map +2 -2
  50. package/lib/cli/init/getConfig.d.ts +4 -2
  51. package/lib/cli/init/getConfig.js +53 -26
  52. package/lib/cli/init/getConfig.js.map +2 -2
  53. package/lib/cli/init/git.d.ts +2 -1
  54. package/lib/cli/init/git.js +2 -9
  55. package/lib/cli/init/git.js.map +2 -2
  56. package/lib/cli/init/index.d.ts +1 -1
  57. package/lib/cli/init/index.js +19 -9
  58. package/lib/cli/init/index.js.map +2 -2
  59. package/lib/cli/init/prompts.d.ts +26 -3
  60. package/lib/cli/init/prompts.js +10 -2
  61. package/lib/cli/init/prompts.js.map +2 -2
  62. package/lib/cli/init/types.d.ts +21 -0
  63. package/lib/cli/init/types.js +5 -1
  64. package/lib/cli/init/types.js.map +2 -2
  65. package/lib/cli/init/writePackageJson.d.ts +6 -0
  66. package/lib/cli/init/writePackageJson.js.map +2 -2
  67. package/lib/cli/lint/annotate/buildkite/index.d.ts +2 -1
  68. package/lib/cli/lint/annotate/buildkite/index.js +5 -3
  69. package/lib/cli/lint/annotate/buildkite/index.js.map +2 -2
  70. package/lib/cli/lint/annotate/buildkite/internal.d.ts +2 -0
  71. package/lib/cli/lint/annotate/buildkite/internal.js +45 -0
  72. package/lib/cli/lint/annotate/buildkite/internal.js.map +7 -0
  73. package/lib/cli/lint/annotate/github/index.d.ts +2 -1
  74. package/lib/cli/lint/annotate/github/index.js +4 -2
  75. package/lib/cli/lint/annotate/github/index.js.map +2 -2
  76. package/lib/cli/lint/annotate/github/internal.d.ts +3 -0
  77. package/lib/cli/lint/annotate/github/internal.js +36 -0
  78. package/lib/cli/lint/annotate/github/internal.js.map +7 -0
  79. package/lib/cli/lint/annotate/index.d.ts +4 -3
  80. package/lib/cli/lint/annotate/index.js +9 -3
  81. package/lib/cli/lint/annotate/index.js.map +2 -2
  82. package/lib/cli/lint/autofix.d.ts +3 -1
  83. package/lib/cli/lint/autofix.js +36 -59
  84. package/lib/cli/lint/autofix.js.map +3 -3
  85. package/lib/cli/lint/external.d.ts +6 -1
  86. package/lib/cli/lint/external.js +6 -29
  87. package/lib/cli/lint/external.js.map +2 -2
  88. package/lib/cli/lint/index.d.ts +2 -1
  89. package/lib/cli/lint/index.js +46 -14
  90. package/lib/cli/lint/index.js.map +2 -2
  91. package/lib/cli/lint/internal.d.ts +12 -1
  92. package/lib/cli/lint/internal.js +55 -19
  93. package/lib/cli/lint/internal.js.map +3 -3
  94. package/lib/cli/lint/internalLints/deleteFiles.d.ts +3 -0
  95. package/lib/cli/lint/internalLints/deleteFiles.js +102 -0
  96. package/lib/cli/lint/internalLints/deleteFiles.js.map +7 -0
  97. package/lib/cli/lint/internalLints/noSkubaTemplateJs.d.ts +3 -0
  98. package/lib/cli/lint/internalLints/noSkubaTemplateJs.js +75 -0
  99. package/lib/cli/lint/internalLints/noSkubaTemplateJs.js.map +7 -0
  100. package/lib/cli/lint/internalLints/refreshConfigFiles.d.ts +11 -0
  101. package/lib/cli/lint/internalLints/refreshConfigFiles.js +147 -0
  102. package/lib/cli/lint/internalLints/refreshConfigFiles.js.map +7 -0
  103. package/lib/cli/test/index.js +0 -2
  104. package/lib/cli/test/index.js.map +2 -2
  105. package/lib/skuba.d.ts +1 -1
  106. package/lib/skuba.js.map +1 -1
  107. package/lib/utils/exec.d.ts +2 -1
  108. package/lib/utils/exec.js +1 -0
  109. package/lib/utils/exec.js.map +2 -2
  110. package/lib/utils/logging.d.ts +2 -0
  111. package/lib/utils/logging.js +1 -0
  112. package/lib/utils/logging.js.map +2 -2
  113. package/lib/utils/logo.js +6 -10
  114. package/lib/utils/logo.js.map +3 -3
  115. package/lib/utils/manifest.d.ts +1 -1
  116. package/lib/utils/manifest.js +1 -1
  117. package/lib/utils/manifest.js.map +2 -2
  118. package/lib/utils/npmrc.d.ts +1 -0
  119. package/lib/utils/npmrc.js +29 -0
  120. package/lib/utils/npmrc.js.map +7 -0
  121. package/lib/utils/packageManager.d.ts +24 -0
  122. package/lib/utils/packageManager.js +97 -0
  123. package/lib/utils/packageManager.js.map +7 -0
  124. package/lib/utils/template.d.ts +3 -0
  125. package/lib/utils/template.js +2 -0
  126. package/lib/utils/template.js.map +2 -2
  127. package/lib/utils/worker.d.ts +1 -0
  128. package/lib/wrapper/http.d.ts +1 -0
  129. package/package.json +39 -36
  130. package/template/base/_.dockerignore +0 -1
  131. package/template/base/_.eslintignore +1 -0
  132. package/template/base/_.gitignore +1 -1
  133. package/template/base/_.npmrc +8 -0
  134. package/template/express-rest-api/.buildkite/pipeline.yml +13 -10
  135. package/template/express-rest-api/.gantry/dev.yml +3 -0
  136. package/template/express-rest-api/Dockerfile +6 -12
  137. package/template/express-rest-api/Dockerfile.dev-deps +6 -5
  138. package/template/express-rest-api/README.md +6 -6
  139. package/template/express-rest-api/docker-compose.yml +0 -10
  140. package/template/express-rest-api/gantry.apply.yml +5 -0
  141. package/template/express-rest-api/gantry.build.yml +1 -2
  142. package/template/express-rest-api/package.json +2 -2
  143. package/template/express-rest-api/skuba.template.js +1 -0
  144. package/template/greeter/.buildkite/pipeline.yml +12 -9
  145. package/template/greeter/Dockerfile +6 -5
  146. package/template/greeter/README.md +6 -6
  147. package/template/greeter/docker-compose.yml +0 -10
  148. package/template/greeter/package.json +1 -1
  149. package/template/greeter/skuba.template.js +1 -0
  150. package/template/koa-rest-api/.buildkite/pipeline.yml +13 -10
  151. package/template/koa-rest-api/.gantry/dev.yml +3 -0
  152. package/template/koa-rest-api/.nvmrc +1 -1
  153. package/template/koa-rest-api/Dockerfile +6 -12
  154. package/template/koa-rest-api/Dockerfile.dev-deps +6 -5
  155. package/template/koa-rest-api/README.md +6 -6
  156. package/template/koa-rest-api/docker-compose.yml +0 -10
  157. package/template/koa-rest-api/gantry.apply.yml +5 -0
  158. package/template/koa-rest-api/gantry.build.yml +1 -2
  159. package/template/koa-rest-api/package.json +8 -6
  160. package/template/koa-rest-api/skuba.template.js +1 -0
  161. package/template/koa-rest-api/src/framework/validation.test.ts +48 -15
  162. package/template/koa-rest-api/src/framework/validation.ts +31 -8
  163. package/template/koa-rest-api/src/testing/types.ts +16 -4
  164. package/template/lambda-sqs-worker/.buildkite/pipeline.yml +21 -15
  165. package/template/lambda-sqs-worker/Dockerfile +6 -6
  166. package/template/lambda-sqs-worker/README.md +8 -8
  167. package/template/lambda-sqs-worker/_.npmrc +12 -0
  168. package/template/lambda-sqs-worker/docker-compose.yml +0 -15
  169. package/template/lambda-sqs-worker/package.json +3 -4
  170. package/template/lambda-sqs-worker/serverless.yml +4 -1
  171. package/template/lambda-sqs-worker/skuba.template.js +1 -0
  172. package/template/lambda-sqs-worker/src/hooks.ts +1 -2
  173. package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +42 -18
  174. package/template/lambda-sqs-worker-cdk/.nvmrc +1 -1
  175. package/template/lambda-sqs-worker-cdk/Dockerfile +9 -7
  176. package/template/lambda-sqs-worker-cdk/cdk.json +12 -6
  177. package/template/lambda-sqs-worker-cdk/docker-compose.yml +0 -15
  178. package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +1587 -225
  179. package/template/lambda-sqs-worker-cdk/infra/appStack.test.ts +23 -3
  180. package/template/lambda-sqs-worker-cdk/infra/appStack.ts +127 -14
  181. package/template/lambda-sqs-worker-cdk/package.json +5 -3
  182. package/template/lambda-sqs-worker-cdk/shared/context-types.ts +1 -0
  183. package/template/lambda-sqs-worker-cdk/skuba.template.js +1 -0
  184. package/template/lambda-sqs-worker-cdk/src/app.ts +14 -1
  185. package/template/lambda-sqs-worker-cdk/src/postHook.ts +154 -0
  186. package/template/lambda-sqs-worker-cdk/src/preHook.ts +95 -0
  187. package/template/oss-npm-package/.github/workflows/release.yml +10 -7
  188. package/template/oss-npm-package/.github/workflows/validate.yml +10 -7
  189. package/template/oss-npm-package/.releaserc +16 -0
  190. package/template/oss-npm-package/README.md +17 -17
  191. package/template/oss-npm-package/_package.json +3 -2
  192. package/template/oss-npm-package/skuba.template.js +1 -0
  193. package/template/private-npm-package/.releaserc +16 -0
  194. package/template/private-npm-package/README.md +16 -16
  195. package/template/private-npm-package/_package.json +3 -3
  196. package/template/private-npm-package/skuba.template.js +1 -0
  197. package/lib/cli/configure/addEmptyExports.js.map +0 -7
  198. package/lib/cli/configure/modules/tsconfig.d.ts +0 -2
  199. package/lib/cli/configure/modules/tsconfig.js +0 -87
  200. package/lib/cli/configure/modules/tsconfig.js.map +0 -7
  201. package/lib/cli/configure/patchDockerfile.d.ts +0 -1
  202. package/lib/cli/configure/patchDockerfile.js.map +0 -7
  203. package/lib/cli/configure/patchServerListener.d.ts +0 -3
  204. package/lib/cli/configure/patchServerListener.js.map +0 -7
  205. package/lib/cli/configure/refreshIgnoreFiles.d.ts +0 -3
  206. package/lib/cli/configure/refreshIgnoreFiles.js +0 -78
  207. package/lib/cli/configure/refreshIgnoreFiles.js.map +0 -7
@@ -4,15 +4,13 @@ agents:
4
4
  configs:
5
5
  plugins:
6
6
  - &aws-sm
7
- seek-oss/aws-sm#v2.3.1:
7
+ seek-oss/aws-sm#v2.3.2:
8
8
  env:
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.1.0: &docker-ecr-cache-defaults
13
- cache-on:
14
- - package.json
15
- - yarn.lock
12
+ seek-oss/docker-ecr-cache#v2.1.1: &docker-ecr-cache-defaults
13
+ cache-on: pnpm-lock.yaml
16
14
  secrets: id=npm,src=tmp/.npmrc
17
15
 
18
16
  - &private-npm
@@ -23,11 +21,13 @@ configs:
23
21
  base-steps:
24
22
  - &deploy
25
23
  commands:
26
- - echo '+++ yarn deploy'
27
- - yarn deploy
24
+ - echo '--- pnpm install --offline'
25
+ - pnpm install --offline
26
+ - echo '+++ pnpm run deploy'
27
+ - pnpm run deploy
28
28
  concurrency: 1
29
29
  plugins:
30
- - artifacts#v1.9.2:
30
+ - artifacts#v1.9.3:
31
31
  build: ${BUILDKITE_BUILD_ID}
32
32
  download: lib/*
33
33
  - *aws-sm
@@ -36,6 +36,7 @@ configs:
36
36
  - docker-compose#v4.16.0:
37
37
  dependencies: false
38
38
  run: app
39
+ propagate-environment: true
39
40
  retry:
40
41
  manual:
41
42
  # Only use this if you need to roll back a deployment ASAP.
@@ -49,12 +50,14 @@ steps:
49
50
  - label: 🧪 Test, Lint & Build
50
51
  artifact_paths: lib/**/*
51
52
  commands:
52
- - echo '+++ yarn test:ci'
53
- - yarn test:ci
54
- - echo '--- yarn lint'
55
- - yarn lint
56
- - echo '--- yarn build'
57
- - yarn build
53
+ - echo '--- pnpm install --offline'
54
+ - pnpm install --offline
55
+ - echo '+++ pnpm run test:ci'
56
+ - pnpm run test:ci
57
+ - echo '--- pnpm run lint'
58
+ - pnpm run lint
59
+ - echo '--- pnpm run build'
60
+ - pnpm run build
58
61
  env:
59
62
  GET_GITHUB_TOKEN: please
60
63
  plugins:
@@ -63,6 +66,9 @@ steps:
63
66
  - *docker-ecr-cache
64
67
  - docker-compose#v4.16.0:
65
68
  run: app
69
+ environment:
70
+ - GITHUB_API_TOKEN
71
+ propagate-environment: true
66
72
  timeout_in_minutes: 10
67
73
 
68
74
  - agents:
@@ -73,7 +79,7 @@ steps:
73
79
  plugins:
74
80
  - *aws-sm
75
81
  - *private-npm
76
- - seek-oss/docker-ecr-cache#v2.1.0:
82
+ - seek-oss/docker-ecr-cache#v2.1.1:
77
83
  <<: *docker-ecr-cache-defaults
78
84
  skip-pull-from-cache: true
79
85
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:20-alpine AS dev-deps
4
4
 
5
- WORKDIR /workdir
5
+ RUN corepack enable pnpm
6
+ RUN pnpm config set store-dir /root/.pnpm-store
6
7
 
7
- COPY package.json yarn.lock ./
8
+ WORKDIR /workdir
8
9
 
9
- RUN \
10
- --mount=type=secret,id=npm,dst=/root/.npmrc \
11
- yarn install --frozen-lockfile --ignore-optional --non-interactive && \
12
- yarn cache clean
10
+ RUN --mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
11
+ --mount=type=secret,id=npm,dst=/root/.npmrc,required=true \
12
+ pnpm fetch
@@ -7,7 +7,7 @@ Next steps:
7
7
  1. [ ] Finish templating if this was skipped earlier:
8
8
 
9
9
  ```shell
10
- yarn skuba configure
10
+ pnpm exec skuba configure
11
11
  ```
12
12
 
13
13
  2. [ ] Create a new repository in the appropriate GitHub organisation.
@@ -47,33 +47,33 @@ This defaults to an invocation with an empty object `{}`, per [src/hooks.ts](src
47
47
 
48
48
  ```shell
49
49
  # Run Jest tests locally
50
- yarn test
50
+ pnpm run test
51
51
 
52
52
  # Authenticate to dev account
53
53
  awsauth
54
54
 
55
55
  # Run smoke test against deployed application
56
- ENVIRONMENT=dev yarn smoke
56
+ ENVIRONMENT=dev pnpm run smoke
57
57
  ```
58
58
 
59
59
  ### Lint
60
60
 
61
61
  ```shell
62
62
  # Fix issues
63
- yarn format
63
+ pnpm run format
64
64
 
65
65
  # Check for issues
66
- yarn lint
66
+ pnpm run lint
67
67
  ```
68
68
 
69
69
  ### Start
70
70
 
71
71
  ```shell
72
72
  # Start a local HTTP server
73
- yarn start
73
+ pnpm run start
74
74
 
75
75
  # Start with Node.js Inspector enabled
76
- yarn start:debug
76
+ pnpm run start:debug
77
77
  ```
78
78
 
79
79
  This serves the Lambda application over HTTP.
@@ -96,7 +96,7 @@ To deploy locally:
96
96
  # Authenticate to dev account
97
97
  awsauth
98
98
 
99
- ENVIRONMENT=dev yarn deploy
99
+ ENVIRONMENT=dev pnpm run deploy
100
100
  ```
101
101
 
102
102
  To rapidly roll back a change,
@@ -0,0 +1,12 @@
1
+ # managed by skuba
2
+ public-hoist-pattern[]="@types*"
3
+ public-hoist-pattern[]="*eslint*"
4
+ public-hoist-pattern[]="*prettier*"
5
+ public-hoist-pattern[]="esbuild"
6
+ public-hoist-pattern[]="jest"
7
+ public-hoist-pattern[]="tsconfig-seek"
8
+ # end managed by skuba
9
+
10
+ # Required for Serverless packaging
11
+ node-linker=hoisted
12
+ shamefully-hoist=true
@@ -2,21 +2,6 @@ version: '3.7'
2
2
 
3
3
  services:
4
4
  app:
5
- environment:
6
- # Enable Buildkite + GitHub integrations.
7
- - BUILDKITE
8
- - BUILDKITE_AGENT_ACCESS_TOKEN
9
- - BUILDKITE_BRANCH
10
- - BUILDKITE_BUILD_NUMBER
11
- - BUILDKITE_JOB_ID
12
- - BUILDKITE_PIPELINE_DEFAULT_BRANCH
13
- - BUILDKITE_STEP_ID
14
- - GITHUB_API_TOKEN
15
- # Tag AWS resources with the commit hash.
16
- - BUILDKITE_COMMIT
17
- # Pass through application configuration.
18
- - ENVIRONMENT
19
- - VERSION
20
5
  image: ${BUILDKITE_PLUGIN_DOCKER_IMAGE:-''}
21
6
  init: true
22
7
  volumes:
@@ -8,7 +8,7 @@
8
8
  "lint": "skuba lint",
9
9
  "smoke": "serverless invoke --data '{}' --function Worker",
10
10
  "start": "skuba start --port <%- port %>",
11
- "start:debug": "yarn start --inspect-brk",
11
+ "start:debug": "pnpm run --silent start --inspect-brk",
12
12
  "test": "skuba test",
13
13
  "test:ci": "skuba test --coverage",
14
14
  "test:watch": "skuba test --watch"
@@ -17,10 +17,9 @@
17
17
  "@aws-sdk/client-codedeploy": "^3.363.0",
18
18
  "@aws-sdk/client-lambda": "^3.363.0",
19
19
  "@aws-sdk/client-sns": "^3.363.0",
20
- "@aws-sdk/util-utf8-node": "^3.259.0",
21
20
  "@seek/logger": "^6.0.0",
22
- "datadog-lambda-js": "^7.0.0",
23
- "dd-trace": "^4.0.0",
21
+ "datadog-lambda-js": "^7.102.0",
22
+ "dd-trace": "^5.0.0",
24
23
  "skuba-dive": "^2.0.0",
25
24
  "zod": "^3.19.1"
26
25
  },
@@ -9,9 +9,11 @@ params:
9
9
  dev:
10
10
  deploymentBucket: 'TODO: deployment-bucket-name'
11
11
  isProduction: false
12
+ concurrency: 2
12
13
  prod:
13
14
  deploymentBucket: 'TODO: deployment-bucket-name'
14
15
  isProduction: true
16
+ concurrency: 20
15
17
 
16
18
  custom:
17
19
  datadog:
@@ -91,7 +93,7 @@ functions:
91
93
  handler: lib/app.handler
92
94
  description: ${param:description}
93
95
  memorySize: 128
94
- reservedConcurrency: 20
96
+ reservedConcurrency: ${param:concurrency}
95
97
  timeout: 30
96
98
  deploymentSettings:
97
99
  type: AllAtOnce
@@ -107,6 +109,7 @@ functions:
107
109
  - sqs:
108
110
  arn: !GetAtt MessageQueue.Arn
109
111
  batchSize: 1
112
+ maximumConcurrency: ${param:concurrency}
110
113
  WorkerPreHook:
111
114
  name: ${self:functions.Worker.name}-pre-hook
112
115
  handler: lib/hooks.pre
@@ -28,5 +28,6 @@ module.exports = {
28
28
  validate: (value) => /^.+:.+$/.test(value),
29
29
  },
30
30
  ],
31
+ packageManager: 'pnpm',
31
32
  type: 'application',
32
33
  };
@@ -7,7 +7,6 @@ import {
7
7
  PutLifecycleEventHookExecutionStatusCommand,
8
8
  } from '@aws-sdk/client-codedeploy';
9
9
  import { InvokeCommand, LambdaClient } from '@aws-sdk/client-lambda';
10
- import { toUtf8 } from '@aws-sdk/util-utf8-node';
11
10
 
12
11
  const codeDeploy = new CodeDeployClient({
13
12
  apiVersion: '2014-10-06',
@@ -51,7 +50,7 @@ const smokeTestLambdaFunction = async (): Promise<Status> => {
51
50
  if (response.FunctionError) {
52
51
  console.error('Error:', response.FunctionError);
53
52
  if (response.Payload) {
54
- console.error(toUtf8(response.Payload));
53
+ console.error(response.Payload.transformToString());
55
54
  }
56
55
  return 'Failed';
57
56
  }
@@ -4,15 +4,13 @@ agents:
4
4
  configs:
5
5
  plugins:
6
6
  - &aws-sm
7
- seek-oss/aws-sm#v2.3.1:
7
+ seek-oss/aws-sm#v2.3.2:
8
8
  env:
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.1.0: &docker-ecr-cache-defaults
13
- cache-on:
14
- - package.json
15
- - yarn.lock
12
+ seek-oss/docker-ecr-cache#v2.1.1: &docker-ecr-cache-defaults
13
+ cache-on: pnpm-lock.yaml
16
14
  secrets: id=npm,src=tmp/.npmrc
17
15
 
18
16
  - &private-npm
@@ -23,35 +21,39 @@ configs:
23
21
  base-steps:
24
22
  - &deploy
25
23
  commands:
26
- - echo '+++ yarn deploy'
27
- - yarn deploy
24
+ - echo '--- pnpm install --offline'
25
+ - pnpm install --offline
26
+ - echo '+++ pnpm run deploy'
27
+ - pnpm run deploy
28
28
  concurrency: 1
29
29
  plugins:
30
- - artifacts#v1.9.2:
31
- build: ${BUILDKITE_BUILD_ID}
32
- download: lib/*
33
30
  - *aws-sm
34
31
  - *private-npm
35
32
  - *docker-ecr-cache
36
33
  - docker-compose#v4.16.0:
37
34
  dependencies: false
38
35
  run: app
36
+ environment:
37
+ - GITHUB_API_TOKEN
38
+ propagate-environment: true
39
39
  retry:
40
40
  manual:
41
41
  # Only use this if you need to roll back a deployment ASAP.
42
42
  # Always follow up with a proper revert or fix in Git history.
43
43
  permit_on_passed: true
44
44
 
45
+ env:
46
+ VERSION: ${BUILDKITE_COMMIT:0:7}.${BUILDKITE_BUILD_NUMBER}
47
+
45
48
  steps:
46
49
  - label: 🧪 Test, Lint & Build
47
- artifact_paths: lib/**/*
48
50
  commands:
49
- - echo '+++ yarn test:ci'
50
- - yarn test
51
- - echo '--- yarn lint'
52
- - yarn lint
53
- - echo '--- yarn build'
54
- - yarn build
51
+ - echo '--- pnpm install --offline'
52
+ - pnpm install --offline
53
+ - echo '+++ pnpm run test:ci'
54
+ - pnpm run test
55
+ - echo '--- pnpm run lint'
56
+ - pnpm run lint
55
57
  env:
56
58
  GET_GITHUB_TOKEN: please
57
59
  plugins:
@@ -60,6 +62,9 @@ steps:
60
62
  - *docker-ecr-cache
61
63
  - docker-compose#v4.16.0:
62
64
  run: app
65
+ environment:
66
+ - GITHUB_API_TOKEN
67
+ propagate-environment: true
63
68
  timeout_in_minutes: 10
64
69
 
65
70
  - agents:
@@ -70,7 +75,7 @@ steps:
70
75
  plugins:
71
76
  - *aws-sm
72
77
  - *private-npm
73
- - seek-oss/docker-ecr-cache#v2.1.0:
78
+ - seek-oss/docker-ecr-cache#v2.1.1:
74
79
  <<: *docker-ecr-cache-defaults
75
80
  skip-pull-from-cache: true
76
81
 
@@ -87,6 +92,25 @@ steps:
87
92
  concurrency_group: '<%- repoName %>/deploy/dev'
88
93
  key: deploy-dev
89
94
 
95
+ - block: 🙋🏻‍♀️ Deploy Dev (Hotswap)
96
+ key: deploy-dev-hotswap-block
97
+ branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
98
+
99
+ - <<: *deploy
100
+ branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
101
+ depends_on: deploy-dev-hotswap-block
102
+ agents:
103
+ queue: <%- devBuildkiteQueueName %>
104
+ env:
105
+ ENVIRONMENT: dev
106
+ commands:
107
+ - echo '--- pnpm install --offline'
108
+ - pnpm install --offline
109
+ - echo '+++ pnpm run deploy:hotswap'
110
+ - pnpm run deploy:hotswap
111
+ label: 🤞 Deploy Dev (Hotswap)
112
+ concurrency_group: '<%- repoName %>/deploy/dev'
113
+
90
114
  - <<: *deploy
91
115
  env:
92
116
  ENVIRONMENT: prod
@@ -1 +1 @@
1
- 18
1
+ 20
@@ -2,12 +2,14 @@
2
2
 
3
3
  FROM --platform=${BUILDPLATFORM:-<%- platformName %>} node:20-alpine AS dev-deps
4
4
 
5
- WORKDIR /workdir
5
+ # Needed for cdk
6
+ RUN apk add --no-cache bash
7
+
8
+ RUN corepack enable pnpm
9
+ RUN pnpm config set store-dir /root/.pnpm-store
6
10
 
7
- COPY package.json yarn.lock ./
11
+ WORKDIR /workdir
8
12
 
9
- RUN \
10
- --mount=type=secret,id=npm,dst=/root/.npmrc \
11
- yarn install --frozen-lockfile --ignore-optional --non-interactive && \
12
- yarn package && \
13
- yarn cache clean
13
+ RUN --mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
14
+ --mount=type=secret,id=npm,dst=/root/.npmrc,required=true \
15
+ pnpm fetch
@@ -1,25 +1,31 @@
1
1
  {
2
- "app": "npx ts-node infra/index.ts",
2
+ "app": "pnpm exec skuba node infra/index.ts",
3
3
  "context": {
4
4
  "global": {
5
5
  "appName": "<%- serviceName %>"
6
6
  },
7
7
  "dev": {
8
8
  "workerLambda": {
9
- "reservedConcurrency": 1,
9
+ "reservedConcurrency": 2,
10
10
  "environment": {
11
11
  "SOMETHING": "dev"
12
12
  }
13
- }
13
+ },
14
+ "sourceSnsTopicArn": "TODO: sourceSnsTopicArn"
14
15
  },
15
16
  "prod": {
16
17
  "workerLambda": {
17
- "reservedConcurrency": 2,
18
+ "reservedConcurrency": 20,
18
19
  "environment": {
19
20
  "SOMETHING": "prod"
20
21
  }
21
- }
22
+ },
23
+ "sourceSnsTopicArn": "TODO: sourceSnsTopicArn"
22
24
  }
23
25
  },
24
- "progress": "events"
26
+ "progress": "events",
27
+ "watch": {
28
+ "include": "src/**/*.ts",
29
+ "exclude": "src/**/*.test.ts"
30
+ }
25
31
  }
@@ -2,21 +2,6 @@ version: '3.7'
2
2
 
3
3
  services:
4
4
  app:
5
- environment:
6
- # Enable Buildkite + GitHub integrations.
7
- - BUILDKITE
8
- - BUILDKITE_AGENT_ACCESS_TOKEN
9
- - BUILDKITE_BRANCH
10
- - BUILDKITE_BUILD_NUMBER
11
- - BUILDKITE_JOB_ID
12
- - BUILDKITE_PIPELINE_DEFAULT_BRANCH
13
- - BUILDKITE_STEP_ID
14
- - GITHUB_API_TOKEN
15
- # Tag AWS resources with the commit hash.
16
- - BUILDKITE_COMMIT
17
- # Pass through application configuration.
18
- - ENVIRONMENT
19
- - VERSION
20
5
  image: ${BUILDKITE_PLUGIN_DOCKER_IMAGE:-''}
21
6
  init: true
22
7
  volumes: