@catladder/pipeline 1.153.0 โ†’ 1.154.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 (153) hide show
  1. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  2. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  3. package/dist/build/base/createAppBuildJob.d.ts +3 -3
  4. package/dist/build/base/createAppBuildJob.js +9 -15
  5. package/dist/build/base/index.d.ts +6 -2
  6. package/dist/build/base/index.js +14 -5
  7. package/dist/build/base/writeDotEnv.js +2 -1
  8. package/dist/build/custom/__tests__/testJob.test.js +1 -1
  9. package/dist/build/custom/buildJob.js +3 -10
  10. package/dist/build/docker.js +3 -3
  11. package/dist/build/index.d.ts +13 -6
  12. package/dist/build/index.js +29 -7
  13. package/dist/build/node/buildJob.d.ts +7 -2
  14. package/dist/build/node/buildJob.js +40 -33
  15. package/dist/build/node/cache.d.ts +2 -2
  16. package/dist/build/node/cache.js +8 -4
  17. package/dist/build/node/index.d.ts +2 -2
  18. package/dist/build/node/meteor.js +3 -6
  19. package/dist/build/node/testJob.d.ts +3 -2
  20. package/dist/build/node/testJob.js +9 -4
  21. package/dist/build/node/yarn.js +1 -1
  22. package/dist/build/rails/build.d.ts +1 -1
  23. package/dist/build/rails/build.js +7 -2
  24. package/dist/build/rails/test.d.ts +1 -1
  25. package/dist/build/rails/test.js +5 -0
  26. package/dist/build/sbom.js +3 -2
  27. package/dist/build/types.d.ts +48 -4
  28. package/dist/build/types.js +7 -1
  29. package/dist/bundles/catladder-gitlab/index.js +2 -2
  30. package/dist/constants.js +1 -1
  31. package/dist/context/createAllComponentsContext.d.ts +12 -0
  32. package/dist/context/createAllComponentsContext.js +159 -0
  33. package/dist/context/createComponentContext.d.ts +1 -5
  34. package/dist/context/createComponentContext.js +82 -20
  35. package/dist/context/createWorkspaceContext.d.ts +16 -0
  36. package/dist/context/createWorkspaceContext.js +173 -0
  37. package/dist/context/getBuildInfoVariables.d.ts +1 -1
  38. package/dist/context/getEnvironmentContext.d.ts +1 -1
  39. package/dist/context/getEnvironmentVariables.d.ts +2 -2
  40. package/dist/context/getEnvironmentVariables.js +5 -4
  41. package/dist/context/getLabels.js +5 -5
  42. package/dist/deploy/base/deploy.d.ts +1 -1
  43. package/dist/deploy/base/deploy.js +18 -5
  44. package/dist/deploy/cloudRun/artifactsRegistry.js +2 -2
  45. package/dist/deploy/cloudRun/createJobs/common.d.ts +4 -4
  46. package/dist/deploy/cloudRun/index.d.ts +2 -2
  47. package/dist/deploy/custom/index.d.ts +2 -2
  48. package/dist/deploy/dockerTag/index.d.ts +2 -2
  49. package/dist/deploy/index.d.ts +7 -7
  50. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  51. package/dist/deploy/kubernetes/cloudSql/index.js +1 -1
  52. package/dist/deploy/kubernetes/deployJob.js +2 -2
  53. package/dist/deploy/kubernetes/index.d.ts +2 -2
  54. package/dist/deploy/sbom.d.ts +1 -1
  55. package/dist/deploy/sbom.js +4 -3
  56. package/dist/deploy/types/index.d.ts +3 -3
  57. package/dist/pipeline/createAllJobs.d.ts +12 -10
  58. package/dist/pipeline/createAllJobs.js +94 -51
  59. package/dist/pipeline/createJobsForComponent.js +2 -3
  60. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  61. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  62. package/dist/pipeline/createMainPipeline.js +26 -6
  63. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +3 -16
  64. package/dist/pipeline/gitlab/createGitlabJobs.js +191 -73
  65. package/dist/pipeline/packageManager.d.ts +3 -2
  66. package/dist/pipeline/packageManager.js +43 -15
  67. package/dist/tsconfig.tsbuildinfo +1 -1
  68. package/dist/types/config.d.ts +5 -4
  69. package/dist/types/context.d.ts +80 -12
  70. package/dist/types/context.js +10 -1
  71. package/dist/types/environmentContext.d.ts +5 -6
  72. package/dist/types/jobs.d.ts +5 -0
  73. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +8 -8
  74. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +8 -0
  75. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +8 -8
  76. package/examples/__snapshots__/cloud-run-no-service.ts.snap +8 -8
  77. package/examples/__snapshots__/cloud-run-non-public.ts.snap +8 -8
  78. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +8 -8
  79. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +8 -8
  80. package/examples/__snapshots__/cloud-run-service-increase-timout.ts.snap +8 -8
  81. package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +8 -8
  82. package/examples/__snapshots__/cloud-run-storybook.ts.snap +4 -8
  83. package/examples/__snapshots__/cloud-run-with-ngnix.ts.snap +4 -8
  84. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +16 -16
  85. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +589 -1097
  86. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +8 -8
  87. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +4 -0
  88. package/examples/__snapshots__/custom-build-job.ts.snap +4 -0
  89. package/examples/__snapshots__/custom-deploy.ts.snap +8 -8
  90. package/examples/__snapshots__/custom-envs.ts.snap +18 -12
  91. package/examples/__snapshots__/custom-sbom-java.ts.snap +4 -0
  92. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +8 -8
  93. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +8 -8
  94. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +8 -8
  95. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +16 -16
  96. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +8 -8
  97. package/examples/__snapshots__/local-dot-env.ts.snap +8 -8
  98. package/examples/__snapshots__/meteor-kubernetes.ts.snap +8 -0
  99. package/examples/__snapshots__/multiline-var.ts.snap +16 -16
  100. package/examples/__snapshots__/native-app.ts.snap +24 -16
  101. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +8 -8
  102. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +8 -8
  103. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +16 -16
  104. package/examples/cloud-run-with-sql.ts +9 -2
  105. package/package.json +1 -1
  106. package/src/build/artifacts/createBuildJobArtifact.ts +61 -0
  107. package/src/build/base/createAppBuildJob.ts +26 -22
  108. package/src/build/base/index.ts +31 -4
  109. package/src/build/base/writeDotEnv.ts +6 -2
  110. package/src/build/custom/__tests__/testJob.test.ts +4 -4
  111. package/src/build/custom/buildJob.ts +2 -13
  112. package/src/build/docker.ts +6 -8
  113. package/src/build/index.ts +39 -7
  114. package/src/build/node/buildJob.ts +68 -56
  115. package/src/build/node/cache.ts +17 -8
  116. package/src/build/node/index.ts +4 -2
  117. package/src/build/node/meteor.ts +3 -9
  118. package/src/build/node/testJob.ts +21 -7
  119. package/src/build/node/yarn.ts +2 -2
  120. package/src/build/rails/build.ts +14 -4
  121. package/src/build/rails/test.ts +9 -1
  122. package/src/build/sbom.ts +7 -2
  123. package/src/build/types.ts +68 -4
  124. package/src/context/createAllComponentsContext.ts +31 -0
  125. package/src/context/createComponentContext.ts +59 -20
  126. package/src/context/createWorkspaceContext.ts +56 -0
  127. package/src/context/getBuildInfoVariables.ts +2 -1
  128. package/src/context/getEnvironmentContext.ts +2 -2
  129. package/src/context/getEnvironmentVariables.ts +12 -7
  130. package/src/context/getLabels.ts +3 -3
  131. package/src/deploy/base/deploy.ts +33 -7
  132. package/src/deploy/cloudRun/artifactsRegistry.ts +3 -4
  133. package/src/deploy/cloudRun/createJobs/common.ts +4 -4
  134. package/src/deploy/cloudRun/index.ts +68 -67
  135. package/src/deploy/custom/index.ts +2 -2
  136. package/src/deploy/dockerTag/index.ts +8 -7
  137. package/src/deploy/index.ts +11 -9
  138. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  139. package/src/deploy/kubernetes/cloudSql/index.ts +1 -1
  140. package/src/deploy/kubernetes/deployJob.ts +2 -2
  141. package/src/deploy/kubernetes/index.ts +42 -41
  142. package/src/deploy/sbom.ts +9 -4
  143. package/src/pipeline/createAllJobs.ts +56 -55
  144. package/src/pipeline/createChildPipeline.ts +1 -0
  145. package/src/pipeline/createJobsForComponent.ts +5 -4
  146. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  147. package/src/pipeline/createMainPipeline.ts +38 -23
  148. package/src/pipeline/gitlab/createGitlabJobs.ts +283 -119
  149. package/src/pipeline/packageManager.ts +25 -9
  150. package/src/types/config.ts +4 -1
  151. package/src/types/context.ts +108 -12
  152. package/src/types/environmentContext.ts +6 -7
  153. package/src/types/jobs.ts +3 -1
@@ -5,19 +5,19 @@ exports[`matches snapshot 1`] = `
5
5
  "mainBranch": {
6
6
  "image": "path/to/docker/jobs-default:the-version",
7
7
  "jobs": {
8
- "api ๐Ÿ‘ฎ lint": {
8
+ "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint": {
9
9
  "cache": [
10
10
  {
11
- "key": "api-yarn",
11
+ "key": ".-yarn",
12
12
  "paths": [
13
- "api/.yarn",
13
+ ".yarn",
14
14
  ],
15
15
  "policy": "pull-push",
16
16
  },
17
17
  {
18
- "key": "api-node-modules",
18
+ "key": ".-node-modules",
19
19
  "paths": [
20
- "api/node_modules",
20
+ "node_modules",
21
21
  ],
22
22
  "policy": "pull-push",
23
23
  },
@@ -34,13 +34,13 @@ exports[`matches snapshot 1`] = `
34
34
  },
35
35
  "script": [
36
36
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
37
- "export APP_PATH="api"",
37
+ "export APP_PATH="."",
38
38
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
39
39
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
40
40
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
41
41
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
42
42
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
43
- "cd api",
43
+ "cd .",
44
44
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
45
45
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
46
46
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -57,38 +57,42 @@ exports[`matches snapshot 1`] = `
57
57
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
58
58
  },
59
59
  },
60
- "api ๐Ÿ”จ app | dev ": {
60
+ "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | dev ": {
61
61
  "artifacts": {
62
+ "exclude": [
63
+ "api/.env",
64
+ "www/.env",
65
+ ],
62
66
  "expire_in": "1 day",
63
67
  "paths": [
64
- "api/__build_info.json",
65
- "api/dist",
66
68
  "api/.next",
69
+ "api/dist",
70
+ "www/.next",
71
+ "www/dist",
67
72
  ],
68
- "reports": {
69
- "junit": undefined,
70
- },
73
+ "reports": {},
71
74
  "when": "always",
72
75
  },
73
76
  "cache": [
74
77
  {
75
- "key": "api-yarn",
78
+ "key": ".-yarn",
76
79
  "paths": [
77
- "api/.yarn",
80
+ ".yarn",
78
81
  ],
79
82
  "policy": "pull-push",
80
83
  },
81
84
  {
82
- "key": "api-node-modules",
85
+ "key": ".-node-modules",
83
86
  "paths": [
84
- "api/node_modules",
87
+ "node_modules",
85
88
  ],
86
89
  "policy": "pull-push",
87
90
  },
88
91
  {
89
- "key": "api-next-cache",
92
+ "key": "myWorkspace-next-cache",
90
93
  "paths": [
91
- "api/.next/cache/",
94
+ "api/.next/cache",
95
+ "www/.next/cache",
92
96
  ],
93
97
  "policy": "pull-push",
94
98
  },
@@ -105,37 +109,61 @@ exports[`matches snapshot 1`] = `
105
109
  },
106
110
  "script": [
107
111
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
108
- "export ENV_SHORT="dev"",
109
- "export APP_DIR="api"",
110
- "export ENV_TYPE="dev"",
111
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
112
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
113
- "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")"",
114
- "export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
115
- "export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
116
- "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
117
- "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
118
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
119
- "export CLOUD_SQL_INSTANCE_CONNECTION_NAME="projectId:region:instancename"",
120
- "export DB_NAME="pan-test-app-dev-api"",
121
- "export DB_USER="my-user"",
122
- "export DB_PASSWORD="$CL_dev_api_DB_PASSWORD"",
123
- "export DATABASE_URL="postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME"",
124
- "export DATABASE_JDBC_URL="jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD"",
125
- "export CLOUD_RUN_JOB_TRIGGER_URL_migration="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migration:run"",
126
- "export CLOUD_RUN_JOB_TRIGGER_URL_send_reminders="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-send-reminders:run"",
127
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
128
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
129
- "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
130
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
131
- "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\\",\\"CLOUD_SQL_INSTANCE_CONNECTION_NAME\\",\\"DB_NAME\\",\\"DB_USER\\",\\"DB_PASSWORD\\",\\"DATABASE_URL\\",\\"DATABASE_JDBC_URL\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_migration\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
132
112
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
133
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
113
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-api[collapsed=true]\\r\\e[0Kwrite dot env"",
114
+ "cat <<EOF > api/.env
115
+ ENV_SHORT=dev
116
+ APP_DIR=api
117
+ ENV_TYPE=dev
118
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
119
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
120
+ 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")
121
+ HOST=$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
122
+ ROOT_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
123
+ HOST_INTERNAL=$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
124
+ HOST_CANONICAL=$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
125
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
126
+ CLOUD_SQL_INSTANCE_CONNECTION_NAME=projectId:region:instancename
127
+ DB_NAME=pan-test-app-dev-api
128
+ DB_USER=my-user
129
+ DB_PASSWORD=$CL_dev_api_DB_PASSWORD
130
+ DATABASE_URL=postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME
131
+ DATABASE_JDBC_URL=jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD
132
+ CLOUD_RUN_JOB_TRIGGER_URL_migration=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migration:run
133
+ CLOUD_RUN_JOB_TRIGGER_URL_send_reminders=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-send-reminders:run
134
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
135
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
136
+ GCLOUD_DEPLOY_credentialsKey=$CL_dev_api_GCLOUD_DEPLOY_credentialsKey
137
+ GCLOUD_RUN_canonicalHostSuffix=$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix
138
+ _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","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
139
+ EOF",
140
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-api\\r\\e[0K"",
141
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-www[collapsed=true]\\r\\e[0Kwrite dot env"",
142
+ "cat <<EOF > www/.env
143
+ ENV_SHORT=dev
144
+ APP_DIR=www
145
+ ENV_TYPE=dev
146
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
147
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
148
+ 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")
149
+ HOST=$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
150
+ ROOT_URL=https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
151
+ HOST_INTERNAL=$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
152
+ HOST_CANONICAL=$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
153
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
154
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
155
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
156
+ GCLOUD_DEPLOY_credentialsKey=$CL_dev_www_GCLOUD_DEPLOY_credentialsKey
157
+ GCLOUD_RUN_canonicalHostSuffix=$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix
158
+ API_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql
159
+ _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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","API_URL"]
160
+ EOF",
161
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-www\\r\\e[0K"",
134
162
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
135
163
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
136
164
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
137
165
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
138
- "cd api",
166
+ "cd .",
139
167
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
140
168
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
141
169
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -152,7 +180,85 @@ exports[`matches snapshot 1`] = `
152
180
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
153
181
  },
154
182
  },
155
- "api ๐Ÿ”จ docker | dev ": {
183
+ "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit": {
184
+ "allow_failure": true,
185
+ "image": "path/to/docker/jobs-default:the-version",
186
+ "interruptible": true,
187
+ "needs": [],
188
+ "retry": {
189
+ "max": 2,
190
+ "when": [
191
+ "runner_system_failure",
192
+ "stuck_or_timeout_failure",
193
+ ],
194
+ },
195
+ "script": [
196
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
197
+ "export APP_PATH="."",
198
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
199
+ "cd .",
200
+ "yarn npm audit --environment production",
201
+ ],
202
+ "stage": "test",
203
+ "variables": {
204
+ "KUBERNETES_CPU_REQUEST": "0.5",
205
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
206
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
207
+ },
208
+ },
209
+ "๐Ÿ”ธ myWorkspace ๐Ÿงช test": {
210
+ "cache": [
211
+ {
212
+ "key": ".-yarn",
213
+ "paths": [
214
+ ".yarn",
215
+ ],
216
+ "policy": "pull-push",
217
+ },
218
+ {
219
+ "key": ".-node-modules",
220
+ "paths": [
221
+ "node_modules",
222
+ ],
223
+ "policy": "pull-push",
224
+ },
225
+ ],
226
+ "image": "path/to/docker/jobs-testing-chrome:the-version",
227
+ "interruptible": true,
228
+ "needs": [],
229
+ "retry": {
230
+ "max": 2,
231
+ "when": [
232
+ "runner_system_failure",
233
+ "stuck_or_timeout_failure",
234
+ ],
235
+ },
236
+ "script": [
237
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
238
+ "export APP_PATH="."",
239
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
240
+ "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
241
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
242
+ "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
243
+ "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
244
+ "cd .",
245
+ "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
246
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
247
+ "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
248
+ "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
249
+ "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
250
+ "yarn install --immutable",
251
+ "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
252
+ "yarn test",
253
+ ],
254
+ "stage": "test",
255
+ "variables": {
256
+ "KUBERNETES_CPU_REQUEST": "0.5",
257
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
258
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
259
+ },
260
+ },
261
+ "๐Ÿ”น api ๐Ÿ”จ docker | dev ": {
156
262
  "cache": [
157
263
  {
158
264
  "key": "api-yarn",
@@ -165,7 +271,10 @@ exports[`matches snapshot 1`] = `
165
271
  "image": "path/to/docker/docker-build:the-version",
166
272
  "interruptible": true,
167
273
  "needs": [
168
- "api ๐Ÿ”จ app | dev ",
274
+ {
275
+ "artifacts": true,
276
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | dev ",
277
+ },
169
278
  ],
170
279
  "retry": {
171
280
  "max": 2,
@@ -223,7 +332,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
223
332
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
224
333
  },
225
334
  },
226
- "api ๐Ÿš€ Deploy | dev ": {
335
+ "๐Ÿ”น api ๐Ÿš€ Deploy | dev ": {
227
336
  "allow_failure": false,
228
337
  "artifacts": {
229
338
  "reports": {
@@ -233,7 +342,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
233
342
  "environment": {
234
343
  "auto_stop_in": "4 weeks",
235
344
  "name": "dev/api",
236
- "on_stop": "api ๐Ÿ›‘ Stop โš ๏ธ | dev ",
345
+ "on_stop": "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | dev ",
237
346
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
238
347
  },
239
348
  "image": "path/to/docker/gcloud:the-version",
@@ -241,27 +350,23 @@ COPY --chown=node:node .yarn /app/.yarn"",
241
350
  "needs": [
242
351
  {
243
352
  "artifacts": false,
244
- "job": "api ๐Ÿ‘ฎ lint",
353
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint",
245
354
  },
246
355
  {
247
356
  "artifacts": false,
248
- "job": "api ๐Ÿ”จ app | dev ",
357
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿงช test",
249
358
  },
250
359
  {
251
360
  "artifacts": false,
252
- "job": "api ๐Ÿ”จ docker | dev ",
361
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit",
253
362
  },
254
363
  {
255
364
  "artifacts": false,
256
- "job": "api ๐Ÿงช test",
365
+ "job": "๐Ÿ”น api ๐Ÿ”จ docker | dev ",
257
366
  },
258
367
  {
259
368
  "artifacts": true,
260
- "job": "api ๐Ÿงพ sbom | dev ",
261
- },
262
- {
263
- "artifacts": false,
264
- "job": "api ๐Ÿ›ก audit",
369
+ "job": "๐Ÿ”น api ๐Ÿงพ sbom | dev ",
265
370
  },
266
371
  ],
267
372
  "retry": {
@@ -401,7 +506,7 @@ EOF
401
506
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
402
507
  },
403
508
  },
404
- "api ๐Ÿ›‘ Stop โš ๏ธ | dev ": {
509
+ "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | dev ": {
405
510
  "allow_failure": true,
406
511
  "artifacts": {
407
512
  "reports": {
@@ -459,85 +564,7 @@ EOF
459
564
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
460
565
  },
461
566
  },
462
- "api ๐Ÿ›ก audit": {
463
- "allow_failure": true,
464
- "image": "path/to/docker/jobs-default:the-version",
465
- "interruptible": true,
466
- "needs": [],
467
- "retry": {
468
- "max": 2,
469
- "when": [
470
- "runner_system_failure",
471
- "stuck_or_timeout_failure",
472
- ],
473
- },
474
- "script": [
475
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
476
- "export APP_PATH="api"",
477
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
478
- "cd api",
479
- "yarn npm audit --environment production",
480
- ],
481
- "stage": "test",
482
- "variables": {
483
- "KUBERNETES_CPU_REQUEST": "0.5",
484
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
485
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
486
- },
487
- },
488
- "api ๐Ÿงช test": {
489
- "cache": [
490
- {
491
- "key": "api-yarn",
492
- "paths": [
493
- "api/.yarn",
494
- ],
495
- "policy": "pull-push",
496
- },
497
- {
498
- "key": "api-node-modules",
499
- "paths": [
500
- "api/node_modules",
501
- ],
502
- "policy": "pull-push",
503
- },
504
- ],
505
- "image": "path/to/docker/jobs-testing-chrome:the-version",
506
- "interruptible": true,
507
- "needs": [],
508
- "retry": {
509
- "max": 2,
510
- "when": [
511
- "runner_system_failure",
512
- "stuck_or_timeout_failure",
513
- ],
514
- },
515
- "script": [
516
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
517
- "export APP_PATH="api"",
518
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
519
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
520
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
521
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
522
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
523
- "cd api",
524
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
525
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
526
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
527
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
528
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
529
- "yarn install --immutable",
530
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
531
- "yarn test",
532
- ],
533
- "stage": "test",
534
- "variables": {
535
- "KUBERNETES_CPU_REQUEST": "0.5",
536
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
537
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
538
- },
539
- },
540
- "api ๐Ÿงพ sbom | dev ": {
567
+ "๐Ÿ”น api ๐Ÿงพ sbom | dev ": {
541
568
  "allow_failure": true,
542
569
  "artifacts": {
543
570
  "paths": [
@@ -562,26 +589,24 @@ EOF
562
589
  "stage": "build",
563
590
  "variables": {},
564
591
  },
565
- "www ๐Ÿ‘ฎ lint": {
592
+ "๐Ÿ”น www ๐Ÿ”จ docker | dev ": {
566
593
  "cache": [
567
594
  {
568
595
  "key": "www-yarn",
569
596
  "paths": [
570
597
  "www/.yarn",
571
598
  ],
572
- "policy": "pull-push",
599
+ "policy": "pull",
573
600
  },
601
+ ],
602
+ "image": "path/to/docker/docker-build:the-version",
603
+ "interruptible": true,
604
+ "needs": [
574
605
  {
575
- "key": "www-node-modules",
576
- "paths": [
577
- "www/node_modules",
578
- ],
579
- "policy": "pull-push",
606
+ "artifacts": true,
607
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | dev ",
580
608
  },
581
609
  ],
582
- "image": "path/to/docker/jobs-default:the-version",
583
- "interruptible": true,
584
- "needs": [],
585
610
  "retry": {
586
611
  "max": 2,
587
612
  "when": [
@@ -591,199 +616,64 @@ EOF
591
616
  },
592
617
  "script": [
593
618
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
594
- "export APP_PATH="www"",
619
+ "export APP_DIR="www"",
620
+ "export DOCKER_DIR="."",
621
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
622
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www"",
623
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"",
624
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
625
+ "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
626
+ RUN yarn plugin import workspace-tools
627
+ RUN yarn workspaces focus --production && yarn rebuild"",
628
+ "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
629
+ COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
630
+ COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
631
+ COPY --chown=node:node .yarn /app/.yarn"",
595
632
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
596
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
597
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
598
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
599
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
600
- "cd www",
601
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
602
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
603
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
604
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
605
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
606
- "yarn install --immutable",
607
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
608
- "yarn lint",
633
+ "ensureNodeDockerfile",
634
+ "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
635
+ "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")",
636
+ "gcloud auth configure-docker europe-west6-docker.pkg.dev",
637
+ "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
638
+ "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
639
+ "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
640
+ "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
641
+ "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
642
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
643
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
644
+ "docker push $DOCKER_CACHE_IMAGE",
645
+ "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
609
646
  ],
610
- "stage": "test",
647
+ "services": [
648
+ {
649
+ "command": [
650
+ "--tls=false",
651
+ ],
652
+ "name": "docker:24.0.6-dind",
653
+ },
654
+ ],
655
+ "stage": "build",
611
656
  "variables": {
657
+ "DOCKER_BUILDKIT": "1",
658
+ "DOCKER_DRIVER": "overlay2",
659
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
660
+ "DOCKER_TLS_CERTDIR": "",
612
661
  "KUBERNETES_CPU_REQUEST": "0.5",
613
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
614
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
662
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
663
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
615
664
  },
616
665
  },
617
- "www ๐Ÿ”จ app | dev ": {
666
+ "๐Ÿ”น www ๐Ÿš€ Deploy | dev ": {
667
+ "allow_failure": false,
618
668
  "artifacts": {
619
- "expire_in": "1 day",
620
- "paths": [
621
- "www/__build_info.json",
622
- "www/dist",
623
- "www/.next",
624
- ],
625
669
  "reports": {
626
- "junit": undefined,
627
- },
628
- "when": "always",
629
- },
630
- "cache": [
631
- {
632
- "key": "www-yarn",
633
- "paths": [
634
- "www/.yarn",
635
- ],
636
- "policy": "pull-push",
637
- },
638
- {
639
- "key": "www-node-modules",
640
- "paths": [
641
- "www/node_modules",
642
- ],
643
- "policy": "pull-push",
644
- },
645
- {
646
- "key": "www-next-cache",
647
- "paths": [
648
- "www/.next/cache/",
649
- ],
650
- "policy": "pull-push",
651
- },
652
- ],
653
- "image": "path/to/docker/jobs-default:the-version",
654
- "interruptible": true,
655
- "needs": [],
656
- "retry": {
657
- "max": 2,
658
- "when": [
659
- "runner_system_failure",
660
- "stuck_or_timeout_failure",
661
- ],
662
- },
663
- "script": [
664
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
665
- "export ENV_SHORT="dev"",
666
- "export APP_DIR="www"",
667
- "export ENV_TYPE="dev"",
668
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
669
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
670
- "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")"",
671
- "export HOST="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
672
- "export ROOT_URL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
673
- "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
674
- "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
675
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
676
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
677
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
678
- "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_www_GCLOUD_DEPLOY_credentialsKey"",
679
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix"",
680
- "export API_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql"",
681
- "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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"API_URL\\"]"",
682
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
683
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
684
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
685
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
686
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
687
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
688
- "cd www",
689
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
690
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
691
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
692
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
693
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
694
- "yarn install --immutable",
695
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
696
- "yarn build",
697
- ],
698
- "stage": "build",
699
- "variables": {
700
- "KUBERNETES_CPU_REQUEST": "0.5",
701
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
702
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
703
- },
704
- },
705
- "www ๐Ÿ”จ docker | dev ": {
706
- "cache": [
707
- {
708
- "key": "www-yarn",
709
- "paths": [
710
- "www/.yarn",
711
- ],
712
- "policy": "pull",
713
- },
714
- ],
715
- "image": "path/to/docker/docker-build:the-version",
716
- "interruptible": true,
717
- "needs": [
718
- "www ๐Ÿ”จ app | dev ",
719
- ],
720
- "retry": {
721
- "max": 2,
722
- "when": [
723
- "runner_system_failure",
724
- "stuck_or_timeout_failure",
725
- ],
726
- },
727
- "script": [
728
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
729
- "export APP_DIR="www"",
730
- "export DOCKER_DIR="."",
731
- "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
732
- "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www"",
733
- "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"",
734
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
735
- "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
736
- RUN yarn plugin import workspace-tools
737
- RUN yarn workspaces focus --production && yarn rebuild"",
738
- "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
739
- COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
740
- COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
741
- COPY --chown=node:node .yarn /app/.yarn"",
742
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
743
- "ensureNodeDockerfile",
744
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
745
- "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")",
746
- "gcloud auth configure-docker europe-west6-docker.pkg.dev",
747
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
748
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
749
- "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
750
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
751
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
752
- "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
753
- "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
754
- "docker push $DOCKER_CACHE_IMAGE",
755
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
756
- ],
757
- "services": [
758
- {
759
- "command": [
760
- "--tls=false",
761
- ],
762
- "name": "docker:24.0.6-dind",
763
- },
764
- ],
765
- "stage": "build",
766
- "variables": {
767
- "DOCKER_BUILDKIT": "1",
768
- "DOCKER_DRIVER": "overlay2",
769
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
770
- "DOCKER_TLS_CERTDIR": "",
771
- "KUBERNETES_CPU_REQUEST": "0.5",
772
- "KUBERNETES_MEMORY_LIMIT": "2Gi",
773
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
774
- },
775
- },
776
- "www ๐Ÿš€ Deploy | dev ": {
777
- "allow_failure": false,
778
- "artifacts": {
779
- "reports": {
780
- "dotenv": "gitlab_environment.env",
670
+ "dotenv": "gitlab_environment.env",
781
671
  },
782
672
  },
783
673
  "environment": {
784
674
  "auto_stop_in": "4 weeks",
785
675
  "name": "dev/www",
786
- "on_stop": "www ๐Ÿ›‘ Stop โš ๏ธ | dev ",
676
+ "on_stop": "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | dev ",
787
677
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
788
678
  },
789
679
  "image": "path/to/docker/gcloud:the-version",
@@ -791,27 +681,23 @@ COPY --chown=node:node .yarn /app/.yarn"",
791
681
  "needs": [
792
682
  {
793
683
  "artifacts": false,
794
- "job": "www ๐Ÿ‘ฎ lint",
684
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint",
795
685
  },
796
686
  {
797
687
  "artifacts": false,
798
- "job": "www ๐Ÿ”จ app | dev ",
688
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿงช test",
799
689
  },
800
690
  {
801
691
  "artifacts": false,
802
- "job": "www ๐Ÿ”จ docker | dev ",
692
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit",
803
693
  },
804
694
  {
805
695
  "artifacts": false,
806
- "job": "www ๐Ÿงช test",
696
+ "job": "๐Ÿ”น www ๐Ÿ”จ docker | dev ",
807
697
  },
808
698
  {
809
699
  "artifacts": true,
810
- "job": "www ๐Ÿงพ sbom | dev ",
811
- },
812
- {
813
- "artifacts": false,
814
- "job": "www ๐Ÿ›ก audit",
700
+ "job": "๐Ÿ”น www ๐Ÿงพ sbom | dev ",
815
701
  },
816
702
  ],
817
703
  "retry": {
@@ -913,7 +799,7 @@ EOF
913
799
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
914
800
  },
915
801
  },
916
- "www ๐Ÿ›‘ Stop โš ๏ธ | dev ": {
802
+ "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | dev ": {
917
803
  "allow_failure": true,
918
804
  "artifacts": {
919
805
  "reports": {
@@ -966,85 +852,7 @@ EOF
966
852
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
967
853
  },
968
854
  },
969
- "www ๐Ÿ›ก audit": {
970
- "allow_failure": true,
971
- "image": "path/to/docker/jobs-default:the-version",
972
- "interruptible": true,
973
- "needs": [],
974
- "retry": {
975
- "max": 2,
976
- "when": [
977
- "runner_system_failure",
978
- "stuck_or_timeout_failure",
979
- ],
980
- },
981
- "script": [
982
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
983
- "export APP_PATH="www"",
984
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
985
- "cd www",
986
- "yarn npm audit --environment production",
987
- ],
988
- "stage": "test",
989
- "variables": {
990
- "KUBERNETES_CPU_REQUEST": "0.5",
991
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
992
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
993
- },
994
- },
995
- "www ๐Ÿงช test": {
996
- "cache": [
997
- {
998
- "key": "www-yarn",
999
- "paths": [
1000
- "www/.yarn",
1001
- ],
1002
- "policy": "pull-push",
1003
- },
1004
- {
1005
- "key": "www-node-modules",
1006
- "paths": [
1007
- "www/node_modules",
1008
- ],
1009
- "policy": "pull-push",
1010
- },
1011
- ],
1012
- "image": "path/to/docker/jobs-testing-chrome:the-version",
1013
- "interruptible": true,
1014
- "needs": [],
1015
- "retry": {
1016
- "max": 2,
1017
- "when": [
1018
- "runner_system_failure",
1019
- "stuck_or_timeout_failure",
1020
- ],
1021
- },
1022
- "script": [
1023
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1024
- "export APP_PATH="www"",
1025
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1026
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1027
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1028
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1029
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1030
- "cd www",
1031
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1032
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1033
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1034
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1035
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1036
- "yarn install --immutable",
1037
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1038
- "yarn test",
1039
- ],
1040
- "stage": "test",
1041
- "variables": {
1042
- "KUBERNETES_CPU_REQUEST": "0.5",
1043
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1044
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1045
- },
1046
- },
1047
- "www ๐Ÿงพ sbom | dev ": {
855
+ "๐Ÿ”น www ๐Ÿงพ sbom | dev ": {
1048
856
  "allow_failure": true,
1049
857
  "artifacts": {
1050
858
  "paths": [
@@ -1139,19 +947,19 @@ EOF
1139
947
  "mr": {
1140
948
  "image": "path/to/docker/jobs-default:the-version",
1141
949
  "jobs": {
1142
- "api ๐Ÿ‘ฎ lint": {
950
+ "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint": {
1143
951
  "cache": [
1144
952
  {
1145
- "key": "api-yarn",
953
+ "key": ".-yarn",
1146
954
  "paths": [
1147
- "api/.yarn",
955
+ ".yarn",
1148
956
  ],
1149
957
  "policy": "pull-push",
1150
958
  },
1151
959
  {
1152
- "key": "api-node-modules",
960
+ "key": ".-node-modules",
1153
961
  "paths": [
1154
- "api/node_modules",
962
+ "node_modules",
1155
963
  ],
1156
964
  "policy": "pull-push",
1157
965
  },
@@ -1168,13 +976,13 @@ EOF
1168
976
  },
1169
977
  "script": [
1170
978
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1171
- "export APP_PATH="api"",
979
+ "export APP_PATH="."",
1172
980
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1173
981
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1174
982
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1175
983
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1176
984
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1177
- "cd api",
985
+ "cd .",
1178
986
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1179
987
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1180
988
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -1191,38 +999,42 @@ EOF
1191
999
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1192
1000
  },
1193
1001
  },
1194
- "api ๐Ÿ”จ app | review ": {
1002
+ "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | review ": {
1195
1003
  "artifacts": {
1004
+ "exclude": [
1005
+ "api/.env",
1006
+ "www/.env",
1007
+ ],
1196
1008
  "expire_in": "1 day",
1197
1009
  "paths": [
1198
- "api/__build_info.json",
1199
- "api/dist",
1200
1010
  "api/.next",
1011
+ "api/dist",
1012
+ "www/.next",
1013
+ "www/dist",
1201
1014
  ],
1202
- "reports": {
1203
- "junit": undefined,
1204
- },
1015
+ "reports": {},
1205
1016
  "when": "always",
1206
1017
  },
1207
1018
  "cache": [
1208
1019
  {
1209
- "key": "api-yarn",
1020
+ "key": ".-yarn",
1210
1021
  "paths": [
1211
- "api/.yarn",
1022
+ ".yarn",
1212
1023
  ],
1213
1024
  "policy": "pull-push",
1214
1025
  },
1215
1026
  {
1216
- "key": "api-node-modules",
1027
+ "key": ".-node-modules",
1217
1028
  "paths": [
1218
- "api/node_modules",
1029
+ "node_modules",
1219
1030
  ],
1220
1031
  "policy": "pull-push",
1221
1032
  },
1222
1033
  {
1223
- "key": "api-next-cache",
1034
+ "key": "myWorkspace-next-cache",
1224
1035
  "paths": [
1225
- "api/.next/cache/",
1036
+ "api/.next/cache",
1037
+ "www/.next/cache",
1226
1038
  ],
1227
1039
  "policy": "pull-push",
1228
1040
  },
@@ -1239,37 +1051,61 @@ EOF
1239
1051
  },
1240
1052
  "script": [
1241
1053
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1242
- "export ENV_SHORT="review"",
1243
- "export APP_DIR="api"",
1244
- "export ENV_TYPE="review"",
1245
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1246
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1247
- "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")"",
1248
- "export HOST="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1249
- "export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1250
- "export HOST_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1251
- "export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1252
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1253
- "export CLOUD_SQL_INSTANCE_CONNECTION_NAME="projectId:region:instancename"",
1254
- "export DB_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
1255
- "export DB_USER="my-user"",
1256
- "export DB_PASSWORD="$CL_review_api_DB_PASSWORD"",
1257
- "export DATABASE_URL="postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME"",
1258
- "export DATABASE_JDBC_URL="jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD"",
1259
- "export CLOUD_RUN_JOB_TRIGGER_URL_migration="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(printf %s \\"pan-test-app-review-$([ -n \\"$CI_MERGE_REQUEST_IID\\" ] && echo \\"mr$CI_MERGE_REQUEST_IID\\" || { [ -n \\"$CI_COMMIT_REF_SLUG\\" ] && echo \\"$CI_COMMIT_REF_SLUG\\" || echo \\"unknown\\"; })-api\\" | awk '{print tolower($0)}')-migration:run"",
1260
- "export CLOUD_RUN_JOB_TRIGGER_URL_send_reminders="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(printf %s \\"pan-test-app-review-$([ -n \\"$CI_MERGE_REQUEST_IID\\" ] && echo \\"mr$CI_MERGE_REQUEST_IID\\" || { [ -n \\"$CI_COMMIT_REF_SLUG\\" ] && echo \\"$CI_COMMIT_REF_SLUG\\" || echo \\"unknown\\"; })-api\\" | awk '{print tolower($0)}')-send-reminders:run"",
1261
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1262
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1263
- "export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
1264
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
1265
- "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\\",\\"CLOUD_SQL_INSTANCE_CONNECTION_NAME\\",\\"DB_NAME\\",\\"DB_USER\\",\\"DB_PASSWORD\\",\\"DATABASE_URL\\",\\"DATABASE_JDBC_URL\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_migration\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
1266
1054
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1267
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
1055
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-api[collapsed=true]\\r\\e[0Kwrite dot env"",
1056
+ "cat <<EOF > api/.env
1057
+ ENV_SHORT=review
1058
+ APP_DIR=api
1059
+ ENV_TYPE=review
1060
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
1061
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
1062
+ 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")
1063
+ HOST=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1064
+ ROOT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1065
+ HOST_INTERNAL=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1066
+ HOST_CANONICAL=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1067
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1068
+ CLOUD_SQL_INSTANCE_CONNECTION_NAME=projectId:region:instancename
1069
+ DB_NAME=pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api
1070
+ DB_USER=my-user
1071
+ DB_PASSWORD=$CL_review_api_DB_PASSWORD
1072
+ DATABASE_URL=postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME
1073
+ DATABASE_JDBC_URL=jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD
1074
+ CLOUD_RUN_JOB_TRIGGER_URL_migration=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" | awk '{print tolower($0)}')-migration:run
1075
+ CLOUD_RUN_JOB_TRIGGER_URL_send_reminders=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" | awk '{print tolower($0)}')-send-reminders:run
1076
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
1077
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
1078
+ GCLOUD_DEPLOY_credentialsKey=$CL_review_api_GCLOUD_DEPLOY_credentialsKey
1079
+ GCLOUD_RUN_canonicalHostSuffix=$CL_review_api_GCLOUD_RUN_canonicalHostSuffix
1080
+ _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","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
1081
+ EOF",
1082
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-api\\r\\e[0K"",
1083
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-www[collapsed=true]\\r\\e[0Kwrite dot env"",
1084
+ "cat <<EOF > www/.env
1085
+ ENV_SHORT=review
1086
+ APP_DIR=www
1087
+ ENV_TYPE=review
1088
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
1089
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
1090
+ 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")
1091
+ HOST=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1092
+ ROOT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1093
+ HOST_INTERNAL=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1094
+ HOST_CANONICAL=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1095
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1096
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
1097
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
1098
+ GCLOUD_DEPLOY_credentialsKey=$CL_review_www_GCLOUD_DEPLOY_credentialsKey
1099
+ GCLOUD_RUN_canonicalHostSuffix=$CL_review_www_GCLOUD_RUN_canonicalHostSuffix
1100
+ API_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql
1101
+ _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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","API_URL"]
1102
+ EOF",
1103
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-www\\r\\e[0K"",
1268
1104
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1269
1105
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1270
1106
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1271
1107
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1272
- "cd api",
1108
+ "cd .",
1273
1109
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1274
1110
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1275
1111
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -1286,11 +1122,89 @@ EOF
1286
1122
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1287
1123
  },
1288
1124
  },
1289
- "api ๐Ÿ”จ docker | review ": {
1290
- "cache": [
1291
- {
1292
- "key": "api-yarn",
1293
- "paths": [
1125
+ "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit": {
1126
+ "allow_failure": true,
1127
+ "image": "path/to/docker/jobs-default:the-version",
1128
+ "interruptible": true,
1129
+ "needs": [],
1130
+ "retry": {
1131
+ "max": 2,
1132
+ "when": [
1133
+ "runner_system_failure",
1134
+ "stuck_or_timeout_failure",
1135
+ ],
1136
+ },
1137
+ "script": [
1138
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1139
+ "export APP_PATH="."",
1140
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1141
+ "cd .",
1142
+ "yarn npm audit --environment production",
1143
+ ],
1144
+ "stage": "test",
1145
+ "variables": {
1146
+ "KUBERNETES_CPU_REQUEST": "0.5",
1147
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
1148
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
1149
+ },
1150
+ },
1151
+ "๐Ÿ”ธ myWorkspace ๐Ÿงช test": {
1152
+ "cache": [
1153
+ {
1154
+ "key": ".-yarn",
1155
+ "paths": [
1156
+ ".yarn",
1157
+ ],
1158
+ "policy": "pull-push",
1159
+ },
1160
+ {
1161
+ "key": ".-node-modules",
1162
+ "paths": [
1163
+ "node_modules",
1164
+ ],
1165
+ "policy": "pull-push",
1166
+ },
1167
+ ],
1168
+ "image": "path/to/docker/jobs-testing-chrome:the-version",
1169
+ "interruptible": true,
1170
+ "needs": [],
1171
+ "retry": {
1172
+ "max": 2,
1173
+ "when": [
1174
+ "runner_system_failure",
1175
+ "stuck_or_timeout_failure",
1176
+ ],
1177
+ },
1178
+ "script": [
1179
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1180
+ "export APP_PATH="."",
1181
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1182
+ "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1183
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1184
+ "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1185
+ "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1186
+ "cd .",
1187
+ "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1188
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1189
+ "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1190
+ "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1191
+ "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1192
+ "yarn install --immutable",
1193
+ "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1194
+ "yarn test",
1195
+ ],
1196
+ "stage": "test",
1197
+ "variables": {
1198
+ "KUBERNETES_CPU_REQUEST": "0.5",
1199
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
1200
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
1201
+ },
1202
+ },
1203
+ "๐Ÿ”น api ๐Ÿ”จ docker | review ": {
1204
+ "cache": [
1205
+ {
1206
+ "key": "api-yarn",
1207
+ "paths": [
1294
1208
  "api/.yarn",
1295
1209
  ],
1296
1210
  "policy": "pull",
@@ -1299,7 +1213,10 @@ EOF
1299
1213
  "image": "path/to/docker/docker-build:the-version",
1300
1214
  "interruptible": true,
1301
1215
  "needs": [
1302
- "api ๐Ÿ”จ app | review ",
1216
+ {
1217
+ "artifacts": true,
1218
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | review ",
1219
+ },
1303
1220
  ],
1304
1221
  "retry": {
1305
1222
  "max": 2,
@@ -1357,7 +1274,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
1357
1274
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1358
1275
  },
1359
1276
  },
1360
- "api ๐Ÿš€ Deploy | review ": {
1277
+ "๐Ÿ”น api ๐Ÿš€ Deploy | review ": {
1361
1278
  "allow_failure": false,
1362
1279
  "artifacts": {
1363
1280
  "reports": {
@@ -1367,7 +1284,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
1367
1284
  "environment": {
1368
1285
  "auto_stop_in": "1 week",
1369
1286
  "name": "review/$CI_COMMIT_REF_NAME/api",
1370
- "on_stop": "api ๐Ÿ›‘ Stop โš ๏ธ | review ",
1287
+ "on_stop": "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | review ",
1371
1288
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
1372
1289
  },
1373
1290
  "image": "path/to/docker/gcloud:the-version",
@@ -1375,27 +1292,23 @@ COPY --chown=node:node .yarn /app/.yarn"",
1375
1292
  "needs": [
1376
1293
  {
1377
1294
  "artifacts": false,
1378
- "job": "api ๐Ÿ‘ฎ lint",
1295
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint",
1379
1296
  },
1380
1297
  {
1381
1298
  "artifacts": false,
1382
- "job": "api ๐Ÿ”จ app | review ",
1299
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿงช test",
1383
1300
  },
1384
1301
  {
1385
1302
  "artifacts": false,
1386
- "job": "api ๐Ÿ”จ docker | review ",
1303
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit",
1387
1304
  },
1388
1305
  {
1389
1306
  "artifacts": false,
1390
- "job": "api ๐Ÿงช test",
1307
+ "job": "๐Ÿ”น api ๐Ÿ”จ docker | review ",
1391
1308
  },
1392
1309
  {
1393
1310
  "artifacts": true,
1394
- "job": "api ๐Ÿงพ sbom | review ",
1395
- },
1396
- {
1397
- "artifacts": false,
1398
- "job": "api ๐Ÿ›ก audit",
1311
+ "job": "๐Ÿ”น api ๐Ÿงพ sbom | review ",
1399
1312
  },
1400
1313
  ],
1401
1314
  "retry": {
@@ -1538,7 +1451,7 @@ EOF
1538
1451
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1539
1452
  },
1540
1453
  },
1541
- "api ๐Ÿ›‘ Stop โš ๏ธ | review ": {
1454
+ "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | review ": {
1542
1455
  "allow_failure": true,
1543
1456
  "artifacts": {
1544
1457
  "reports": {
@@ -1608,85 +1521,7 @@ EOF
1608
1521
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1609
1522
  },
1610
1523
  },
1611
- "api ๐Ÿ›ก audit": {
1612
- "allow_failure": true,
1613
- "image": "path/to/docker/jobs-default:the-version",
1614
- "interruptible": true,
1615
- "needs": [],
1616
- "retry": {
1617
- "max": 2,
1618
- "when": [
1619
- "runner_system_failure",
1620
- "stuck_or_timeout_failure",
1621
- ],
1622
- },
1623
- "script": [
1624
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1625
- "export APP_PATH="api"",
1626
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1627
- "cd api",
1628
- "yarn npm audit --environment production",
1629
- ],
1630
- "stage": "test",
1631
- "variables": {
1632
- "KUBERNETES_CPU_REQUEST": "0.5",
1633
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1634
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1635
- },
1636
- },
1637
- "api ๐Ÿงช test": {
1638
- "cache": [
1639
- {
1640
- "key": "api-yarn",
1641
- "paths": [
1642
- "api/.yarn",
1643
- ],
1644
- "policy": "pull-push",
1645
- },
1646
- {
1647
- "key": "api-node-modules",
1648
- "paths": [
1649
- "api/node_modules",
1650
- ],
1651
- "policy": "pull-push",
1652
- },
1653
- ],
1654
- "image": "path/to/docker/jobs-testing-chrome:the-version",
1655
- "interruptible": true,
1656
- "needs": [],
1657
- "retry": {
1658
- "max": 2,
1659
- "when": [
1660
- "runner_system_failure",
1661
- "stuck_or_timeout_failure",
1662
- ],
1663
- },
1664
- "script": [
1665
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1666
- "export APP_PATH="api"",
1667
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1668
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1669
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1670
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1671
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1672
- "cd api",
1673
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1674
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1675
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1676
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1677
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1678
- "yarn install --immutable",
1679
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1680
- "yarn test",
1681
- ],
1682
- "stage": "test",
1683
- "variables": {
1684
- "KUBERNETES_CPU_REQUEST": "0.5",
1685
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1686
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1687
- },
1688
- },
1689
- "api ๐Ÿงพ sbom | review ": {
1524
+ "๐Ÿ”น api ๐Ÿงพ sbom | review ": {
1690
1525
  "allow_failure": true,
1691
1526
  "artifacts": {
1692
1527
  "paths": [
@@ -1711,147 +1546,7 @@ EOF
1711
1546
  "stage": "build",
1712
1547
  "variables": {},
1713
1548
  },
1714
- "www ๐Ÿ‘ฎ lint": {
1715
- "cache": [
1716
- {
1717
- "key": "www-yarn",
1718
- "paths": [
1719
- "www/.yarn",
1720
- ],
1721
- "policy": "pull-push",
1722
- },
1723
- {
1724
- "key": "www-node-modules",
1725
- "paths": [
1726
- "www/node_modules",
1727
- ],
1728
- "policy": "pull-push",
1729
- },
1730
- ],
1731
- "image": "path/to/docker/jobs-default:the-version",
1732
- "interruptible": true,
1733
- "needs": [],
1734
- "retry": {
1735
- "max": 2,
1736
- "when": [
1737
- "runner_system_failure",
1738
- "stuck_or_timeout_failure",
1739
- ],
1740
- },
1741
- "script": [
1742
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1743
- "export APP_PATH="www"",
1744
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1745
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1746
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1747
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1748
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1749
- "cd www",
1750
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1751
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1752
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1753
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1754
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1755
- "yarn install --immutable",
1756
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1757
- "yarn lint",
1758
- ],
1759
- "stage": "test",
1760
- "variables": {
1761
- "KUBERNETES_CPU_REQUEST": "0.5",
1762
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1763
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1764
- },
1765
- },
1766
- "www ๐Ÿ”จ app | review ": {
1767
- "artifacts": {
1768
- "expire_in": "1 day",
1769
- "paths": [
1770
- "www/__build_info.json",
1771
- "www/dist",
1772
- "www/.next",
1773
- ],
1774
- "reports": {
1775
- "junit": undefined,
1776
- },
1777
- "when": "always",
1778
- },
1779
- "cache": [
1780
- {
1781
- "key": "www-yarn",
1782
- "paths": [
1783
- "www/.yarn",
1784
- ],
1785
- "policy": "pull-push",
1786
- },
1787
- {
1788
- "key": "www-node-modules",
1789
- "paths": [
1790
- "www/node_modules",
1791
- ],
1792
- "policy": "pull-push",
1793
- },
1794
- {
1795
- "key": "www-next-cache",
1796
- "paths": [
1797
- "www/.next/cache/",
1798
- ],
1799
- "policy": "pull-push",
1800
- },
1801
- ],
1802
- "image": "path/to/docker/jobs-default:the-version",
1803
- "interruptible": true,
1804
- "needs": [],
1805
- "retry": {
1806
- "max": 2,
1807
- "when": [
1808
- "runner_system_failure",
1809
- "stuck_or_timeout_failure",
1810
- ],
1811
- },
1812
- "script": [
1813
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1814
- "export ENV_SHORT="review"",
1815
- "export APP_DIR="www"",
1816
- "export ENV_TYPE="review"",
1817
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1818
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1819
- "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")"",
1820
- "export HOST="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1821
- "export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1822
- "export HOST_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1823
- "export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1824
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1825
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1826
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1827
- "export GCLOUD_DEPLOY_credentialsKey="$CL_review_www_GCLOUD_DEPLOY_credentialsKey"",
1828
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_www_GCLOUD_RUN_canonicalHostSuffix"",
1829
- "export API_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql"",
1830
- "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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"API_URL\\"]"",
1831
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1832
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
1833
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1834
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1835
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1836
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1837
- "cd www",
1838
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1839
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1840
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1841
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1842
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1843
- "yarn install --immutable",
1844
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1845
- "yarn build",
1846
- ],
1847
- "stage": "build",
1848
- "variables": {
1849
- "KUBERNETES_CPU_REQUEST": "0.5",
1850
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1851
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1852
- },
1853
- },
1854
- "www ๐Ÿ”จ docker | review ": {
1549
+ "๐Ÿ”น www ๐Ÿ”จ docker | review ": {
1855
1550
  "cache": [
1856
1551
  {
1857
1552
  "key": "www-yarn",
@@ -1864,7 +1559,10 @@ EOF
1864
1559
  "image": "path/to/docker/docker-build:the-version",
1865
1560
  "interruptible": true,
1866
1561
  "needs": [
1867
- "www ๐Ÿ”จ app | review ",
1562
+ {
1563
+ "artifacts": true,
1564
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | review ",
1565
+ },
1868
1566
  ],
1869
1567
  "retry": {
1870
1568
  "max": 2,
@@ -1922,7 +1620,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
1922
1620
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1923
1621
  },
1924
1622
  },
1925
- "www ๐Ÿš€ Deploy | review ": {
1623
+ "๐Ÿ”น www ๐Ÿš€ Deploy | review ": {
1926
1624
  "allow_failure": false,
1927
1625
  "artifacts": {
1928
1626
  "reports": {
@@ -1932,7 +1630,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
1932
1630
  "environment": {
1933
1631
  "auto_stop_in": "1 week",
1934
1632
  "name": "review/$CI_COMMIT_REF_NAME/www",
1935
- "on_stop": "www ๐Ÿ›‘ Stop โš ๏ธ | review ",
1633
+ "on_stop": "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | review ",
1936
1634
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
1937
1635
  },
1938
1636
  "image": "path/to/docker/gcloud:the-version",
@@ -1940,27 +1638,23 @@ COPY --chown=node:node .yarn /app/.yarn"",
1940
1638
  "needs": [
1941
1639
  {
1942
1640
  "artifacts": false,
1943
- "job": "www ๐Ÿ‘ฎ lint",
1641
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ‘ฎ lint",
1944
1642
  },
1945
1643
  {
1946
1644
  "artifacts": false,
1947
- "job": "www ๐Ÿ”จ app | review ",
1645
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿงช test",
1948
1646
  },
1949
1647
  {
1950
1648
  "artifacts": false,
1951
- "job": "www ๐Ÿ”จ docker | review ",
1649
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ›ก audit",
1952
1650
  },
1953
1651
  {
1954
1652
  "artifacts": false,
1955
- "job": "www ๐Ÿงช test",
1653
+ "job": "๐Ÿ”น www ๐Ÿ”จ docker | review ",
1956
1654
  },
1957
1655
  {
1958
1656
  "artifacts": true,
1959
- "job": "www ๐Ÿงพ sbom | review ",
1960
- },
1961
- {
1962
- "artifacts": false,
1963
- "job": "www ๐Ÿ›ก audit",
1657
+ "job": "๐Ÿ”น www ๐Ÿงพ sbom | review ",
1964
1658
  },
1965
1659
  ],
1966
1660
  "retry": {
@@ -2065,7 +1759,7 @@ EOF
2065
1759
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
2066
1760
  },
2067
1761
  },
2068
- "www ๐Ÿ›‘ Stop โš ๏ธ | review ": {
1762
+ "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | review ": {
2069
1763
  "allow_failure": true,
2070
1764
  "artifacts": {
2071
1765
  "reports": {
@@ -2111,95 +1805,17 @@ EOF
2111
1805
  "echo 'Disabling component in Dependency Track'",
2112
1806
  "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
2113
1807
  "set -e",
2114
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2115
- ],
2116
- "stage": "stop review",
2117
- "variables": {
2118
- "GIT_STRATEGY": "none",
2119
- "KUBERNETES_CPU_REQUEST": "0.5",
2120
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2121
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2122
- },
2123
- },
2124
- "www ๐Ÿ›ก audit": {
2125
- "allow_failure": true,
2126
- "image": "path/to/docker/jobs-default:the-version",
2127
- "interruptible": true,
2128
- "needs": [],
2129
- "retry": {
2130
- "max": 2,
2131
- "when": [
2132
- "runner_system_failure",
2133
- "stuck_or_timeout_failure",
2134
- ],
2135
- },
2136
- "script": [
2137
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2138
- "export APP_PATH="www"",
2139
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2140
- "cd www",
2141
- "yarn npm audit --environment production",
2142
- ],
2143
- "stage": "test",
2144
- "variables": {
2145
- "KUBERNETES_CPU_REQUEST": "0.5",
2146
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
2147
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
2148
- },
2149
- },
2150
- "www ๐Ÿงช test": {
2151
- "cache": [
2152
- {
2153
- "key": "www-yarn",
2154
- "paths": [
2155
- "www/.yarn",
2156
- ],
2157
- "policy": "pull-push",
2158
- },
2159
- {
2160
- "key": "www-node-modules",
2161
- "paths": [
2162
- "www/node_modules",
2163
- ],
2164
- "policy": "pull-push",
2165
- },
2166
- ],
2167
- "image": "path/to/docker/jobs-testing-chrome:the-version",
2168
- "interruptible": true,
2169
- "needs": [],
2170
- "retry": {
2171
- "max": 2,
2172
- "when": [
2173
- "runner_system_failure",
2174
- "stuck_or_timeout_failure",
2175
- ],
2176
- },
2177
- "script": [
2178
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2179
- "export APP_PATH="www"",
2180
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2181
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2182
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2183
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2184
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2185
- "cd www",
2186
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2187
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2188
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2189
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2190
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
2191
- "yarn install --immutable",
2192
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
2193
- "yarn test",
1808
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2194
1809
  ],
2195
- "stage": "test",
1810
+ "stage": "stop review",
2196
1811
  "variables": {
1812
+ "GIT_STRATEGY": "none",
2197
1813
  "KUBERNETES_CPU_REQUEST": "0.5",
2198
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
2199
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
1814
+ "KUBERNETES_MEMORY_LIMIT": "400Mi",
1815
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
2200
1816
  },
2201
1817
  },
2202
- "www ๐Ÿงพ sbom | review ": {
1818
+ "๐Ÿ”น www ๐Ÿงพ sbom | review ": {
2203
1819
  "allow_failure": true,
2204
1820
  "artifacts": {
2205
1821
  "paths": [
@@ -2294,38 +1910,42 @@ EOF
2294
1910
  "taggedRelease": {
2295
1911
  "image": "path/to/docker/jobs-default:the-version",
2296
1912
  "jobs": {
2297
- "api ๐Ÿ”จ app | prod ": {
1913
+ "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | prod ": {
2298
1914
  "artifacts": {
1915
+ "exclude": [
1916
+ "api/.env",
1917
+ "www/.env",
1918
+ ],
2299
1919
  "expire_in": "1 day",
2300
1920
  "paths": [
2301
- "api/__build_info.json",
2302
- "api/dist",
2303
1921
  "api/.next",
1922
+ "api/dist",
1923
+ "www/.next",
1924
+ "www/dist",
2304
1925
  ],
2305
- "reports": {
2306
- "junit": undefined,
2307
- },
1926
+ "reports": {},
2308
1927
  "when": "always",
2309
1928
  },
2310
1929
  "cache": [
2311
1930
  {
2312
- "key": "api-yarn",
1931
+ "key": ".-yarn",
2313
1932
  "paths": [
2314
- "api/.yarn",
1933
+ ".yarn",
2315
1934
  ],
2316
1935
  "policy": "pull-push",
2317
1936
  },
2318
1937
  {
2319
- "key": "api-node-modules",
1938
+ "key": ".-node-modules",
2320
1939
  "paths": [
2321
- "api/node_modules",
1940
+ "node_modules",
2322
1941
  ],
2323
1942
  "policy": "pull-push",
2324
1943
  },
2325
1944
  {
2326
- "key": "api-next-cache",
1945
+ "key": "myWorkspace-next-cache",
2327
1946
  "paths": [
2328
- "api/.next/cache/",
1947
+ "api/.next/cache",
1948
+ "www/.next/cache",
2329
1949
  ],
2330
1950
  "policy": "pull-push",
2331
1951
  },
@@ -2342,37 +1962,61 @@ EOF
2342
1962
  },
2343
1963
  "script": [
2344
1964
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2345
- "export ENV_SHORT="prod"",
2346
- "export APP_DIR="api"",
2347
- "export ENV_TYPE="prod"",
2348
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2349
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2350
- "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")"",
2351
- "export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2352
- "export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2353
- "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2354
- "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2355
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2356
- "export CLOUD_SQL_INSTANCE_CONNECTION_NAME="projectId:region:instancename"",
2357
- "export DB_NAME="pan-test-app-prod-api"",
2358
- "export DB_USER="my-user"",
2359
- "export DB_PASSWORD="$CL_prod_api_DB_PASSWORD"",
2360
- "export DATABASE_URL="postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME"",
2361
- "export DATABASE_JDBC_URL="jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD"",
2362
- "export CLOUD_RUN_JOB_TRIGGER_URL_migration="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run"",
2363
- "export CLOUD_RUN_JOB_TRIGGER_URL_send_reminders="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run"",
2364
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
2365
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
2366
- "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
2367
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
2368
- "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\\",\\"CLOUD_SQL_INSTANCE_CONNECTION_NAME\\",\\"DB_NAME\\",\\"DB_USER\\",\\"DB_PASSWORD\\",\\"DATABASE_URL\\",\\"DATABASE_JDBC_URL\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_migration\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
2369
1965
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2370
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
1966
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-api[collapsed=true]\\r\\e[0Kwrite dot env"",
1967
+ "cat <<EOF > api/.env
1968
+ ENV_SHORT=prod
1969
+ APP_DIR=api
1970
+ ENV_TYPE=prod
1971
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
1972
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
1973
+ 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")
1974
+ HOST=$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1975
+ ROOT_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1976
+ HOST_INTERNAL=$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1977
+ HOST_CANONICAL=$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1978
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
1979
+ CLOUD_SQL_INSTANCE_CONNECTION_NAME=projectId:region:instancename
1980
+ DB_NAME=pan-test-app-prod-api
1981
+ DB_USER=my-user
1982
+ DB_PASSWORD=$CL_prod_api_DB_PASSWORD
1983
+ DATABASE_URL=postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME
1984
+ DATABASE_JDBC_URL=jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD
1985
+ CLOUD_RUN_JOB_TRIGGER_URL_migration=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run
1986
+ CLOUD_RUN_JOB_TRIGGER_URL_send_reminders=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run
1987
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
1988
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
1989
+ GCLOUD_DEPLOY_credentialsKey=$CL_prod_api_GCLOUD_DEPLOY_credentialsKey
1990
+ GCLOUD_RUN_canonicalHostSuffix=$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix
1991
+ _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","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
1992
+ EOF",
1993
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-api\\r\\e[0K"",
1994
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-www[collapsed=true]\\r\\e[0Kwrite dot env"",
1995
+ "cat <<EOF > www/.env
1996
+ ENV_SHORT=prod
1997
+ APP_DIR=www
1998
+ ENV_TYPE=prod
1999
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
2000
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
2001
+ 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")
2002
+ HOST=$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2003
+ ROOT_URL=https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2004
+ HOST_INTERNAL=$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2005
+ HOST_CANONICAL=$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2006
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2007
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
2008
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
2009
+ GCLOUD_DEPLOY_credentialsKey=$CL_prod_www_GCLOUD_DEPLOY_credentialsKey
2010
+ GCLOUD_RUN_canonicalHostSuffix=$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix
2011
+ API_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql
2012
+ _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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","API_URL"]
2013
+ EOF",
2014
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-www\\r\\e[0K"",
2371
2015
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2372
2016
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2373
2017
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2374
2018
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2375
- "cd api",
2019
+ "cd .",
2376
2020
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2377
2021
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2378
2022
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -2389,38 +2033,42 @@ EOF
2389
2033
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
2390
2034
  },
2391
2035
  },
2392
- "api ๐Ÿ”จ app | stage ": {
2036
+ "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | stage ": {
2393
2037
  "artifacts": {
2038
+ "exclude": [
2039
+ "api/.env",
2040
+ "www/.env",
2041
+ ],
2394
2042
  "expire_in": "1 day",
2395
2043
  "paths": [
2396
- "api/__build_info.json",
2397
- "api/dist",
2398
2044
  "api/.next",
2045
+ "api/dist",
2046
+ "www/.next",
2047
+ "www/dist",
2399
2048
  ],
2400
- "reports": {
2401
- "junit": undefined,
2402
- },
2049
+ "reports": {},
2403
2050
  "when": "always",
2404
2051
  },
2405
2052
  "cache": [
2406
2053
  {
2407
- "key": "api-yarn",
2054
+ "key": ".-yarn",
2408
2055
  "paths": [
2409
- "api/.yarn",
2056
+ ".yarn",
2410
2057
  ],
2411
2058
  "policy": "pull-push",
2412
2059
  },
2413
2060
  {
2414
- "key": "api-node-modules",
2061
+ "key": ".-node-modules",
2415
2062
  "paths": [
2416
- "api/node_modules",
2063
+ "node_modules",
2417
2064
  ],
2418
2065
  "policy": "pull-push",
2419
2066
  },
2420
2067
  {
2421
- "key": "api-next-cache",
2068
+ "key": "myWorkspace-next-cache",
2422
2069
  "paths": [
2423
- "api/.next/cache/",
2070
+ "api/.next/cache",
2071
+ "www/.next/cache",
2424
2072
  ],
2425
2073
  "policy": "pull-push",
2426
2074
  },
@@ -2437,37 +2085,61 @@ EOF
2437
2085
  },
2438
2086
  "script": [
2439
2087
  "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2440
- "export ENV_SHORT="stage"",
2441
- "export APP_DIR="api"",
2442
- "export ENV_TYPE="stage"",
2443
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2444
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2445
- "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")"",
2446
- "export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2447
- "export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2448
- "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2449
- "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2450
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2451
- "export CLOUD_SQL_INSTANCE_CONNECTION_NAME="projectId:region:instancename"",
2452
- "export DB_NAME="pan-test-app-stage-api"",
2453
- "export DB_USER="my-user"",
2454
- "export DB_PASSWORD="$CL_stage_api_DB_PASSWORD"",
2455
- "export DATABASE_URL="postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME"",
2456
- "export DATABASE_JDBC_URL="jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD"",
2457
- "export CLOUD_RUN_JOB_TRIGGER_URL_migration="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run"",
2458
- "export CLOUD_RUN_JOB_TRIGGER_URL_send_reminders="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run"",
2459
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
2460
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
2461
- "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
2462
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
2463
- "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\\",\\"CLOUD_SQL_INSTANCE_CONNECTION_NAME\\",\\"DB_NAME\\",\\"DB_USER\\",\\"DB_PASSWORD\\",\\"DATABASE_URL\\",\\"DATABASE_JDBC_URL\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_migration\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
2464
2088
  "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2465
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
2089
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-api[collapsed=true]\\r\\e[0Kwrite dot env"",
2090
+ "cat <<EOF > api/.env
2091
+ ENV_SHORT=stage
2092
+ APP_DIR=api
2093
+ ENV_TYPE=stage
2094
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
2095
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
2096
+ 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")
2097
+ HOST=$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2098
+ ROOT_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2099
+ HOST_INTERNAL=$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2100
+ HOST_CANONICAL=$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2101
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2102
+ CLOUD_SQL_INSTANCE_CONNECTION_NAME=projectId:region:instancename
2103
+ DB_NAME=pan-test-app-stage-api
2104
+ DB_USER=my-user
2105
+ DB_PASSWORD=$CL_stage_api_DB_PASSWORD
2106
+ DATABASE_URL=postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME
2107
+ DATABASE_JDBC_URL=jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD
2108
+ CLOUD_RUN_JOB_TRIGGER_URL_migration=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run
2109
+ CLOUD_RUN_JOB_TRIGGER_URL_send_reminders=https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run
2110
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
2111
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
2112
+ GCLOUD_DEPLOY_credentialsKey=$CL_stage_api_GCLOUD_DEPLOY_credentialsKey
2113
+ GCLOUD_RUN_canonicalHostSuffix=$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix
2114
+ _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","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
2115
+ EOF",
2116
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-api\\r\\e[0K"",
2117
+ "echo -e "\\e[0Ksection_start:$(date +%s):write-dotenv-www[collapsed=true]\\r\\e[0Kwrite dot env"",
2118
+ "cat <<EOF > www/.env
2119
+ ENV_SHORT=stage
2120
+ APP_DIR=www
2121
+ ENV_TYPE=stage
2122
+ BUILD_INFO_BUILD_ID=$(git describe --tags 2>/dev/null || git rev-parse HEAD)
2123
+ BUILD_INFO_BUILD_TIME=$CI_JOB_STARTED_AT
2124
+ 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")
2125
+ HOST=$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2126
+ ROOT_URL=https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2127
+ HOST_INTERNAL=$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2128
+ HOST_CANONICAL=$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2129
+ ROOT_URL_INTERNAL=https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')
2130
+ DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
2131
+ DEPLOY_CLOUD_RUN_REGION=europe-west6
2132
+ GCLOUD_DEPLOY_credentialsKey=$CL_stage_www_GCLOUD_DEPLOY_credentialsKey
2133
+ GCLOUD_RUN_canonicalHostSuffix=$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix
2134
+ API_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql
2135
+ _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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","API_URL"]
2136
+ EOF",
2137
+ "echo -e "\\e[0Ksection_end:$(date +%s):write-dotenv-www\\r\\e[0K"",
2466
2138
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2467
2139
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2468
2140
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2469
2141
  "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2470
- "cd api",
2142
+ "cd .",
2471
2143
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2472
2144
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2473
2145
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -2484,7 +2156,7 @@ EOF
2484
2156
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
2485
2157
  },
2486
2158
  },
2487
- "api ๐Ÿ”จ docker | prod ": {
2159
+ "๐Ÿ”น api ๐Ÿ”จ docker | prod ": {
2488
2160
  "cache": [
2489
2161
  {
2490
2162
  "key": "api-yarn",
@@ -2497,7 +2169,10 @@ EOF
2497
2169
  "image": "path/to/docker/docker-build:the-version",
2498
2170
  "interruptible": true,
2499
2171
  "needs": [
2500
- "api ๐Ÿ”จ app | prod ",
2172
+ {
2173
+ "artifacts": true,
2174
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | prod ",
2175
+ },
2501
2176
  ],
2502
2177
  "retry": {
2503
2178
  "max": 2,
@@ -2555,7 +2230,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
2555
2230
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
2556
2231
  },
2557
2232
  },
2558
- "api ๐Ÿ”จ docker | stage ": {
2233
+ "๐Ÿ”น api ๐Ÿ”จ docker | stage ": {
2559
2234
  "cache": [
2560
2235
  {
2561
2236
  "key": "api-yarn",
@@ -2568,7 +2243,10 @@ COPY --chown=node:node .yarn /app/.yarn"",
2568
2243
  "image": "path/to/docker/docker-build:the-version",
2569
2244
  "interruptible": true,
2570
2245
  "needs": [
2571
- "api ๐Ÿ”จ app | stage ",
2246
+ {
2247
+ "artifacts": true,
2248
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | stage ",
2249
+ },
2572
2250
  ],
2573
2251
  "retry": {
2574
2252
  "max": 2,
@@ -2626,7 +2304,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
2626
2304
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
2627
2305
  },
2628
2306
  },
2629
- "api ๐Ÿš€ Deploy | prod ": {
2307
+ "๐Ÿ”น api ๐Ÿš€ Deploy | prod ": {
2630
2308
  "allow_failure": true,
2631
2309
  "artifacts": {
2632
2310
  "reports": {
@@ -2636,7 +2314,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
2636
2314
  "environment": {
2637
2315
  "auto_stop_in": undefined,
2638
2316
  "name": "prod/api",
2639
- "on_stop": "api ๐Ÿ›‘ Stop โš ๏ธ | prod ",
2317
+ "on_stop": "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | prod ",
2640
2318
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
2641
2319
  },
2642
2320
  "image": "path/to/docker/gcloud:the-version",
@@ -2644,15 +2322,11 @@ COPY --chown=node:node .yarn /app/.yarn"",
2644
2322
  "needs": [
2645
2323
  {
2646
2324
  "artifacts": false,
2647
- "job": "api ๐Ÿ”จ app | prod ",
2648
- },
2649
- {
2650
- "artifacts": false,
2651
- "job": "api ๐Ÿ”จ docker | prod ",
2325
+ "job": "๐Ÿ”น api ๐Ÿ”จ docker | prod ",
2652
2326
  },
2653
2327
  {
2654
2328
  "artifacts": true,
2655
- "job": "api ๐Ÿงพ sbom | prod ",
2329
+ "job": "๐Ÿ”น api ๐Ÿงพ sbom | prod ",
2656
2330
  },
2657
2331
  ],
2658
2332
  "retry": {
@@ -2792,7 +2466,7 @@ EOF
2792
2466
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
2793
2467
  },
2794
2468
  },
2795
- "api ๐Ÿš€ Deploy | stage ": {
2469
+ "๐Ÿ”น api ๐Ÿš€ Deploy | stage ": {
2796
2470
  "allow_failure": false,
2797
2471
  "artifacts": {
2798
2472
  "reports": {
@@ -2802,7 +2476,7 @@ EOF
2802
2476
  "environment": {
2803
2477
  "auto_stop_in": undefined,
2804
2478
  "name": "stage/api",
2805
- "on_stop": "api ๐Ÿ›‘ Stop โš ๏ธ | stage ",
2479
+ "on_stop": "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | stage ",
2806
2480
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
2807
2481
  },
2808
2482
  "image": "path/to/docker/gcloud:the-version",
@@ -2810,15 +2484,11 @@ EOF
2810
2484
  "needs": [
2811
2485
  {
2812
2486
  "artifacts": false,
2813
- "job": "api ๐Ÿ”จ app | stage ",
2814
- },
2815
- {
2816
- "artifacts": false,
2817
- "job": "api ๐Ÿ”จ docker | stage ",
2487
+ "job": "๐Ÿ”น api ๐Ÿ”จ docker | stage ",
2818
2488
  },
2819
2489
  {
2820
2490
  "artifacts": true,
2821
- "job": "api ๐Ÿงพ sbom | stage ",
2491
+ "job": "๐Ÿ”น api ๐Ÿงพ sbom | stage ",
2822
2492
  },
2823
2493
  ],
2824
2494
  "retry": {
@@ -2958,7 +2628,7 @@ EOF
2958
2628
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
2959
2629
  },
2960
2630
  },
2961
- "api ๐Ÿ›‘ Stop โš ๏ธ | prod ": {
2631
+ "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | prod ": {
2962
2632
  "allow_failure": true,
2963
2633
  "artifacts": {
2964
2634
  "reports": {
@@ -3016,7 +2686,7 @@ EOF
3016
2686
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3017
2687
  },
3018
2688
  },
3019
- "api ๐Ÿ›‘ Stop โš ๏ธ | stage ": {
2689
+ "๐Ÿ”น api ๐Ÿ›‘ Stop โš ๏ธ | stage ": {
3020
2690
  "allow_failure": true,
3021
2691
  "artifacts": {
3022
2692
  "reports": {
@@ -3074,7 +2744,7 @@ EOF
3074
2744
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3075
2745
  },
3076
2746
  },
3077
- "api ๐Ÿงพ sbom | prod ": {
2747
+ "๐Ÿ”น api ๐Ÿงพ sbom | prod ": {
3078
2748
  "allow_failure": true,
3079
2749
  "artifacts": {
3080
2750
  "paths": [
@@ -3099,7 +2769,7 @@ EOF
3099
2769
  "stage": "build",
3100
2770
  "variables": {},
3101
2771
  },
3102
- "api ๐Ÿงพ sbom | stage ": {
2772
+ "๐Ÿ”น api ๐Ÿงพ sbom | stage ": {
3103
2773
  "allow_failure": true,
3104
2774
  "artifacts": {
3105
2775
  "paths": [
@@ -3124,183 +2794,7 @@ EOF
3124
2794
  "stage": "build",
3125
2795
  "variables": {},
3126
2796
  },
3127
- "www ๐Ÿ”จ app | prod ": {
3128
- "artifacts": {
3129
- "expire_in": "1 day",
3130
- "paths": [
3131
- "www/__build_info.json",
3132
- "www/dist",
3133
- "www/.next",
3134
- ],
3135
- "reports": {
3136
- "junit": undefined,
3137
- },
3138
- "when": "always",
3139
- },
3140
- "cache": [
3141
- {
3142
- "key": "www-yarn",
3143
- "paths": [
3144
- "www/.yarn",
3145
- ],
3146
- "policy": "pull-push",
3147
- },
3148
- {
3149
- "key": "www-node-modules",
3150
- "paths": [
3151
- "www/node_modules",
3152
- ],
3153
- "policy": "pull-push",
3154
- },
3155
- {
3156
- "key": "www-next-cache",
3157
- "paths": [
3158
- "www/.next/cache/",
3159
- ],
3160
- "policy": "pull-push",
3161
- },
3162
- ],
3163
- "image": "path/to/docker/jobs-default:the-version",
3164
- "interruptible": true,
3165
- "needs": [],
3166
- "retry": {
3167
- "max": 2,
3168
- "when": [
3169
- "runner_system_failure",
3170
- "stuck_or_timeout_failure",
3171
- ],
3172
- },
3173
- "script": [
3174
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
3175
- "export ENV_SHORT="prod"",
3176
- "export APP_DIR="www"",
3177
- "export ENV_TYPE="prod"",
3178
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
3179
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
3180
- "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")"",
3181
- "export HOST="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3182
- "export ROOT_URL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3183
- "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3184
- "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3185
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3186
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
3187
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
3188
- "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_www_GCLOUD_DEPLOY_credentialsKey"",
3189
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix"",
3190
- "export API_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql"",
3191
- "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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"API_URL\\"]"",
3192
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
3193
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
3194
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
3195
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
3196
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
3197
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
3198
- "cd www",
3199
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
3200
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
3201
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
3202
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
3203
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
3204
- "yarn install --immutable",
3205
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
3206
- "yarn build",
3207
- ],
3208
- "stage": "build",
3209
- "variables": {
3210
- "KUBERNETES_CPU_REQUEST": "0.5",
3211
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
3212
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
3213
- },
3214
- },
3215
- "www ๐Ÿ”จ app | stage ": {
3216
- "artifacts": {
3217
- "expire_in": "1 day",
3218
- "paths": [
3219
- "www/__build_info.json",
3220
- "www/dist",
3221
- "www/.next",
3222
- ],
3223
- "reports": {
3224
- "junit": undefined,
3225
- },
3226
- "when": "always",
3227
- },
3228
- "cache": [
3229
- {
3230
- "key": "www-yarn",
3231
- "paths": [
3232
- "www/.yarn",
3233
- ],
3234
- "policy": "pull-push",
3235
- },
3236
- {
3237
- "key": "www-node-modules",
3238
- "paths": [
3239
- "www/node_modules",
3240
- ],
3241
- "policy": "pull-push",
3242
- },
3243
- {
3244
- "key": "www-next-cache",
3245
- "paths": [
3246
- "www/.next/cache/",
3247
- ],
3248
- "policy": "pull-push",
3249
- },
3250
- ],
3251
- "image": "path/to/docker/jobs-default:the-version",
3252
- "interruptible": true,
3253
- "needs": [],
3254
- "retry": {
3255
- "max": 2,
3256
- "when": [
3257
- "runner_system_failure",
3258
- "stuck_or_timeout_failure",
3259
- ],
3260
- },
3261
- "script": [
3262
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
3263
- "export ENV_SHORT="stage"",
3264
- "export APP_DIR="www"",
3265
- "export ENV_TYPE="stage"",
3266
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
3267
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
3268
- "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")"",
3269
- "export HOST="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3270
- "export ROOT_URL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3271
- "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3272
- "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3273
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
3274
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
3275
- "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
3276
- "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_www_GCLOUD_DEPLOY_credentialsKey"",
3277
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix"",
3278
- "export API_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')/graphql"",
3279
- "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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"API_URL\\"]"",
3280
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
3281
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
3282
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
3283
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
3284
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
3285
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
3286
- "cd www",
3287
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
3288
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
3289
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
3290
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
3291
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
3292
- "yarn install --immutable",
3293
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
3294
- "yarn build",
3295
- ],
3296
- "stage": "build",
3297
- "variables": {
3298
- "KUBERNETES_CPU_REQUEST": "0.5",
3299
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
3300
- "KUBERNETES_MEMORY_REQUEST": "2Gi",
3301
- },
3302
- },
3303
- "www ๐Ÿ”จ docker | prod ": {
2797
+ "๐Ÿ”น www ๐Ÿ”จ docker | prod ": {
3304
2798
  "cache": [
3305
2799
  {
3306
2800
  "key": "www-yarn",
@@ -3313,7 +2807,10 @@ EOF
3313
2807
  "image": "path/to/docker/docker-build:the-version",
3314
2808
  "interruptible": true,
3315
2809
  "needs": [
3316
- "www ๐Ÿ”จ app | prod ",
2810
+ {
2811
+ "artifacts": true,
2812
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | prod ",
2813
+ },
3317
2814
  ],
3318
2815
  "retry": {
3319
2816
  "max": 2,
@@ -3371,7 +2868,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
3371
2868
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
3372
2869
  },
3373
2870
  },
3374
- "www ๐Ÿ”จ docker | stage ": {
2871
+ "๐Ÿ”น www ๐Ÿ”จ docker | stage ": {
3375
2872
  "cache": [
3376
2873
  {
3377
2874
  "key": "www-yarn",
@@ -3384,7 +2881,10 @@ COPY --chown=node:node .yarn /app/.yarn"",
3384
2881
  "image": "path/to/docker/docker-build:the-version",
3385
2882
  "interruptible": true,
3386
2883
  "needs": [
3387
- "www ๐Ÿ”จ app | stage ",
2884
+ {
2885
+ "artifacts": true,
2886
+ "job": "๐Ÿ”ธ myWorkspace ๐Ÿ”จ app | stage ",
2887
+ },
3388
2888
  ],
3389
2889
  "retry": {
3390
2890
  "max": 2,
@@ -3442,7 +2942,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
3442
2942
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
3443
2943
  },
3444
2944
  },
3445
- "www ๐Ÿš€ Deploy | prod ": {
2945
+ "๐Ÿ”น www ๐Ÿš€ Deploy | prod ": {
3446
2946
  "allow_failure": true,
3447
2947
  "artifacts": {
3448
2948
  "reports": {
@@ -3452,7 +2952,7 @@ COPY --chown=node:node .yarn /app/.yarn"",
3452
2952
  "environment": {
3453
2953
  "auto_stop_in": undefined,
3454
2954
  "name": "prod/www",
3455
- "on_stop": "www ๐Ÿ›‘ Stop โš ๏ธ | prod ",
2955
+ "on_stop": "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | prod ",
3456
2956
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
3457
2957
  },
3458
2958
  "image": "path/to/docker/gcloud:the-version",
@@ -3460,15 +2960,11 @@ COPY --chown=node:node .yarn /app/.yarn"",
3460
2960
  "needs": [
3461
2961
  {
3462
2962
  "artifacts": false,
3463
- "job": "www ๐Ÿ”จ app | prod ",
3464
- },
3465
- {
3466
- "artifacts": false,
3467
- "job": "www ๐Ÿ”จ docker | prod ",
2963
+ "job": "๐Ÿ”น www ๐Ÿ”จ docker | prod ",
3468
2964
  },
3469
2965
  {
3470
2966
  "artifacts": true,
3471
- "job": "www ๐Ÿงพ sbom | prod ",
2967
+ "job": "๐Ÿ”น www ๐Ÿงพ sbom | prod ",
3472
2968
  },
3473
2969
  ],
3474
2970
  "retry": {
@@ -3570,7 +3066,7 @@ EOF
3570
3066
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3571
3067
  },
3572
3068
  },
3573
- "www ๐Ÿš€ Deploy | stage ": {
3069
+ "๐Ÿ”น www ๐Ÿš€ Deploy | stage ": {
3574
3070
  "allow_failure": false,
3575
3071
  "artifacts": {
3576
3072
  "reports": {
@@ -3580,7 +3076,7 @@ EOF
3580
3076
  "environment": {
3581
3077
  "auto_stop_in": undefined,
3582
3078
  "name": "stage/www",
3583
- "on_stop": "www ๐Ÿ›‘ Stop โš ๏ธ | stage ",
3079
+ "on_stop": "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | stage ",
3584
3080
  "url": "$CL_GITLAB_ENVIRONMENT_URL",
3585
3081
  },
3586
3082
  "image": "path/to/docker/gcloud:the-version",
@@ -3588,15 +3084,11 @@ EOF
3588
3084
  "needs": [
3589
3085
  {
3590
3086
  "artifacts": false,
3591
- "job": "www ๐Ÿ”จ app | stage ",
3592
- },
3593
- {
3594
- "artifacts": false,
3595
- "job": "www ๐Ÿ”จ docker | stage ",
3087
+ "job": "๐Ÿ”น www ๐Ÿ”จ docker | stage ",
3596
3088
  },
3597
3089
  {
3598
3090
  "artifacts": true,
3599
- "job": "www ๐Ÿงพ sbom | stage ",
3091
+ "job": "๐Ÿ”น www ๐Ÿงพ sbom | stage ",
3600
3092
  },
3601
3093
  ],
3602
3094
  "retry": {
@@ -3698,7 +3190,7 @@ EOF
3698
3190
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3699
3191
  },
3700
3192
  },
3701
- "www ๐Ÿ›‘ Stop โš ๏ธ | prod ": {
3193
+ "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | prod ": {
3702
3194
  "allow_failure": true,
3703
3195
  "artifacts": {
3704
3196
  "reports": {
@@ -3751,7 +3243,7 @@ EOF
3751
3243
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3752
3244
  },
3753
3245
  },
3754
- "www ๐Ÿ›‘ Stop โš ๏ธ | stage ": {
3246
+ "๐Ÿ”น www ๐Ÿ›‘ Stop โš ๏ธ | stage ": {
3755
3247
  "allow_failure": true,
3756
3248
  "artifacts": {
3757
3249
  "reports": {
@@ -3804,7 +3296,7 @@ EOF
3804
3296
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
3805
3297
  },
3806
3298
  },
3807
- "www ๐Ÿงพ sbom | prod ": {
3299
+ "๐Ÿ”น www ๐Ÿงพ sbom | prod ": {
3808
3300
  "allow_failure": true,
3809
3301
  "artifacts": {
3810
3302
  "paths": [
@@ -3829,7 +3321,7 @@ EOF
3829
3321
  "stage": "build",
3830
3322
  "variables": {},
3831
3323
  },
3832
- "www ๐Ÿงพ sbom | stage ": {
3324
+ "๐Ÿ”น www ๐Ÿงพ sbom | stage ": {
3833
3325
  "allow_failure": true,
3834
3326
  "artifacts": {
3835
3327
  "paths": [