@catladder/pipeline 1.163.1 → 1.163.2

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 (72) hide show
  1. package/dist/bundles/catladder-gitlab/index.js +1 -1
  2. package/dist/constants.js +1 -1
  3. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +0 -1958
  4. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1 -1935
  5. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1 -1959
  6. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1 -2011
  7. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1 -1959
  8. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1 -1970
  9. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1 -1959
  10. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1 -1959
  11. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1 -2003
  12. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1 -1675
  13. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1 -1959
  14. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +1 -3935
  15. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1 -3458
  16. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1 -1967
  17. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1 -1787
  18. package/examples/__snapshots__/custom-build-job.test.ts.snap +1 -1487
  19. package/examples/__snapshots__/custom-deploy.test.ts.snap +1 -1721
  20. package/examples/__snapshots__/custom-envs.test.ts.snap +1 -1175
  21. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1 -1495
  22. package/examples/__snapshots__/git-submodule.test.ts.snap +1 -1962
  23. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1 -2450
  24. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +1 -2462
  25. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1 -2470
  26. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +1 -4558
  27. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1 -2574
  28. package/examples/__snapshots__/local-dot-env.test.ts.snap +1 -1959
  29. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1 -2503
  30. package/examples/__snapshots__/multiline-var.test.ts.snap +1 -4488
  31. package/examples/__snapshots__/native-app.test.ts.snap +1 -3167
  32. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1 -1959
  33. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1 -1967
  34. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1479 -2003
  35. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1 -1995
  36. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1 -2105
  37. package/examples/cloud-run-memory-limit.test.ts +1 -8
  38. package/examples/cloud-run-meteor-with-worker.test.ts +2 -9
  39. package/examples/cloud-run-no-cpu-throttling.test.ts +2 -9
  40. package/examples/cloud-run-no-service.test.ts +2 -9
  41. package/examples/cloud-run-non-public.test.ts +2 -9
  42. package/examples/cloud-run-post-stop-job.test.ts +2 -9
  43. package/examples/cloud-run-service-gen2.test.ts +2 -9
  44. package/examples/cloud-run-service-increase-timout.test.ts +2 -9
  45. package/examples/cloud-run-service-with-volumes.test.ts +2 -9
  46. package/examples/cloud-run-storybook.test.ts +2 -9
  47. package/examples/cloud-run-with-ngnix.test.ts +2 -9
  48. package/examples/cloud-run-with-sql-reuse-db.test.ts +2 -9
  49. package/examples/cloud-run-with-sql.test.ts +2 -9
  50. package/examples/cloud-run-with-worker.test.ts +2 -9
  51. package/examples/custom-build-job-with-tests.test.ts +2 -9
  52. package/examples/custom-build-job.test.ts +2 -9
  53. package/examples/custom-deploy.test.ts +2 -9
  54. package/examples/custom-envs.test.ts +2 -9
  55. package/examples/custom-sbom-java.test.ts +2 -9
  56. package/examples/git-submodule.test.ts +2 -9
  57. package/examples/kubernetes-application-customization.test.ts +2 -9
  58. package/examples/kubernetes-with-cloud-sql-legacy.test.ts +2 -9
  59. package/examples/kubernetes-with-cloud-sql.test.ts +2 -9
  60. package/examples/kubernetes-with-jobs.test.ts +2 -9
  61. package/examples/kubernetes-with-mongodb.test.ts +2 -9
  62. package/examples/local-dot-env.test.ts +2 -9
  63. package/examples/meteor-kubernetes.test.ts +2 -9
  64. package/examples/multiline-var.test.ts +2 -9
  65. package/examples/native-app.test.ts +2 -9
  66. package/examples/node-build-with-custom-image.test.ts +2 -9
  67. package/examples/node-build-with-docker-additions.test.ts +2 -9
  68. package/examples/rails-k8s-with-worker-dockerfile.test.ts +2 -2
  69. package/examples/rails-k8s-with-worker.test.ts +2 -9
  70. package/examples/wait-for-other-deploy.test.ts +2 -9
  71. package/package.json +1 -1
  72. package/scripts/generate-examples-test.ts +3 -5
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`matches snapshot for cloud-run-memory-limit local pipeline YAML 1`] = `
3
+ exports[`matches snapshot for cloud-run-storybook local pipeline YAML 1`] = `
4
4
  "image: path/to/docker/jobs-default:the-version
5
5
  stages:
6
6
  - setup
@@ -1224,1677 +1224,3 @@ create release:
1224
1224
  needs: []
1225
1225
  "
1226
1226
  `;
1227
-
1228
- exports[`matches snapshot for cloud-run-storybook 1`] = `
1229
- {
1230
- "mainBranch": {
1231
- "image": "path/to/docker/jobs-default:the-version",
1232
- "jobs": {
1233
- "api 🔨 app | dev ": {
1234
- "artifacts": {
1235
- "expire_in": "1 day",
1236
- "paths": [
1237
- "app/__build_info.json",
1238
- "app/.next",
1239
- "app/dist",
1240
- ],
1241
- "reports": {
1242
- "junit": undefined,
1243
- },
1244
- "when": "always",
1245
- },
1246
- "cache": [
1247
- {
1248
- "key": "app-yarn",
1249
- "paths": [
1250
- "app/.yarn",
1251
- ],
1252
- "policy": "pull-push",
1253
- },
1254
- {
1255
- "key": "app-node-modules",
1256
- "paths": [
1257
- "app/node_modules",
1258
- ],
1259
- "policy": "pull-push",
1260
- },
1261
- {
1262
- "key": "api-next-cache",
1263
- "paths": [
1264
- "app/.next/cache",
1265
- ],
1266
- "policy": "pull-push",
1267
- },
1268
- ],
1269
- "image": "path/to/docker/jobs-default:the-version",
1270
- "interruptible": true,
1271
- "needs": [],
1272
- "retry": {
1273
- "max": 2,
1274
- "when": [
1275
- "runner_system_failure",
1276
- "stuck_or_timeout_failure",
1277
- ],
1278
- },
1279
- "script": [
1280
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1281
- "export ENV_SHORT="dev"",
1282
- "export APP_DIR="app"",
1283
- "export ENV_TYPE="dev"",
1284
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1285
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1286
- "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")"",
1287
- "export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1288
- "export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1289
- "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1290
- "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1291
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1292
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1293
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1294
- "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
1295
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
1296
- "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\\"]"",
1297
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1298
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
1299
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1300
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1301
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1302
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1303
- "cd app",
1304
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1305
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1306
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1307
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1308
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1309
- "yarn install --immutable",
1310
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1311
- "yarn build-storybook --quiet -o ./dist",
1312
- ],
1313
- "stage": "build",
1314
- "variables": {
1315
- "KUBERNETES_CPU_REQUEST": "0.45",
1316
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1317
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
1318
- },
1319
- },
1320
- "api 🔨 docker | dev ": {
1321
- "cache": [
1322
- {
1323
- "key": "app-yarn",
1324
- "paths": [
1325
- "app/.yarn",
1326
- ],
1327
- "policy": "pull",
1328
- },
1329
- ],
1330
- "image": "path/to/docker/docker-build:the-version",
1331
- "interruptible": true,
1332
- "needs": [
1333
- "api 🔨 app | dev ",
1334
- ],
1335
- "retry": {
1336
- "max": 2,
1337
- "when": [
1338
- "runner_system_failure",
1339
- "stuck_or_timeout_failure",
1340
- ],
1341
- },
1342
- "script": [
1343
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1344
- "export APP_DIR="app"",
1345
- "export DOCKER_BUILD_CONTEXT="."",
1346
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1347
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api"",
1348
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
1349
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1350
- "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
1351
- RUN yarn plugin import workspace-tools
1352
- RUN yarn workspaces focus --production && yarn rebuild"",
1353
- "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node app/package.json /app/app/package.json
1354
- COPY --chown=node:node app/yarn.lock /app/app/yarn.lock
1355
- COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
1356
- COPY --chown=node:node .yarn /app/.yarn"",
1357
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1358
- "ensureNginxDockerfile",
1359
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
1360
- "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
1361
- "gcloud auth configure-docker asia-east1-docker.pkg.dev",
1362
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
1363
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
1364
- "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1",
1365
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
1366
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
1367
- "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1368
- "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
1369
- "docker push $DOCKER_CACHE_IMAGE",
1370
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
1371
- ],
1372
- "services": [
1373
- {
1374
- "command": [
1375
- "--tls=false",
1376
- ],
1377
- "name": "docker:24.0.6-dind",
1378
- },
1379
- ],
1380
- "stage": "build",
1381
- "variables": {
1382
- "DOCKER_BUILDKIT": "1",
1383
- "DOCKER_DRIVER": "overlay2",
1384
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1385
- "DOCKER_TLS_CERTDIR": "",
1386
- "KUBERNETES_CPU_REQUEST": "0.45",
1387
- "KUBERNETES_MEMORY_LIMIT": "2Gi",
1388
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
1389
- },
1390
- },
1391
- "api 🚀 Deploy | dev ": {
1392
- "allow_failure": false,
1393
- "artifacts": {
1394
- "reports": {
1395
- "dotenv": "gitlab_environment.env",
1396
- },
1397
- },
1398
- "environment": {
1399
- "auto_stop_in": "4 weeks",
1400
- "name": "dev/api",
1401
- "on_stop": "api 🛑 Stop ⚠️ | dev ",
1402
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
1403
- },
1404
- "image": "path/to/docker/gcloud:the-version",
1405
- "interruptible": true,
1406
- "needs": [
1407
- {
1408
- "artifacts": false,
1409
- "job": "api 🔨 app | dev ",
1410
- },
1411
- {
1412
- "artifacts": false,
1413
- "job": "api 🔨 docker | dev ",
1414
- },
1415
- {
1416
- "artifacts": true,
1417
- "job": "api 🧾 sbom | dev ",
1418
- },
1419
- ],
1420
- "retry": {
1421
- "max": 2,
1422
- "when": [
1423
- "runner_system_failure",
1424
- "stuck_or_timeout_failure",
1425
- ],
1426
- },
1427
- "rules": [
1428
- {
1429
- "when": "on_success",
1430
- },
1431
- ],
1432
- "script": [
1433
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1434
- "export ENV_SHORT="dev"",
1435
- "export APP_DIR="app"",
1436
- "export ENV_TYPE="dev"",
1437
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1438
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1439
- "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")"",
1440
- "export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1441
- "export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1442
- "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1443
- "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1444
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1445
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1446
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1447
- "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
1448
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
1449
- "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\\"]"",
1450
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1451
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api"",
1452
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
1453
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1454
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1455
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1456
- "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1457
- "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
1458
- "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1459
- "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1460
- "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1461
- "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1462
- "cat > ____envvars.yaml <<EOF
1463
- ENV_SHORT: |-
1464
- dev
1465
- APP_DIR: |-
1466
- app
1467
- ENV_TYPE: |-
1468
- dev
1469
- BUILD_INFO_BUILD_ID: |-
1470
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1471
- BUILD_INFO_BUILD_TIME: |-
1472
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1473
- BUILD_INFO_CURRENT_VERSION: |-
1474
- $(printf %s "$(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")" | sed 's/^/ /')
1475
- HOST: |-
1476
- $(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1477
- ROOT_URL: |-
1478
- $(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1479
- HOST_INTERNAL: |-
1480
- $(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1481
- HOST_CANONICAL: |-
1482
- $(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1483
- ROOT_URL_INTERNAL: |-
1484
- $(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1485
- DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1486
- asdf
1487
- DEPLOY_CLOUD_RUN_REGION: |-
1488
- asia-east1
1489
- GCLOUD_RUN_canonicalHostSuffix: |-
1490
- $(printf %s "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1491
- _ALL_ENV_VAR_KEYS: |-
1492
- ["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"]
1493
-
1494
- EOF
1495
- ",
1496
- "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1497
- "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1498
- "gcloud run deploy pan-test-app-dev-api --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-service-name=pan-test-app-dev-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1499
- "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
1500
- "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
1501
- "gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-dev-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done",
1502
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api@$version --quiet --delete-tags; done",
1503
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
1504
- "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1505
- "echo 'Uploading SBOM to Dependency Track'",
1506
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
1507
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1508
- ],
1509
- "stage": "deploy dev",
1510
- "variables": {
1511
- "KUBERNETES_CPU_REQUEST": "0.22",
1512
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
1513
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
1514
- },
1515
- },
1516
- "api 🛑 Stop ⚠️ | dev ": {
1517
- "allow_failure": true,
1518
- "artifacts": {
1519
- "reports": {
1520
- "dotenv": "gitlab_environment.env",
1521
- },
1522
- },
1523
- "environment": {
1524
- "action": "stop",
1525
- "name": "dev/api",
1526
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
1527
- },
1528
- "image": "path/to/docker/gcloud:the-version",
1529
- "interruptible": true,
1530
- "needs": [],
1531
- "retry": {
1532
- "max": 2,
1533
- "when": [
1534
- "runner_system_failure",
1535
- "stuck_or_timeout_failure",
1536
- ],
1537
- },
1538
- "rules": [
1539
- {
1540
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1541
- "when": "on_success",
1542
- },
1543
- {
1544
- "when": "manual",
1545
- },
1546
- ],
1547
- "script": [
1548
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1549
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1550
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1551
- "set +e",
1552
- "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
1553
- "gcloud run services delete pan-test-app-dev-api --project=asdf --region=asia-east1",
1554
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/api --quiet --delete-tags",
1555
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
1556
- "echo 'Disabling component in Dependency Track'",
1557
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
1558
- "set -e",
1559
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1560
- ],
1561
- "stage": "stop dev",
1562
- "variables": {
1563
- "GIT_STRATEGY": "none",
1564
- "KUBERNETES_CPU_REQUEST": "0.22",
1565
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
1566
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
1567
- },
1568
- },
1569
- "api 🧾 sbom | dev ": {
1570
- "allow_failure": true,
1571
- "artifacts": {
1572
- "paths": [
1573
- "__sbom.json",
1574
- ],
1575
- },
1576
- "image": "aquasec/trivy:0.38.3",
1577
- "interruptible": true,
1578
- "needs": [],
1579
- "retry": {
1580
- "max": 2,
1581
- "when": [
1582
- "runner_system_failure",
1583
- "stuck_or_timeout_failure",
1584
- ],
1585
- },
1586
- "script": [
1587
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1588
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1589
- "trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
1590
- ],
1591
- "stage": "build",
1592
- "variables": {},
1593
- },
1594
- },
1595
- "stages": [
1596
- "setup",
1597
- "setup dev",
1598
- "setup review",
1599
- "setup stage",
1600
- "setup prod",
1601
- "test",
1602
- "test dev",
1603
- "test review",
1604
- "test stage",
1605
- "test prod",
1606
- "build",
1607
- "build dev",
1608
- "build review",
1609
- "build stage",
1610
- "build prod",
1611
- "deploy",
1612
- "deploy dev",
1613
- "deploy review",
1614
- "deploy stage",
1615
- "deploy prod",
1616
- "verify",
1617
- "verify dev",
1618
- "verify review",
1619
- "verify stage",
1620
- "verify prod",
1621
- "rollback",
1622
- "rollback dev",
1623
- "rollback review",
1624
- "rollback stage",
1625
- "rollback prod",
1626
- "stop",
1627
- "stop dev",
1628
- "stop review",
1629
- "stop stage",
1630
- "stop prod",
1631
- ],
1632
- "variables": {
1633
- "ARTIFACT_COMPRESSION_LEVEL": "fast",
1634
- "CACHE_COMPRESSION_LEVEL": "fast",
1635
- "FF_USE_FASTZIP": "true",
1636
- "GIT_DEPTH": "1",
1637
- "TRANSFER_METER_FREQUENCY": "5s",
1638
- },
1639
- "workflow": {
1640
- "rules": [
1641
- {
1642
- "if": "$CI_COMMIT_TAG",
1643
- },
1644
- {
1645
- "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
1646
- "when": "never",
1647
- },
1648
- {
1649
- "if": "$CI_PIPELINE_SOURCE == "schedule"",
1650
- "when": "never",
1651
- },
1652
- {
1653
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
1654
- },
1655
- {
1656
- "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
1657
- },
1658
- {
1659
- "if": "$CI_MERGE_REQUEST_ID",
1660
- },
1661
- ],
1662
- },
1663
- },
1664
- "mr": {
1665
- "image": "path/to/docker/jobs-default:the-version",
1666
- "jobs": {
1667
- "api 🔨 app | review ": {
1668
- "artifacts": {
1669
- "expire_in": "1 day",
1670
- "paths": [
1671
- "app/__build_info.json",
1672
- "app/.next",
1673
- "app/dist",
1674
- ],
1675
- "reports": {
1676
- "junit": undefined,
1677
- },
1678
- "when": "always",
1679
- },
1680
- "cache": [
1681
- {
1682
- "key": "app-yarn",
1683
- "paths": [
1684
- "app/.yarn",
1685
- ],
1686
- "policy": "pull-push",
1687
- },
1688
- {
1689
- "key": "app-node-modules",
1690
- "paths": [
1691
- "app/node_modules",
1692
- ],
1693
- "policy": "pull-push",
1694
- },
1695
- {
1696
- "key": "api-next-cache",
1697
- "paths": [
1698
- "app/.next/cache",
1699
- ],
1700
- "policy": "pull-push",
1701
- },
1702
- ],
1703
- "image": "path/to/docker/jobs-default:the-version",
1704
- "interruptible": true,
1705
- "needs": [],
1706
- "retry": {
1707
- "max": 2,
1708
- "when": [
1709
- "runner_system_failure",
1710
- "stuck_or_timeout_failure",
1711
- ],
1712
- },
1713
- "script": [
1714
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1715
- "export ENV_SHORT="review"",
1716
- "export APP_DIR="app"",
1717
- "export ENV_TYPE="review"",
1718
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1719
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1720
- "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")"",
1721
- "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)}')"",
1722
- "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)}')"",
1723
- "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)}')"",
1724
- "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)}')"",
1725
- "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)}')"",
1726
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1727
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1728
- "export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
1729
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
1730
- "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\\"]"",
1731
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1732
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
1733
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1734
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1735
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1736
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1737
- "cd app",
1738
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1739
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1740
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
1741
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
1742
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
1743
- "yarn install --immutable",
1744
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
1745
- "yarn build-storybook --quiet -o ./dist",
1746
- ],
1747
- "stage": "build",
1748
- "variables": {
1749
- "KUBERNETES_CPU_REQUEST": "0.45",
1750
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
1751
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
1752
- },
1753
- },
1754
- "api 🔨 docker | review ": {
1755
- "cache": [
1756
- {
1757
- "key": "app-yarn",
1758
- "paths": [
1759
- "app/.yarn",
1760
- ],
1761
- "policy": "pull",
1762
- },
1763
- ],
1764
- "image": "path/to/docker/docker-build:the-version",
1765
- "interruptible": true,
1766
- "needs": [
1767
- "api 🔨 app | review ",
1768
- ],
1769
- "retry": {
1770
- "max": 2,
1771
- "when": [
1772
- "runner_system_failure",
1773
- "stuck_or_timeout_failure",
1774
- ],
1775
- },
1776
- "script": [
1777
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1778
- "export APP_DIR="app"",
1779
- "export DOCKER_BUILD_CONTEXT="."",
1780
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1781
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
1782
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
1783
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1784
- "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
1785
- RUN yarn plugin import workspace-tools
1786
- RUN yarn workspaces focus --production && yarn rebuild"",
1787
- "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node app/package.json /app/app/package.json
1788
- COPY --chown=node:node app/yarn.lock /app/app/yarn.lock
1789
- COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
1790
- COPY --chown=node:node .yarn /app/.yarn"",
1791
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1792
- "ensureNginxDockerfile",
1793
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
1794
- "gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
1795
- "gcloud auth configure-docker asia-east1-docker.pkg.dev",
1796
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
1797
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
1798
- "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1",
1799
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
1800
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
1801
- "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1802
- "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
1803
- "docker push $DOCKER_CACHE_IMAGE",
1804
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
1805
- ],
1806
- "services": [
1807
- {
1808
- "command": [
1809
- "--tls=false",
1810
- ],
1811
- "name": "docker:24.0.6-dind",
1812
- },
1813
- ],
1814
- "stage": "build",
1815
- "variables": {
1816
- "DOCKER_BUILDKIT": "1",
1817
- "DOCKER_DRIVER": "overlay2",
1818
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1819
- "DOCKER_TLS_CERTDIR": "",
1820
- "KUBERNETES_CPU_REQUEST": "0.45",
1821
- "KUBERNETES_MEMORY_LIMIT": "2Gi",
1822
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
1823
- },
1824
- },
1825
- "api 🚀 Deploy | review ": {
1826
- "allow_failure": false,
1827
- "artifacts": {
1828
- "reports": {
1829
- "dotenv": "gitlab_environment.env",
1830
- },
1831
- },
1832
- "environment": {
1833
- "auto_stop_in": "1 week",
1834
- "name": "review/$CI_COMMIT_REF_NAME/api",
1835
- "on_stop": "api 🛑 Stop ⚠️ | review ",
1836
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
1837
- },
1838
- "image": "path/to/docker/gcloud:the-version",
1839
- "interruptible": true,
1840
- "needs": [
1841
- {
1842
- "artifacts": false,
1843
- "job": "api 🔨 app | review ",
1844
- },
1845
- {
1846
- "artifacts": false,
1847
- "job": "api 🔨 docker | review ",
1848
- },
1849
- {
1850
- "artifacts": true,
1851
- "job": "api 🧾 sbom | review ",
1852
- },
1853
- ],
1854
- "retry": {
1855
- "max": 2,
1856
- "when": [
1857
- "runner_system_failure",
1858
- "stuck_or_timeout_failure",
1859
- ],
1860
- },
1861
- "rules": [
1862
- {
1863
- "when": "on_success",
1864
- },
1865
- ],
1866
- "script": [
1867
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1868
- "export ENV_SHORT="review"",
1869
- "export APP_DIR="app"",
1870
- "export ENV_TYPE="review"",
1871
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1872
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1873
- "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")"",
1874
- "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)}')"",
1875
- "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)}')"",
1876
- "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)}')"",
1877
- "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)}')"",
1878
- "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)}')"",
1879
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1880
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1881
- "export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
1882
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
1883
- "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\\"]"",
1884
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1885
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
1886
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
1887
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1888
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1889
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1890
- "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1891
- "gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
1892
- "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1893
- "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1894
- "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1895
- "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1896
- "cat > ____envvars.yaml <<EOF
1897
- ENV_SHORT: |-
1898
- review
1899
- APP_DIR: |-
1900
- app
1901
- ENV_TYPE: |-
1902
- review
1903
- BUILD_INFO_BUILD_ID: |-
1904
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1905
- BUILD_INFO_BUILD_TIME: |-
1906
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1907
- BUILD_INFO_CURRENT_VERSION: |-
1908
- $(printf %s "$(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")" | sed 's/^/ /')
1909
- HOST: |-
1910
- $(printf %s "$(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)}')" | sed 's/^/ /')
1911
- ROOT_URL: |-
1912
- $(printf %s "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)}')" | sed 's/^/ /')
1913
- HOST_INTERNAL: |-
1914
- $(printf %s "$(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)}')" | sed 's/^/ /')
1915
- HOST_CANONICAL: |-
1916
- $(printf %s "$(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)}')" | sed 's/^/ /')
1917
- ROOT_URL_INTERNAL: |-
1918
- $(printf %s "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)}')" | sed 's/^/ /')
1919
- DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1920
- asdf
1921
- DEPLOY_CLOUD_RUN_REGION: |-
1922
- asia-east1
1923
- GCLOUD_RUN_canonicalHostSuffix: |-
1924
- $(printf %s "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1925
- _ALL_ENV_VAR_KEYS: |-
1926
- ["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"]
1927
-
1928
- EOF
1929
- ",
1930
- "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1931
- "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1932
- "gcloud run deploy $(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)}') --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=$(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)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1933
- "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
1934
- "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
1935
- "gcloud run revisions list --project=asdf --region=asia-east1 --service=$(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)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done",
1936
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })@$version --quiet --delete-tags; done",
1937
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
1938
- "set +e",
1939
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
1940
- "set -e",
1941
- "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1942
- "echo 'Uploading SBOM to Dependency Track'",
1943
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "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)}')" "__sbom.json" vex.json || true",
1944
- "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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1945
- ],
1946
- "stage": "deploy review",
1947
- "variables": {
1948
- "KUBERNETES_CPU_REQUEST": "0.22",
1949
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
1950
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
1951
- },
1952
- },
1953
- "api 🛑 Stop ⚠️ | review ": {
1954
- "allow_failure": true,
1955
- "artifacts": {
1956
- "reports": {
1957
- "dotenv": "gitlab_environment.env",
1958
- },
1959
- },
1960
- "environment": {
1961
- "action": "stop",
1962
- "name": "review/$CI_COMMIT_REF_NAME/api",
1963
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
1964
- },
1965
- "image": "path/to/docker/gcloud:the-version",
1966
- "interruptible": true,
1967
- "needs": [],
1968
- "retry": {
1969
- "max": 2,
1970
- "when": [
1971
- "runner_system_failure",
1972
- "stuck_or_timeout_failure",
1973
- ],
1974
- },
1975
- "rules": [
1976
- {
1977
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1978
- "when": "on_success",
1979
- },
1980
- {
1981
- "when": "manual",
1982
- },
1983
- ],
1984
- "script": [
1985
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1986
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1987
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1988
- "set +e",
1989
- "gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
1990
- "gcloud run services delete $(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)}') --project=asdf --region=asia-east1",
1991
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --quiet --delete-tags",
1992
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
1993
- "set +e",
1994
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
1995
- "set -e",
1996
- "echo 'Disabling component in Dependency Track'",
1997
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "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)}')" || true",
1998
- "set -e",
1999
- "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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2000
- ],
2001
- "stage": "stop review",
2002
- "variables": {
2003
- "GIT_STRATEGY": "none",
2004
- "KUBERNETES_CPU_REQUEST": "0.22",
2005
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2006
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2007
- },
2008
- },
2009
- "api 🧾 sbom | review ": {
2010
- "allow_failure": true,
2011
- "artifacts": {
2012
- "paths": [
2013
- "__sbom.json",
2014
- ],
2015
- },
2016
- "image": "aquasec/trivy:0.38.3",
2017
- "interruptible": true,
2018
- "needs": [],
2019
- "retry": {
2020
- "max": 2,
2021
- "when": [
2022
- "runner_system_failure",
2023
- "stuck_or_timeout_failure",
2024
- ],
2025
- },
2026
- "script": [
2027
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2028
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2029
- "trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
2030
- ],
2031
- "stage": "build",
2032
- "variables": {},
2033
- },
2034
- },
2035
- "stages": [
2036
- "setup",
2037
- "setup dev",
2038
- "setup review",
2039
- "setup stage",
2040
- "setup prod",
2041
- "test",
2042
- "test dev",
2043
- "test review",
2044
- "test stage",
2045
- "test prod",
2046
- "build",
2047
- "build dev",
2048
- "build review",
2049
- "build stage",
2050
- "build prod",
2051
- "deploy",
2052
- "deploy dev",
2053
- "deploy review",
2054
- "deploy stage",
2055
- "deploy prod",
2056
- "verify",
2057
- "verify dev",
2058
- "verify review",
2059
- "verify stage",
2060
- "verify prod",
2061
- "rollback",
2062
- "rollback dev",
2063
- "rollback review",
2064
- "rollback stage",
2065
- "rollback prod",
2066
- "stop",
2067
- "stop dev",
2068
- "stop review",
2069
- "stop stage",
2070
- "stop prod",
2071
- ],
2072
- "variables": {
2073
- "ARTIFACT_COMPRESSION_LEVEL": "fast",
2074
- "CACHE_COMPRESSION_LEVEL": "fast",
2075
- "FF_USE_FASTZIP": "true",
2076
- "GIT_DEPTH": "1",
2077
- "TRANSFER_METER_FREQUENCY": "5s",
2078
- },
2079
- "workflow": {
2080
- "rules": [
2081
- {
2082
- "if": "$CI_COMMIT_TAG",
2083
- },
2084
- {
2085
- "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
2086
- "when": "never",
2087
- },
2088
- {
2089
- "if": "$CI_PIPELINE_SOURCE == "schedule"",
2090
- "when": "never",
2091
- },
2092
- {
2093
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
2094
- },
2095
- {
2096
- "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
2097
- },
2098
- {
2099
- "if": "$CI_MERGE_REQUEST_ID",
2100
- },
2101
- ],
2102
- },
2103
- },
2104
- "taggedRelease": {
2105
- "image": "path/to/docker/jobs-default:the-version",
2106
- "jobs": {
2107
- "api 🔨 app | prod ": {
2108
- "artifacts": {
2109
- "expire_in": "1 day",
2110
- "paths": [
2111
- "app/__build_info.json",
2112
- "app/.next",
2113
- "app/dist",
2114
- ],
2115
- "reports": {
2116
- "junit": undefined,
2117
- },
2118
- "when": "always",
2119
- },
2120
- "cache": [
2121
- {
2122
- "key": "app-yarn",
2123
- "paths": [
2124
- "app/.yarn",
2125
- ],
2126
- "policy": "pull-push",
2127
- },
2128
- {
2129
- "key": "app-node-modules",
2130
- "paths": [
2131
- "app/node_modules",
2132
- ],
2133
- "policy": "pull-push",
2134
- },
2135
- {
2136
- "key": "api-next-cache",
2137
- "paths": [
2138
- "app/.next/cache",
2139
- ],
2140
- "policy": "pull-push",
2141
- },
2142
- ],
2143
- "image": "path/to/docker/jobs-default:the-version",
2144
- "interruptible": true,
2145
- "needs": [],
2146
- "retry": {
2147
- "max": 2,
2148
- "when": [
2149
- "runner_system_failure",
2150
- "stuck_or_timeout_failure",
2151
- ],
2152
- },
2153
- "script": [
2154
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2155
- "export ENV_SHORT="prod"",
2156
- "export APP_DIR="app"",
2157
- "export ENV_TYPE="prod"",
2158
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2159
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2160
- "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")"",
2161
- "export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2162
- "export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2163
- "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2164
- "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2165
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2166
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
2167
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
2168
- "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
2169
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
2170
- "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\\"]"",
2171
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2172
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
2173
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2174
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2175
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2176
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2177
- "cd app",
2178
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2179
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2180
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2181
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2182
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
2183
- "yarn install --immutable",
2184
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
2185
- "yarn build-storybook --quiet -o ./dist",
2186
- ],
2187
- "stage": "build",
2188
- "variables": {
2189
- "KUBERNETES_CPU_REQUEST": "0.45",
2190
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
2191
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
2192
- },
2193
- },
2194
- "api 🔨 app | stage ": {
2195
- "artifacts": {
2196
- "expire_in": "1 day",
2197
- "paths": [
2198
- "app/__build_info.json",
2199
- "app/.next",
2200
- "app/dist",
2201
- ],
2202
- "reports": {
2203
- "junit": undefined,
2204
- },
2205
- "when": "always",
2206
- },
2207
- "cache": [
2208
- {
2209
- "key": "app-yarn",
2210
- "paths": [
2211
- "app/.yarn",
2212
- ],
2213
- "policy": "pull-push",
2214
- },
2215
- {
2216
- "key": "app-node-modules",
2217
- "paths": [
2218
- "app/node_modules",
2219
- ],
2220
- "policy": "pull-push",
2221
- },
2222
- {
2223
- "key": "api-next-cache",
2224
- "paths": [
2225
- "app/.next/cache",
2226
- ],
2227
- "policy": "pull-push",
2228
- },
2229
- ],
2230
- "image": "path/to/docker/jobs-default:the-version",
2231
- "interruptible": true,
2232
- "needs": [],
2233
- "retry": {
2234
- "max": 2,
2235
- "when": [
2236
- "runner_system_failure",
2237
- "stuck_or_timeout_failure",
2238
- ],
2239
- },
2240
- "script": [
2241
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2242
- "export ENV_SHORT="stage"",
2243
- "export APP_DIR="app"",
2244
- "export ENV_TYPE="stage"",
2245
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2246
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2247
- "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")"",
2248
- "export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2249
- "export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2250
- "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2251
- "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2252
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2253
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
2254
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
2255
- "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
2256
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
2257
- "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\\"]"",
2258
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2259
- "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
2260
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2261
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2262
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2263
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2264
- "cd app",
2265
- "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
2266
- "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
2267
- "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
2268
- "echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
2269
- "echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
2270
- "yarn install --immutable",
2271
- "echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
2272
- "yarn build-storybook --quiet -o ./dist",
2273
- ],
2274
- "stage": "build",
2275
- "variables": {
2276
- "KUBERNETES_CPU_REQUEST": "0.45",
2277
- "KUBERNETES_MEMORY_LIMIT": "4Gi",
2278
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
2279
- },
2280
- },
2281
- "api 🔨 docker | prod ": {
2282
- "cache": [
2283
- {
2284
- "key": "app-yarn",
2285
- "paths": [
2286
- "app/.yarn",
2287
- ],
2288
- "policy": "pull",
2289
- },
2290
- ],
2291
- "image": "path/to/docker/docker-build:the-version",
2292
- "interruptible": true,
2293
- "needs": [
2294
- "api 🔨 app | prod ",
2295
- ],
2296
- "retry": {
2297
- "max": 2,
2298
- "when": [
2299
- "runner_system_failure",
2300
- "stuck_or_timeout_failure",
2301
- ],
2302
- },
2303
- "script": [
2304
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2305
- "export APP_DIR="app"",
2306
- "export DOCKER_BUILD_CONTEXT="."",
2307
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
2308
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api"",
2309
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
2310
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
2311
- "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
2312
- RUN yarn plugin import workspace-tools
2313
- RUN yarn workspaces focus --production && yarn rebuild"",
2314
- "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node app/package.json /app/app/package.json
2315
- COPY --chown=node:node app/yarn.lock /app/app/yarn.lock
2316
- COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
2317
- COPY --chown=node:node .yarn /app/.yarn"",
2318
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2319
- "ensureNginxDockerfile",
2320
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
2321
- "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
2322
- "gcloud auth configure-docker asia-east1-docker.pkg.dev",
2323
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
2324
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
2325
- "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1",
2326
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
2327
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
2328
- "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
2329
- "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
2330
- "docker push $DOCKER_CACHE_IMAGE",
2331
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
2332
- ],
2333
- "services": [
2334
- {
2335
- "command": [
2336
- "--tls=false",
2337
- ],
2338
- "name": "docker:24.0.6-dind",
2339
- },
2340
- ],
2341
- "stage": "build",
2342
- "variables": {
2343
- "DOCKER_BUILDKIT": "1",
2344
- "DOCKER_DRIVER": "overlay2",
2345
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
2346
- "DOCKER_TLS_CERTDIR": "",
2347
- "KUBERNETES_CPU_REQUEST": "0.45",
2348
- "KUBERNETES_MEMORY_LIMIT": "2Gi",
2349
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
2350
- },
2351
- },
2352
- "api 🔨 docker | stage ": {
2353
- "cache": [
2354
- {
2355
- "key": "app-yarn",
2356
- "paths": [
2357
- "app/.yarn",
2358
- ],
2359
- "policy": "pull",
2360
- },
2361
- ],
2362
- "image": "path/to/docker/docker-build:the-version",
2363
- "interruptible": true,
2364
- "needs": [
2365
- "api 🔨 app | stage ",
2366
- ],
2367
- "retry": {
2368
- "max": 2,
2369
- "when": [
2370
- "runner_system_failure",
2371
- "stuck_or_timeout_failure",
2372
- ],
2373
- },
2374
- "script": [
2375
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2376
- "export APP_DIR="app"",
2377
- "export DOCKER_BUILD_CONTEXT="."",
2378
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
2379
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api"",
2380
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
2381
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
2382
- "export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
2383
- RUN yarn plugin import workspace-tools
2384
- RUN yarn workspaces focus --production && yarn rebuild"",
2385
- "export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node app/package.json /app/app/package.json
2386
- COPY --chown=node:node app/yarn.lock /app/app/yarn.lock
2387
- COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
2388
- COPY --chown=node:node .yarn /app/.yarn"",
2389
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2390
- "ensureNginxDockerfile",
2391
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
2392
- "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
2393
- "gcloud auth configure-docker asia-east1-docker.pkg.dev",
2394
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"",
2395
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"",
2396
- "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1",
2397
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"",
2398
- "echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"",
2399
- "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
2400
- "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
2401
- "docker push $DOCKER_CACHE_IMAGE",
2402
- "echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"",
2403
- ],
2404
- "services": [
2405
- {
2406
- "command": [
2407
- "--tls=false",
2408
- ],
2409
- "name": "docker:24.0.6-dind",
2410
- },
2411
- ],
2412
- "stage": "build",
2413
- "variables": {
2414
- "DOCKER_BUILDKIT": "1",
2415
- "DOCKER_DRIVER": "overlay2",
2416
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
2417
- "DOCKER_TLS_CERTDIR": "",
2418
- "KUBERNETES_CPU_REQUEST": "0.45",
2419
- "KUBERNETES_MEMORY_LIMIT": "2Gi",
2420
- "KUBERNETES_MEMORY_REQUEST": "1Gi",
2421
- },
2422
- },
2423
- "api 🚀 Deploy | prod ": {
2424
- "allow_failure": true,
2425
- "artifacts": {
2426
- "reports": {
2427
- "dotenv": "gitlab_environment.env",
2428
- },
2429
- },
2430
- "environment": {
2431
- "auto_stop_in": undefined,
2432
- "name": "prod/api",
2433
- "on_stop": "api 🛑 Stop ⚠️ | prod ",
2434
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
2435
- },
2436
- "image": "path/to/docker/gcloud:the-version",
2437
- "interruptible": true,
2438
- "needs": [
2439
- {
2440
- "artifacts": false,
2441
- "job": "api 🔨 app | prod ",
2442
- },
2443
- {
2444
- "artifacts": false,
2445
- "job": "api 🔨 docker | prod ",
2446
- },
2447
- {
2448
- "artifacts": true,
2449
- "job": "api 🧾 sbom | prod ",
2450
- },
2451
- ],
2452
- "retry": {
2453
- "max": 2,
2454
- "when": [
2455
- "runner_system_failure",
2456
- "stuck_or_timeout_failure",
2457
- ],
2458
- },
2459
- "rules": [
2460
- {
2461
- "when": "manual",
2462
- },
2463
- ],
2464
- "script": [
2465
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2466
- "export ENV_SHORT="prod"",
2467
- "export APP_DIR="app"",
2468
- "export ENV_TYPE="prod"",
2469
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2470
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2471
- "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")"",
2472
- "export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2473
- "export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2474
- "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2475
- "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2476
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2477
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
2478
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
2479
- "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
2480
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
2481
- "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\\"]"",
2482
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
2483
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api"",
2484
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
2485
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
2486
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
2487
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2488
- "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
2489
- "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
2490
- "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
2491
- "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
2492
- "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
2493
- "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
2494
- "cat > ____envvars.yaml <<EOF
2495
- ENV_SHORT: |-
2496
- prod
2497
- APP_DIR: |-
2498
- app
2499
- ENV_TYPE: |-
2500
- prod
2501
- BUILD_INFO_BUILD_ID: |-
2502
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
2503
- BUILD_INFO_BUILD_TIME: |-
2504
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
2505
- BUILD_INFO_CURRENT_VERSION: |-
2506
- $(printf %s "$(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")" | sed 's/^/ /')
2507
- HOST: |-
2508
- $(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2509
- ROOT_URL: |-
2510
- $(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2511
- HOST_INTERNAL: |-
2512
- $(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2513
- HOST_CANONICAL: |-
2514
- $(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2515
- ROOT_URL_INTERNAL: |-
2516
- $(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2517
- DEPLOY_CLOUD_RUN_PROJECT_ID: |-
2518
- asdf
2519
- DEPLOY_CLOUD_RUN_REGION: |-
2520
- asia-east1
2521
- GCLOUD_RUN_canonicalHostSuffix: |-
2522
- $(printf %s "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
2523
- _ALL_ENV_VAR_KEYS: |-
2524
- ["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"]
2525
-
2526
- EOF
2527
- ",
2528
- "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
2529
- "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
2530
- "gcloud run deploy pan-test-app-prod-api --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-service-name=pan-test-app-prod-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
2531
- "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
2532
- "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
2533
- "gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-prod-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done",
2534
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api@$version --quiet --delete-tags; done",
2535
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
2536
- "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
2537
- "echo 'Uploading SBOM to Dependency Track'",
2538
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
2539
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2540
- ],
2541
- "stage": "deploy prod",
2542
- "variables": {
2543
- "KUBERNETES_CPU_REQUEST": "0.22",
2544
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2545
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2546
- },
2547
- },
2548
- "api 🚀 Deploy | stage ": {
2549
- "allow_failure": false,
2550
- "artifacts": {
2551
- "reports": {
2552
- "dotenv": "gitlab_environment.env",
2553
- },
2554
- },
2555
- "environment": {
2556
- "auto_stop_in": undefined,
2557
- "name": "stage/api",
2558
- "on_stop": "api 🛑 Stop ⚠️ | stage ",
2559
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
2560
- },
2561
- "image": "path/to/docker/gcloud:the-version",
2562
- "interruptible": true,
2563
- "needs": [
2564
- {
2565
- "artifacts": false,
2566
- "job": "api 🔨 app | stage ",
2567
- },
2568
- {
2569
- "artifacts": false,
2570
- "job": "api 🔨 docker | stage ",
2571
- },
2572
- {
2573
- "artifacts": true,
2574
- "job": "api 🧾 sbom | stage ",
2575
- },
2576
- ],
2577
- "retry": {
2578
- "max": 2,
2579
- "when": [
2580
- "runner_system_failure",
2581
- "stuck_or_timeout_failure",
2582
- ],
2583
- },
2584
- "rules": [
2585
- {
2586
- "when": "on_success",
2587
- },
2588
- ],
2589
- "script": [
2590
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2591
- "export ENV_SHORT="stage"",
2592
- "export APP_DIR="app"",
2593
- "export ENV_TYPE="stage"",
2594
- "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
2595
- "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
2596
- "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")"",
2597
- "export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2598
- "export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2599
- "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2600
- "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2601
- "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
2602
- "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
2603
- "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
2604
- "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
2605
- "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
2606
- "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\\"]"",
2607
- "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
2608
- "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api"",
2609
- "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api"",
2610
- "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
2611
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
2612
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2613
- "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
2614
- "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
2615
- "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
2616
- "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
2617
- "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
2618
- "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
2619
- "cat > ____envvars.yaml <<EOF
2620
- ENV_SHORT: |-
2621
- stage
2622
- APP_DIR: |-
2623
- app
2624
- ENV_TYPE: |-
2625
- stage
2626
- BUILD_INFO_BUILD_ID: |-
2627
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
2628
- BUILD_INFO_BUILD_TIME: |-
2629
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
2630
- BUILD_INFO_CURRENT_VERSION: |-
2631
- $(printf %s "$(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")" | sed 's/^/ /')
2632
- HOST: |-
2633
- $(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2634
- ROOT_URL: |-
2635
- $(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2636
- HOST_INTERNAL: |-
2637
- $(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2638
- HOST_CANONICAL: |-
2639
- $(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2640
- ROOT_URL_INTERNAL: |-
2641
- $(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
2642
- DEPLOY_CLOUD_RUN_PROJECT_ID: |-
2643
- asdf
2644
- DEPLOY_CLOUD_RUN_REGION: |-
2645
- asia-east1
2646
- GCLOUD_RUN_canonicalHostSuffix: |-
2647
- $(printf %s "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
2648
- _ALL_ENV_VAR_KEYS: |-
2649
- ["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"]
2650
-
2651
- EOF
2652
- ",
2653
- "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
2654
- "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
2655
- "gcloud run deploy pan-test-app-stage-api --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-service-name=pan-test-app-stage-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
2656
- "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
2657
- "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
2658
- "gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-stage-api --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done",
2659
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api@$version --quiet --delete-tags; done",
2660
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
2661
- "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
2662
- "echo 'Uploading SBOM to Dependency Track'",
2663
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
2664
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2665
- ],
2666
- "stage": "deploy stage",
2667
- "variables": {
2668
- "KUBERNETES_CPU_REQUEST": "0.22",
2669
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2670
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2671
- },
2672
- },
2673
- "api 🛑 Stop ⚠️ | prod ": {
2674
- "allow_failure": true,
2675
- "artifacts": {
2676
- "reports": {
2677
- "dotenv": "gitlab_environment.env",
2678
- },
2679
- },
2680
- "environment": {
2681
- "action": "stop",
2682
- "name": "prod/api",
2683
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
2684
- },
2685
- "image": "path/to/docker/gcloud:the-version",
2686
- "interruptible": true,
2687
- "needs": [],
2688
- "retry": {
2689
- "max": 2,
2690
- "when": [
2691
- "runner_system_failure",
2692
- "stuck_or_timeout_failure",
2693
- ],
2694
- },
2695
- "rules": [
2696
- {
2697
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
2698
- "when": "on_success",
2699
- },
2700
- {
2701
- "when": "manual",
2702
- },
2703
- ],
2704
- "script": [
2705
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2706
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
2707
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2708
- "set +e",
2709
- "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
2710
- "gcloud run services delete pan-test-app-prod-api --project=asdf --region=asia-east1",
2711
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/api --quiet --delete-tags",
2712
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
2713
- "echo 'Disabling component in Dependency Track'",
2714
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
2715
- "set -e",
2716
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2717
- ],
2718
- "stage": "stop prod",
2719
- "variables": {
2720
- "GIT_STRATEGY": "none",
2721
- "KUBERNETES_CPU_REQUEST": "0.22",
2722
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2723
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2724
- },
2725
- },
2726
- "api 🛑 Stop ⚠️ | stage ": {
2727
- "allow_failure": true,
2728
- "artifacts": {
2729
- "reports": {
2730
- "dotenv": "gitlab_environment.env",
2731
- },
2732
- },
2733
- "environment": {
2734
- "action": "stop",
2735
- "name": "stage/api",
2736
- "url": "$CL_GITLAB_ENVIRONMENT_URL",
2737
- },
2738
- "image": "path/to/docker/gcloud:the-version",
2739
- "interruptible": true,
2740
- "needs": [],
2741
- "retry": {
2742
- "max": 2,
2743
- "when": [
2744
- "runner_system_failure",
2745
- "stuck_or_timeout_failure",
2746
- ],
2747
- },
2748
- "rules": [
2749
- {
2750
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
2751
- "when": "on_success",
2752
- },
2753
- {
2754
- "when": "manual",
2755
- },
2756
- ],
2757
- "script": [
2758
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2759
- "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
2760
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2761
- "set +e",
2762
- "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
2763
- "gcloud run services delete pan-test-app-stage-api --project=asdf --region=asia-east1",
2764
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/api --quiet --delete-tags",
2765
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
2766
- "echo 'Disabling component in Dependency Track'",
2767
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
2768
- "set -e",
2769
- "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
2770
- ],
2771
- "stage": "stop stage",
2772
- "variables": {
2773
- "GIT_STRATEGY": "none",
2774
- "KUBERNETES_CPU_REQUEST": "0.22",
2775
- "KUBERNETES_MEMORY_LIMIT": "400Mi",
2776
- "KUBERNETES_MEMORY_REQUEST": "200Mi",
2777
- },
2778
- },
2779
- "api 🧾 sbom | prod ": {
2780
- "allow_failure": true,
2781
- "artifacts": {
2782
- "paths": [
2783
- "__sbom.json",
2784
- ],
2785
- },
2786
- "image": "aquasec/trivy:0.38.3",
2787
- "interruptible": true,
2788
- "needs": [],
2789
- "retry": {
2790
- "max": 2,
2791
- "when": [
2792
- "runner_system_failure",
2793
- "stuck_or_timeout_failure",
2794
- ],
2795
- },
2796
- "script": [
2797
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2798
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2799
- "trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
2800
- ],
2801
- "stage": "build",
2802
- "variables": {},
2803
- },
2804
- "api 🧾 sbom | stage ": {
2805
- "allow_failure": true,
2806
- "artifacts": {
2807
- "paths": [
2808
- "__sbom.json",
2809
- ],
2810
- },
2811
- "image": "aquasec/trivy:0.38.3",
2812
- "interruptible": true,
2813
- "needs": [],
2814
- "retry": {
2815
- "max": 2,
2816
- "when": [
2817
- "runner_system_failure",
2818
- "stuck_or_timeout_failure",
2819
- ],
2820
- },
2821
- "script": [
2822
- "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
2823
- "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
2824
- "trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
2825
- ],
2826
- "stage": "build",
2827
- "variables": {},
2828
- },
2829
- },
2830
- "stages": [
2831
- "setup",
2832
- "setup dev",
2833
- "setup review",
2834
- "setup stage",
2835
- "setup prod",
2836
- "test",
2837
- "test dev",
2838
- "test review",
2839
- "test stage",
2840
- "test prod",
2841
- "build",
2842
- "build dev",
2843
- "build review",
2844
- "build stage",
2845
- "build prod",
2846
- "deploy",
2847
- "deploy dev",
2848
- "deploy review",
2849
- "deploy stage",
2850
- "deploy prod",
2851
- "verify",
2852
- "verify dev",
2853
- "verify review",
2854
- "verify stage",
2855
- "verify prod",
2856
- "rollback",
2857
- "rollback dev",
2858
- "rollback review",
2859
- "rollback stage",
2860
- "rollback prod",
2861
- "stop",
2862
- "stop dev",
2863
- "stop review",
2864
- "stop stage",
2865
- "stop prod",
2866
- ],
2867
- "variables": {
2868
- "ARTIFACT_COMPRESSION_LEVEL": "fast",
2869
- "CACHE_COMPRESSION_LEVEL": "fast",
2870
- "FF_USE_FASTZIP": "true",
2871
- "GIT_DEPTH": "1",
2872
- "TRANSFER_METER_FREQUENCY": "5s",
2873
- },
2874
- "workflow": {
2875
- "rules": [
2876
- {
2877
- "if": "$CI_COMMIT_TAG",
2878
- },
2879
- {
2880
- "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
2881
- "when": "never",
2882
- },
2883
- {
2884
- "if": "$CI_PIPELINE_SOURCE == "schedule"",
2885
- "when": "never",
2886
- },
2887
- {
2888
- "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
2889
- },
2890
- {
2891
- "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
2892
- },
2893
- {
2894
- "if": "$CI_MERGE_REQUEST_ID",
2895
- },
2896
- ],
2897
- },
2898
- },
2899
- }
2900
- `;