@catladder/pipeline 1.170.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/bash/BashExpression.d.ts +2 -6
  2. package/dist/bash/BashExpression.js +5 -15
  3. package/dist/bash/bashEscape.d.ts +34 -0
  4. package/dist/bash/bashEscape.js +114 -0
  5. package/dist/bash/bashYaml.js +25 -2
  6. package/dist/bash/getInjectVarsScript.js +4 -2
  7. package/dist/bash/index.d.ts +2 -0
  8. package/dist/bash/index.js +26 -0
  9. package/dist/build/base/createAppBuildJob.js +3 -3
  10. package/dist/build/base/writeDotEnv.js +6 -4
  11. package/dist/build/custom/testJob.js +12 -12
  12. package/dist/build/docker.d.ts +3 -3
  13. package/dist/build/node/buildJob.js +1 -1
  14. package/dist/build/node/cache.d.ts +2 -4
  15. package/dist/build/node/cache.js +3 -24
  16. package/dist/build/node/testJob.js +11 -11
  17. package/dist/build/rails/build.js +1 -1
  18. package/dist/build/rails/test.js +8 -8
  19. package/dist/build/types.d.ts +0 -10
  20. package/dist/constants.js +1 -1
  21. package/dist/context/createComponentContext.js +0 -1
  22. package/dist/context/getEnvConfig.js +2 -1
  23. package/dist/context/getEnvironment.js +1 -2
  24. package/dist/context/getEnvironmentVariables.d.ts +5 -6
  25. package/dist/context/getEnvironmentVariables.js +50 -38
  26. package/dist/deploy/base/deploy.js +3 -3
  27. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +2 -2
  28. package/dist/deploy/cloudRun/index.js +2 -2
  29. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
  30. package/dist/deploy/kubernetes/cloudSql/index.d.ts +2 -2
  31. package/dist/deploy/kubernetes/cloudSql/index.js +3 -14
  32. package/dist/deploy/kubernetes/deployJob.js +1 -3
  33. package/dist/deploy/kubernetes/index.js +2 -2
  34. package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -3
  35. package/dist/deploy/kubernetes/kubeValues.d.ts +3 -4
  36. package/dist/deploy/kubernetes/kubeValues.js +2 -3
  37. package/dist/deploy/types/base.d.ts +0 -6
  38. package/dist/deploy/types/kubernetes.d.ts +1 -34
  39. package/dist/globalScriptFunctions/index.d.ts +14 -0
  40. package/dist/globalScriptFunctions/index.js +37 -0
  41. package/dist/index.d.ts +3 -1
  42. package/dist/index.js +3 -1
  43. package/dist/pipeline/gitlab/createGitlabJobs.js +3 -5
  44. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +1 -0
  45. package/dist/pipeline/gitlab/createGitlabPipeline.js +38 -2
  46. package/dist/pipeline/packageManager.js +1 -1
  47. package/dist/runner/index.d.ts +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/dist/types/config.d.ts +6 -9
  50. package/dist/types/context.d.ts +2 -9
  51. package/dist/types/gitlab-types.d.ts +1 -0
  52. package/dist/types/jobs.d.ts +0 -8
  53. package/dist/utils/gitlab.js +4 -1
  54. package/dist/utils/writeFiles.js +1 -7
  55. package/dist/variables/VariableValue.d.ts +3 -0
  56. package/dist/variables/VariableValue.js +5 -0
  57. package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
  58. package/dist/variables/VariableValueContainingReferences.js +97 -0
  59. package/dist/variables/__tests__/resolveAllReferences.test.js +219 -0
  60. package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
  61. package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
  62. package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
  63. package/dist/variables/__tests__/resolveReferencesOnce.test.js +202 -0
  64. package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
  65. package/dist/variables/__tests__/variableValue.test.js +36 -0
  66. package/dist/variables/resolveAllReferences.d.ts +3 -0
  67. package/dist/{bash/replaceAsync.js → variables/resolveAllReferences.js} +60 -41
  68. package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
  69. package/dist/variables/resolveAllReferencesOnce.js +191 -0
  70. package/dist/variables/resolveReferencesOnce.d.ts +8 -0
  71. package/dist/variables/resolveReferencesOnce.js +22 -0
  72. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +312 -238
  73. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +312 -238
  74. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +312 -222
  75. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1436 -0
  76. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +312 -238
  77. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +316 -238
  78. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +312 -238
  79. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +313 -238
  80. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +312 -238
  81. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +312 -238
  82. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +312 -238
  83. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +312 -238
  84. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +316 -238
  85. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +294 -220
  86. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +312 -238
  87. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +652 -486
  88. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +282 -288
  89. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +312 -238
  90. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +284 -194
  91. package/examples/__snapshots__/custom-build-job.test.ts.snap +278 -188
  92. package/examples/__snapshots__/custom-deploy.test.ts.snap +220 -154
  93. package/examples/__snapshots__/custom-envs.test.ts.snap +216 -126
  94. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +278 -188
  95. package/examples/__snapshots__/git-submodule.test.ts.snap +312 -238
  96. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +231 -253
  97. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +240 -262
  98. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +504 -506
  99. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +239 -261
  100. package/examples/__snapshots__/local-dot-env.test.ts.snap +236 -238
  101. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +236 -242
  102. package/examples/__snapshots__/multiline-var.test.ts.snap +1355 -973
  103. package/examples/__snapshots__/native-app.test.ts.snap +438 -392
  104. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +312 -238
  105. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +312 -238
  106. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +186 -188
  107. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +162 -164
  108. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4741 -0
  109. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +330 -228
  110. package/examples/__snapshots__/{workspace-api-www-custom-cache.test.ts.snap → workspace-api-www-turbo-cache.test.ts.snap} +457 -499
  111. package/examples/__snapshots__/workspace-api-www.test.ts.snap +452 -482
  112. package/examples/{workspace-api-www-custom-cache.test.ts → cloud-run-nextjs.test.ts} +2 -2
  113. package/examples/cloud-run-nextjs.ts +28 -0
  114. package/examples/cloud-run-with-sql.ts +0 -1
  115. package/examples/kubernetes-application-customization.ts +1 -0
  116. package/examples/kubernetes-with-cloud-sql.ts +1 -0
  117. package/examples/kubernetes-with-jobs.ts +1 -0
  118. package/examples/kubernetes-with-mongodb.ts +1 -0
  119. package/examples/meteor-kubernetes.ts +1 -1
  120. package/examples/native-app.ts +10 -7
  121. package/examples/rails-k8s-with-worker.ts +7 -1
  122. package/examples/{kubernetes-with-cloud-sql-legacy.test.ts → referencing-other-vars.test.ts} +2 -2
  123. package/examples/referencing-other-vars.ts +83 -0
  124. package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
  125. package/examples/{workspace-api-www-custom-cache.ts → workspace-api-www-turbo-cache.ts} +4 -3
  126. package/examples/workspace-api-www.ts +3 -2
  127. package/package.json +2 -6
  128. package/src/bash/BashExpression.ts +10 -13
  129. package/src/bash/bashEscape.ts +158 -0
  130. package/src/bash/bashYaml.ts +36 -2
  131. package/src/bash/getInjectVarsScript.ts +11 -2
  132. package/src/bash/index.ts +2 -0
  133. package/src/build/base/createAppBuildJob.ts +0 -1
  134. package/src/build/base/writeDotEnv.ts +6 -6
  135. package/src/build/custom/testJob.ts +0 -1
  136. package/src/build/node/buildJob.ts +2 -2
  137. package/src/build/node/cache.ts +0 -29
  138. package/src/build/node/testJob.ts +0 -1
  139. package/src/build/rails/build.ts +0 -1
  140. package/src/build/rails/test.ts +0 -1
  141. package/src/build/types.ts +0 -13
  142. package/src/context/createComponentContext.ts +0 -1
  143. package/src/context/getEnvConfig.ts +2 -2
  144. package/src/context/getEnvironment.ts +1 -1
  145. package/src/context/getEnvironmentContext.ts +1 -1
  146. package/src/context/getEnvironmentVariables.ts +44 -51
  147. package/src/deploy/base/deploy.ts +1 -1
  148. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +4 -12
  149. package/src/deploy/cloudRun/index.ts +2 -2
  150. package/src/deploy/kubernetes/cloudSql/index.ts +3 -16
  151. package/src/deploy/kubernetes/deployJob.ts +0 -2
  152. package/src/deploy/kubernetes/index.ts +2 -2
  153. package/src/deploy/kubernetes/kubeEnv.ts +3 -3
  154. package/src/deploy/kubernetes/kubeValues.ts +5 -8
  155. package/src/deploy/types/base.ts +0 -6
  156. package/src/deploy/types/kubernetes.ts +1 -36
  157. package/src/globalScriptFunctions/index.ts +30 -0
  158. package/src/index.ts +2 -0
  159. package/src/pipeline/gitlab/createGitlabJobs.ts +1 -4
  160. package/src/pipeline/gitlab/createGitlabPipeline.ts +8 -1
  161. package/src/pipeline/packageManager.ts +7 -5
  162. package/src/runner/index.ts +0 -1
  163. package/src/types/config.ts +6 -9
  164. package/src/types/context.ts +3 -9
  165. package/src/types/gitlab-types.ts +1 -0
  166. package/src/types/jobs.ts +0 -8
  167. package/src/utils/gitlab.ts +19 -2
  168. package/src/utils/writeFiles.ts +1 -2
  169. package/src/variables/VariableValue.ts +6 -0
  170. package/src/variables/VariableValueContainingReferences.ts +89 -0
  171. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  172. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  173. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  174. package/src/variables/__tests__/variableValue.test.ts +73 -0
  175. package/src/variables/resolveAllReferences.ts +46 -0
  176. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  177. package/src/variables/resolveReferencesOnce.ts +29 -0
  178. package/bin/catladder-gitlab-dev.js +0 -3
  179. package/bin/catladder-gitlab.js +0 -3
  180. package/dist/bash/replaceAsync.d.ts +0 -2
  181. package/dist/bundles/catladder-gitlab/index.js +0 -15
  182. package/dist/context/__tests__/resolveReferences.test.js +0 -368
  183. package/dist/context/resolveReferences.d.ts +0 -6
  184. package/dist/context/resolveReferences.js +0 -286
  185. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -85
  186. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -33
  187. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +0 -1795
  188. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -35
  189. package/scripts/bundle +0 -2
  190. package/src/bash/replaceAsync.ts +0 -54
  191. package/src/context/__tests__/resolveReferences.test.ts +0 -148
  192. package/src/context/resolveReferences.ts +0 -93
  193. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -35
  194. /package/dist/{context/__tests__/resolveReferences.test.d.ts → variables/__tests__/resolveAllReferences.test.d.ts} +0 -0
@@ -59,6 +59,36 @@ variables:
59
59
  CACHE_COMPRESSION_LEVEL: fast
60
60
  TRANSFER_METER_FREQUENCY: 5s
61
61
  GIT_DEPTH: '1'
62
+ before_script:
63
+ - |-
64
+ function escapeForDotEnv () {
65
+ input="\${1:-$(cat)}"
66
+ input="\${input//$'\\n'/\\\\n}"
67
+ if [[ "$input" == *\\\\n* ]]; then
68
+ if [[ "$input" == *\\"* && "$input" == *\\'* && "$input" == *\\\`* ]]; then
69
+ printf "\\"%s\\"\\n" "$input"
70
+ elif [[ "$input" == *\\"* && "$input" == *\\'* ]]; then
71
+ printf "\`%s\`\\n" "$input"
72
+ elif [[ "$input" == *\\"* ]]; then
73
+ printf "'%s'\\n" "$input"
74
+ else
75
+ printf "\\"%s\\"\\n" "$input"
76
+ fi
77
+ else
78
+ printf "%s\\n" "$input"
79
+ fi
80
+ }
81
+ - |-
82
+ function collapseable_section_start () {
83
+ local section_title="\${1}"
84
+ local section_description="\${2:-$section_title}"
85
+ echo -e "section_start:\`date +%s\`:\${section_title}[collapsed=true]\\r\\e[0K\${section_description}"
86
+ }
87
+ - |-
88
+ function collapseable_section_end () {
89
+ local section_title="\${1}"
90
+ echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
91
+ }
62
92
  api 🛡 audit:
63
93
  stage: test
64
94
  image: path/to/docker/jobs-default:the-version
@@ -67,9 +97,9 @@ api 🛡 audit:
67
97
  KUBERNETES_MEMORY_REQUEST: 1Gi
68
98
  KUBERNETES_MEMORY_LIMIT: 4Gi
69
99
  script:
70
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
100
+ - collapseable_section_start "injectvars" "Injecting variables"
71
101
  - export APP_PATH="api"
72
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
102
+ - collapseable_section_end "injectvars"
73
103
  - cd api
74
104
  - yarn npm audit --environment production
75
105
  rules:
@@ -99,21 +129,21 @@ api 👮 lint:
99
129
  KUBERNETES_MEMORY_REQUEST: 1Gi
100
130
  KUBERNETES_MEMORY_LIMIT: 4Gi
101
131
  script:
102
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
132
+ - collapseable_section_start "injectvars" "Injecting variables"
103
133
  - export APP_PATH="api"
104
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
105
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
134
+ - collapseable_section_end "injectvars"
135
+ - collapseable_section_start "nodeinstall" "Ensure node version"
106
136
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
107
137
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
108
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
138
+ - collapseable_section_end "nodeinstall"
109
139
  - cd api
110
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
140
+ - collapseable_section_start "nodeinstall" "Ensure node version"
111
141
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
112
142
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
113
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
114
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
143
+ - collapseable_section_end "nodeinstall"
144
+ - collapseable_section_start "yarninstall" "Yarn install"
115
145
  - yarn install --immutable
116
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
146
+ - collapseable_section_end "yarninstall"
117
147
  - yarn lint
118
148
  cache:
119
149
  - key: api-yarn
@@ -146,21 +176,21 @@ api 🧪 test:
146
176
  KUBERNETES_MEMORY_REQUEST: 1Gi
147
177
  KUBERNETES_MEMORY_LIMIT: 4Gi
148
178
  script:
149
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
179
+ - collapseable_section_start "injectvars" "Injecting variables"
150
180
  - export APP_PATH="api"
151
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
152
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
181
+ - collapseable_section_end "injectvars"
182
+ - collapseable_section_start "nodeinstall" "Ensure node version"
153
183
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
154
184
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
155
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
185
+ - collapseable_section_end "nodeinstall"
156
186
  - cd api
157
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
187
+ - collapseable_section_start "nodeinstall" "Ensure node version"
158
188
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
159
189
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
160
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
161
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
190
+ - collapseable_section_end "nodeinstall"
191
+ - collapseable_section_start "yarninstall" "Yarn install"
162
192
  - yarn install --immutable
163
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
193
+ - collapseable_section_end "yarninstall"
164
194
  - yarn test
165
195
  cache:
166
196
  - key: api-yarn
@@ -193,33 +223,45 @@ api 🧪 test:
193
223
  KUBERNETES_MEMORY_REQUEST: 1Gi
194
224
  KUBERNETES_MEMORY_LIMIT: 4Gi
195
225
  script:
196
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
226
+ - collapseable_section_start "injectvars" "Injecting variables"
197
227
  - export ENV_SHORT="dev"
198
228
  - export APP_DIR="api"
199
229
  - export ENV_TYPE="dev"
200
230
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
201
231
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
202
232
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
203
- - export HOST="unknown-host.example.com"
233
+ - export HOSTNAME="unknown-host.example.com"
204
234
  - export ROOT_URL="https://unknown-host.example.com"
205
- - export HOST_INTERNAL="unknown-host.example.com"
206
- - export HOST_CANONICAL="unknown-host.example.com"
235
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
207
236
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
208
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
209
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
237
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
238
+ - collapseable_section_end "injectvars"
239
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
240
+ - |-
241
+ cat <<EOF > api/.env
242
+ ENV_SHORT=dev
243
+ APP_DIR=api
244
+ ENV_TYPE=dev
245
+ HOSTNAME=unknown-host.example.com
246
+ ROOT_URL=https://unknown-host.example.com
247
+ HOSTNAME_INTERNAL=unknown-host.example.com
248
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
249
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
250
+ EOF
251
+ - collapseable_section_end "write-dotenv-api"
210
252
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
211
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
253
+ - collapseable_section_start "nodeinstall" "Ensure node version"
212
254
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
213
255
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
214
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
256
+ - collapseable_section_end "nodeinstall"
215
257
  - cd api
216
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
258
+ - collapseable_section_start "nodeinstall" "Ensure node version"
217
259
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
218
260
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
219
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
220
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
261
+ - collapseable_section_end "nodeinstall"
262
+ - collapseable_section_start "yarninstall" "Yarn install"
221
263
  - yarn install --immutable
222
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
264
+ - collapseable_section_end "yarninstall"
223
265
  - yarn build
224
266
  cache:
225
267
  - key: api-yarn
@@ -230,15 +272,13 @@ api 🧪 test:
230
272
  policy: pull-push
231
273
  paths:
232
274
  - api/node_modules
233
- - key: api-next-cache
234
- policy: pull-push
235
- paths:
236
- - api/.next/cache
237
275
  artifacts:
238
276
  paths:
239
277
  - api/__build_info.json
240
278
  - api/.next
241
279
  - api/dist
280
+ exclude:
281
+ - api/.env
242
282
  expire_in: 1 day
243
283
  when: always
244
284
  reports: {}
@@ -254,8 +294,8 @@ api 🧪 test:
254
294
  image: aquasec/trivy:0.38.3
255
295
  variables: {}
256
296
  script:
257
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
258
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
297
+ - collapseable_section_start "injectvars" "Injecting variables"
298
+ - collapseable_section_end "injectvars"
259
299
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
260
300
  artifacts:
261
301
  paths:
@@ -276,33 +316,45 @@ api 🧪 test:
276
316
  KUBERNETES_MEMORY_REQUEST: 1Gi
277
317
  KUBERNETES_MEMORY_LIMIT: 4Gi
278
318
  script:
279
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
319
+ - collapseable_section_start "injectvars" "Injecting variables"
280
320
  - export ENV_SHORT="asdf"
281
321
  - export APP_DIR="api"
282
322
  - export ENV_TYPE="dev"
283
323
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
284
324
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
285
325
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
286
- - export HOST="unknown-host.example.com"
326
+ - export HOSTNAME="unknown-host.example.com"
287
327
  - export ROOT_URL="https://unknown-host.example.com"
288
- - export HOST_INTERNAL="unknown-host.example.com"
289
- - export HOST_CANONICAL="unknown-host.example.com"
328
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
290
329
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
291
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
292
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
330
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
331
+ - collapseable_section_end "injectvars"
332
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
333
+ - |-
334
+ cat <<EOF > api/.env
335
+ ENV_SHORT=asdf
336
+ APP_DIR=api
337
+ ENV_TYPE=dev
338
+ HOSTNAME=unknown-host.example.com
339
+ ROOT_URL=https://unknown-host.example.com
340
+ HOSTNAME_INTERNAL=unknown-host.example.com
341
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
342
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
343
+ EOF
344
+ - collapseable_section_end "write-dotenv-api"
293
345
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
294
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
346
+ - collapseable_section_start "nodeinstall" "Ensure node version"
295
347
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
296
348
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
297
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
349
+ - collapseable_section_end "nodeinstall"
298
350
  - cd api
299
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
351
+ - collapseable_section_start "nodeinstall" "Ensure node version"
300
352
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
301
353
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
302
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
303
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
354
+ - collapseable_section_end "nodeinstall"
355
+ - collapseable_section_start "yarninstall" "Yarn install"
304
356
  - yarn install --immutable
305
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
357
+ - collapseable_section_end "yarninstall"
306
358
  - yarn build
307
359
  cache:
308
360
  - key: api-yarn
@@ -313,15 +365,13 @@ api 🧪 test:
313
365
  policy: pull-push
314
366
  paths:
315
367
  - api/node_modules
316
- - key: api-next-cache
317
- policy: pull-push
318
- paths:
319
- - api/.next/cache
320
368
  artifacts:
321
369
  paths:
322
370
  - api/__build_info.json
323
371
  - api/.next
324
372
  - api/dist
373
+ exclude:
374
+ - api/.env
325
375
  expire_in: 1 day
326
376
  when: always
327
377
  reports: {}
@@ -337,8 +387,8 @@ api 🧪 test:
337
387
  image: aquasec/trivy:0.38.3
338
388
  variables: {}
339
389
  script:
340
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
341
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
390
+ - collapseable_section_start "injectvars" "Injecting variables"
391
+ - collapseable_section_end "injectvars"
342
392
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
343
393
  artifacts:
344
394
  paths:
@@ -359,33 +409,45 @@ api 🧪 test:
359
409
  KUBERNETES_MEMORY_REQUEST: 1Gi
360
410
  KUBERNETES_MEMORY_LIMIT: 4Gi
361
411
  script:
362
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
412
+ - collapseable_section_start "injectvars" "Injecting variables"
363
413
  - export ENV_SHORT="bla"
364
414
  - export APP_DIR="api"
365
415
  - export ENV_TYPE="dev"
366
416
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
367
417
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
368
418
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
369
- - export HOST="unknown-host.example.com"
419
+ - export HOSTNAME="unknown-host.example.com"
370
420
  - export ROOT_URL="https://unknown-host.example.com"
371
- - export HOST_INTERNAL="unknown-host.example.com"
372
- - export HOST_CANONICAL="unknown-host.example.com"
421
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
373
422
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
374
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
375
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
423
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
424
+ - collapseable_section_end "injectvars"
425
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
426
+ - |-
427
+ cat <<EOF > api/.env
428
+ ENV_SHORT=bla
429
+ APP_DIR=api
430
+ ENV_TYPE=dev
431
+ HOSTNAME=unknown-host.example.com
432
+ ROOT_URL=https://unknown-host.example.com
433
+ HOSTNAME_INTERNAL=unknown-host.example.com
434
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
435
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
436
+ EOF
437
+ - collapseable_section_end "write-dotenv-api"
376
438
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
377
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
439
+ - collapseable_section_start "nodeinstall" "Ensure node version"
378
440
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
379
441
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
380
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
442
+ - collapseable_section_end "nodeinstall"
381
443
  - cd api
382
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
444
+ - collapseable_section_start "nodeinstall" "Ensure node version"
383
445
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
384
446
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
385
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
386
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
447
+ - collapseable_section_end "nodeinstall"
448
+ - collapseable_section_start "yarninstall" "Yarn install"
387
449
  - yarn install --immutable
388
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
450
+ - collapseable_section_end "yarninstall"
389
451
  - yarn build
390
452
  cache:
391
453
  - key: api-yarn
@@ -396,15 +458,13 @@ api 🧪 test:
396
458
  policy: pull-push
397
459
  paths:
398
460
  - api/node_modules
399
- - key: api-next-cache
400
- policy: pull-push
401
- paths:
402
- - api/.next/cache
403
461
  artifacts:
404
462
  paths:
405
463
  - api/__build_info.json
406
464
  - api/.next
407
465
  - api/dist
466
+ exclude:
467
+ - api/.env
408
468
  expire_in: 1 day
409
469
  when: always
410
470
  reports: {}
@@ -420,8 +480,8 @@ api 🧪 test:
420
480
  image: aquasec/trivy:0.38.3
421
481
  variables: {}
422
482
  script:
423
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
424
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
483
+ - collapseable_section_start "injectvars" "Injecting variables"
484
+ - collapseable_section_end "injectvars"
425
485
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
426
486
  artifacts:
427
487
  paths:
@@ -442,33 +502,45 @@ api 🧪 test:
442
502
  KUBERNETES_MEMORY_REQUEST: 1Gi
443
503
  KUBERNETES_MEMORY_LIMIT: 4Gi
444
504
  script:
445
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
505
+ - collapseable_section_start "injectvars" "Injecting variables"
446
506
  - export ENV_SHORT="review"
447
507
  - export APP_DIR="api"
448
508
  - export ENV_TYPE="review"
449
509
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
450
510
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
451
511
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
452
- - export HOST="unknown-host.example.com"
512
+ - export HOSTNAME="unknown-host.example.com"
453
513
  - export ROOT_URL="https://unknown-host.example.com"
454
- - export HOST_INTERNAL="unknown-host.example.com"
455
- - export HOST_CANONICAL="unknown-host.example.com"
514
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
456
515
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
457
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
458
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
516
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
517
+ - collapseable_section_end "injectvars"
518
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
519
+ - |-
520
+ cat <<EOF > api/.env
521
+ ENV_SHORT=review
522
+ APP_DIR=api
523
+ ENV_TYPE=review
524
+ HOSTNAME=unknown-host.example.com
525
+ ROOT_URL=https://unknown-host.example.com
526
+ HOSTNAME_INTERNAL=unknown-host.example.com
527
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
528
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
529
+ EOF
530
+ - collapseable_section_end "write-dotenv-api"
459
531
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
460
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
532
+ - collapseable_section_start "nodeinstall" "Ensure node version"
461
533
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
462
534
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
463
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
535
+ - collapseable_section_end "nodeinstall"
464
536
  - cd api
465
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
537
+ - collapseable_section_start "nodeinstall" "Ensure node version"
466
538
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
467
539
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
468
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
469
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
540
+ - collapseable_section_end "nodeinstall"
541
+ - collapseable_section_start "yarninstall" "Yarn install"
470
542
  - yarn install --immutable
471
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
543
+ - collapseable_section_end "yarninstall"
472
544
  - yarn build
473
545
  cache:
474
546
  - key: api-yarn
@@ -479,15 +551,13 @@ api 🧪 test:
479
551
  policy: pull-push
480
552
  paths:
481
553
  - api/node_modules
482
- - key: api-next-cache
483
- policy: pull-push
484
- paths:
485
- - api/.next/cache
486
554
  artifacts:
487
555
  paths:
488
556
  - api/__build_info.json
489
557
  - api/.next
490
558
  - api/dist
559
+ exclude:
560
+ - api/.env
491
561
  expire_in: 1 day
492
562
  when: always
493
563
  reports: {}
@@ -501,8 +571,8 @@ api 🧪 test:
501
571
  image: aquasec/trivy:0.38.3
502
572
  variables: {}
503
573
  script:
504
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
505
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
574
+ - collapseable_section_start "injectvars" "Injecting variables"
575
+ - collapseable_section_end "injectvars"
506
576
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
507
577
  artifacts:
508
578
  paths:
@@ -521,33 +591,45 @@ api 🧪 test:
521
591
  KUBERNETES_MEMORY_REQUEST: 1Gi
522
592
  KUBERNETES_MEMORY_LIMIT: 4Gi
523
593
  script:
524
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
594
+ - collapseable_section_start "injectvars" "Injecting variables"
525
595
  - export ENV_SHORT="stage"
526
596
  - export APP_DIR="api"
527
597
  - export ENV_TYPE="stage"
528
598
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
529
599
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
530
600
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
531
- - export HOST="unknown-host.example.com"
601
+ - export HOSTNAME="unknown-host.example.com"
532
602
  - export ROOT_URL="https://unknown-host.example.com"
533
- - export HOST_INTERNAL="unknown-host.example.com"
534
- - export HOST_CANONICAL="unknown-host.example.com"
603
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
535
604
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
536
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
537
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
605
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
606
+ - collapseable_section_end "injectvars"
607
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
608
+ - |-
609
+ cat <<EOF > api/.env
610
+ ENV_SHORT=stage
611
+ APP_DIR=api
612
+ ENV_TYPE=stage
613
+ HOSTNAME=unknown-host.example.com
614
+ ROOT_URL=https://unknown-host.example.com
615
+ HOSTNAME_INTERNAL=unknown-host.example.com
616
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
617
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
618
+ EOF
619
+ - collapseable_section_end "write-dotenv-api"
538
620
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
539
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
621
+ - collapseable_section_start "nodeinstall" "Ensure node version"
540
622
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
541
623
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
542
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
624
+ - collapseable_section_end "nodeinstall"
543
625
  - cd api
544
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
626
+ - collapseable_section_start "nodeinstall" "Ensure node version"
545
627
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
546
628
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
547
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
548
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
629
+ - collapseable_section_end "nodeinstall"
630
+ - collapseable_section_start "yarninstall" "Yarn install"
549
631
  - yarn install --immutable
550
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
632
+ - collapseable_section_end "yarninstall"
551
633
  - yarn build
552
634
  cache:
553
635
  - key: api-yarn
@@ -558,15 +640,13 @@ api 🧪 test:
558
640
  policy: pull-push
559
641
  paths:
560
642
  - api/node_modules
561
- - key: api-next-cache
562
- policy: pull-push
563
- paths:
564
- - api/.next/cache
565
643
  artifacts:
566
644
  paths:
567
645
  - api/__build_info.json
568
646
  - api/.next
569
647
  - api/dist
648
+ exclude:
649
+ - api/.env
570
650
  expire_in: 1 day
571
651
  when: always
572
652
  reports: {}
@@ -580,8 +660,8 @@ api 🧪 test:
580
660
  image: aquasec/trivy:0.38.3
581
661
  variables: {}
582
662
  script:
583
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
584
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
663
+ - collapseable_section_start "injectvars" "Injecting variables"
664
+ - collapseable_section_end "injectvars"
585
665
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
586
666
  artifacts:
587
667
  paths:
@@ -600,33 +680,45 @@ api 🧪 test:
600
680
  KUBERNETES_MEMORY_REQUEST: 1Gi
601
681
  KUBERNETES_MEMORY_LIMIT: 4Gi
602
682
  script:
603
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
683
+ - collapseable_section_start "injectvars" "Injecting variables"
604
684
  - export ENV_SHORT="prod"
605
685
  - export APP_DIR="api"
606
686
  - export ENV_TYPE="prod"
607
687
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
608
688
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
609
689
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
610
- - export HOST="unknown-host.example.com"
690
+ - export HOSTNAME="unknown-host.example.com"
611
691
  - export ROOT_URL="https://unknown-host.example.com"
612
- - export HOST_INTERNAL="unknown-host.example.com"
613
- - export HOST_CANONICAL="unknown-host.example.com"
692
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
614
693
  - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
615
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
616
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
694
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
695
+ - collapseable_section_end "injectvars"
696
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
697
+ - |-
698
+ cat <<EOF > api/.env
699
+ ENV_SHORT=prod
700
+ APP_DIR=api
701
+ ENV_TYPE=prod
702
+ HOSTNAME=unknown-host.example.com
703
+ ROOT_URL=https://unknown-host.example.com
704
+ HOSTNAME_INTERNAL=unknown-host.example.com
705
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
706
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
707
+ EOF
708
+ - collapseable_section_end "write-dotenv-api"
617
709
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
618
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
710
+ - collapseable_section_start "nodeinstall" "Ensure node version"
619
711
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
620
712
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
621
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
713
+ - collapseable_section_end "nodeinstall"
622
714
  - cd api
623
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
715
+ - collapseable_section_start "nodeinstall" "Ensure node version"
624
716
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
625
717
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
626
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
627
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
718
+ - collapseable_section_end "nodeinstall"
719
+ - collapseable_section_start "yarninstall" "Yarn install"
628
720
  - yarn install --immutable
629
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
721
+ - collapseable_section_end "yarninstall"
630
722
  - yarn build
631
723
  cache:
632
724
  - key: api-yarn
@@ -637,15 +729,13 @@ api 🧪 test:
637
729
  policy: pull-push
638
730
  paths:
639
731
  - api/node_modules
640
- - key: api-next-cache
641
- policy: pull-push
642
- paths:
643
- - api/.next/cache
644
732
  artifacts:
645
733
  paths:
646
734
  - api/__build_info.json
647
735
  - api/.next
648
736
  - api/dist
737
+ exclude:
738
+ - api/.env
649
739
  expire_in: 1 day
650
740
  when: always
651
741
  reports: {}
@@ -659,8 +749,8 @@ api 🧪 test:
659
749
  image: aquasec/trivy:0.38.3
660
750
  variables: {}
661
751
  script:
662
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
663
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
752
+ - collapseable_section_start "injectvars" "Injecting variables"
753
+ - collapseable_section_end "injectvars"
664
754
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
665
755
  artifacts:
666
756
  paths: