@catladder/pipeline 3.24.0 → 3.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/build/custom/testJob.js +1 -2
  2. package/dist/build/index.js +2 -1
  3. package/dist/build/node/testJob.js +1 -2
  4. package/dist/build/rails/test.js +1 -2
  5. package/dist/constants.js +1 -1
  6. package/dist/pipeline/agent/createAgentReviewJob.js +1 -0
  7. package/dist/pipeline/agent/shared.d.ts +1 -1
  8. package/dist/pipeline/agent/shared.js +0 -1
  9. package/dist/pipeline/createMainPipeline.js +1 -0
  10. package/dist/pipeline/gitlab/cache.d.ts +9 -0
  11. package/dist/pipeline/gitlab/cache.js +47 -0
  12. package/dist/pipeline/gitlab/createGitlabJobs.js +7 -7
  13. package/dist/tsconfig.tsbuildinfo +1 -1
  14. package/dist/types/jobs.d.ts +2 -3
  15. package/examples/__snapshots__/automatic-releases.test.ts.snap +131 -21
  16. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +131 -21
  17. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +131 -21
  18. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +131 -21
  19. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +131 -21
  20. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +131 -21
  21. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +127 -21
  22. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +134 -22
  23. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +131 -21
  24. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +131 -21
  25. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +131 -21
  26. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +131 -21
  27. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +131 -21
  28. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +131 -21
  29. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +131 -21
  30. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +131 -21
  31. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +131 -21
  32. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +13 -3
  33. package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +134 -22
  34. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +131 -21
  35. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +131 -21
  36. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +131 -21
  37. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +393 -63
  38. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +262 -42
  39. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +131 -21
  40. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +131 -21
  41. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +93 -22
  42. package/examples/__snapshots__/custom-deploy.test.ts.snap +131 -21
  43. package/examples/__snapshots__/custom-envs.test.ts.snap +326 -32
  44. package/examples/__snapshots__/custom-verify-job.test.ts.snap +134 -22
  45. package/examples/__snapshots__/git-submodule.test.ts.snap +131 -21
  46. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +135 -21
  47. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +135 -21
  48. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +266 -42
  49. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +135 -21
  50. package/examples/__snapshots__/local-dot-env.test.ts.snap +135 -21
  51. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +127 -21
  52. package/examples/__snapshots__/modify-generated-files.test.ts.snap +122 -14
  53. package/examples/__snapshots__/modify-generated-yaml.test.ts.snap +122 -14
  54. package/examples/__snapshots__/multiline-var.test.ts.snap +393 -63
  55. package/examples/__snapshots__/native-app.test.ts.snap +265 -41
  56. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +131 -21
  57. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +131 -21
  58. package/examples/__snapshots__/override-secrets.test.ts.snap +131 -21
  59. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +84 -22
  60. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +84 -22
  61. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +393 -63
  62. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +256 -40
  63. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +147 -29
  64. package/examples/__snapshots__/workspace-api-www.test.ts.snap +147 -29
  65. package/package.json +1 -1
  66. package/src/build/custom/testJob.ts +0 -1
  67. package/src/build/index.ts +1 -0
  68. package/src/build/node/testJob.ts +0 -1
  69. package/src/build/rails/test.ts +0 -1
  70. package/src/pipeline/agent/createAgentReviewJob.ts +1 -0
  71. package/src/pipeline/agent/shared.ts +2 -2
  72. package/src/pipeline/createMainPipeline.ts +1 -0
  73. package/src/pipeline/gitlab/cache.ts +49 -0
  74. package/src/pipeline/gitlab/createGitlabJobs.ts +7 -9
  75. package/src/types/jobs.ts +2 -3
@@ -103,7 +103,7 @@ before_script:
103
103
  local section_title="\${1}"
104
104
  echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
105
105
  }
106
- app1 🛡 audit:
106
+ 'app1 🛡 audit | dev ':
107
107
  stage: test
108
108
  image: path/to/docker/jobs-default:the-version
109
109
  variables:
@@ -120,9 +120,6 @@ app1 🛡 audit:
120
120
  - when: never
121
121
  if: $CI_PIPELINE_SOURCE == "trigger"
122
122
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
123
- - when: never
124
- if: $CI_PIPELINE_SOURCE == "trigger"
125
- - if: $CI_MERGE_REQUEST_ID
126
123
  needs: []
127
124
  retry: &a1
128
125
  max: 2
@@ -131,7 +128,7 @@ app1 🛡 audit:
131
128
  - stuck_or_timeout_failure
132
129
  interruptible: true
133
130
  allow_failure: true
134
- app1 👮 lint:
131
+ 'app1 👮 lint | dev ':
135
132
  stage: test
136
133
  image: path/to/docker/jobs-default:the-version
137
134
  variables:
@@ -168,13 +165,10 @@ app1 👮 lint:
168
165
  - when: never
169
166
  if: $CI_PIPELINE_SOURCE == "trigger"
170
167
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
171
- - when: never
172
- if: $CI_PIPELINE_SOURCE == "trigger"
173
- - if: $CI_MERGE_REQUEST_ID
174
168
  needs: []
175
169
  retry: *a1
176
170
  interruptible: true
177
- app1 🧪 test:
171
+ 'app1 🧪 test | dev ':
178
172
  stage: test
179
173
  image: path/to/docker/jobs-testing-chrome:the-version
180
174
  variables:
@@ -211,9 +205,6 @@ app1 🧪 test:
211
205
  - when: never
212
206
  if: $CI_PIPELINE_SOURCE == "trigger"
213
207
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
214
- - when: never
215
- if: $CI_PIPELINE_SOURCE == "trigger"
216
- - if: $CI_MERGE_REQUEST_ID
217
208
  needs: []
218
209
  retry: *a1
219
210
  interruptible: true
@@ -299,6 +290,7 @@ app1 🧪 test:
299
290
  - app1/dist
300
291
  exclude:
301
292
  - app1/.env
293
+ - app1/.next/cache/**/*
302
294
  expire_in: 1 day
303
295
  when: always
304
296
  reports: {}
@@ -502,17 +494,17 @@ app1 🧪 test:
502
494
  - when: on_success
503
495
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
504
496
  needs:
505
- - job: app1 👮 lint
497
+ - job: 'app1 👮 lint | dev '
506
498
  artifacts: false
507
499
  - job: 'app1 🔨 app | dev '
508
500
  artifacts: false
509
501
  - job: 'app1 🔨 docker | dev '
510
502
  artifacts: false
511
- - job: app1 🧪 test
503
+ - job: 'app1 🧪 test | dev '
512
504
  artifacts: false
513
505
  - job: 'app1 🧾 sbom | dev '
514
506
  artifacts: true
515
- - job: app1 🛡 audit
507
+ - job: 'app1 🛡 audit | dev '
516
508
  artifacts: false
517
509
  retry: *a1
518
510
  interruptible: true
@@ -551,6 +543,115 @@ app1 🧪 test:
551
543
  retry: *a1
552
544
  interruptible: true
553
545
  allow_failure: true
546
+ 'app1 🛡 audit | review ':
547
+ stage: test
548
+ image: path/to/docker/jobs-default:the-version
549
+ variables:
550
+ KUBERNETES_CPU_REQUEST: '0.45'
551
+ KUBERNETES_MEMORY_REQUEST: 1Gi
552
+ KUBERNETES_MEMORY_LIMIT: 4Gi
553
+ script:
554
+ - collapseable_section_start "injectvars" "Injecting variables"
555
+ - export APP_PATH="app1"
556
+ - collapseable_section_end "injectvars"
557
+ - cd app1
558
+ - yarn npm audit --environment production
559
+ rules:
560
+ - when: never
561
+ if: $CI_PIPELINE_SOURCE == "trigger"
562
+ - if: $CI_MERGE_REQUEST_ID
563
+ needs: []
564
+ retry: *a1
565
+ interruptible: true
566
+ allow_failure: true
567
+ 'app1 👮 lint | review ':
568
+ stage: test
569
+ image: path/to/docker/jobs-default:the-version
570
+ variables:
571
+ KUBERNETES_CPU_REQUEST: '0.45'
572
+ KUBERNETES_MEMORY_REQUEST: 1Gi
573
+ KUBERNETES_MEMORY_LIMIT: 4Gi
574
+ script:
575
+ - collapseable_section_start "injectvars" "Injecting variables"
576
+ - export APP_PATH="app1"
577
+ - collapseable_section_end "injectvars"
578
+ - collapseable_section_start "nodeinstall" "Ensure node version"
579
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
580
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
581
+ - collapseable_section_end "nodeinstall"
582
+ - cd app1
583
+ - collapseable_section_start "nodeinstall" "Ensure node version"
584
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
585
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
586
+ - collapseable_section_end "nodeinstall"
587
+ - collapseable_section_start "yarninstall" "Yarn install"
588
+ - yarn install --immutable
589
+ - collapseable_section_end "yarninstall"
590
+ - yarn lint
591
+ cache:
592
+ - key: app1-yarn-mr$CI_MERGE_REQUEST_IID
593
+ policy: pull-push
594
+ paths:
595
+ - app1/.yarn
596
+ fallback_keys:
597
+ - app1-yarn
598
+ - key: app1-node-modules-mr$CI_MERGE_REQUEST_IID
599
+ policy: pull-push
600
+ paths:
601
+ - app1/node_modules
602
+ fallback_keys:
603
+ - app1-node-modules
604
+ rules:
605
+ - when: never
606
+ if: $CI_PIPELINE_SOURCE == "trigger"
607
+ - if: $CI_MERGE_REQUEST_ID
608
+ needs: []
609
+ retry: *a1
610
+ interruptible: true
611
+ 'app1 🧪 test | review ':
612
+ stage: test
613
+ image: path/to/docker/jobs-testing-chrome:the-version
614
+ variables:
615
+ KUBERNETES_CPU_REQUEST: '0.45'
616
+ KUBERNETES_MEMORY_REQUEST: 1Gi
617
+ KUBERNETES_MEMORY_LIMIT: 4Gi
618
+ script:
619
+ - collapseable_section_start "injectvars" "Injecting variables"
620
+ - export APP_PATH="app1"
621
+ - collapseable_section_end "injectvars"
622
+ - collapseable_section_start "nodeinstall" "Ensure node version"
623
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
624
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
625
+ - collapseable_section_end "nodeinstall"
626
+ - cd app1
627
+ - collapseable_section_start "nodeinstall" "Ensure node version"
628
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
629
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
630
+ - collapseable_section_end "nodeinstall"
631
+ - collapseable_section_start "yarninstall" "Yarn install"
632
+ - yarn install --immutable
633
+ - collapseable_section_end "yarninstall"
634
+ - yarn test
635
+ cache:
636
+ - key: app1-yarn-mr$CI_MERGE_REQUEST_IID
637
+ policy: pull-push
638
+ paths:
639
+ - app1/.yarn
640
+ fallback_keys:
641
+ - app1-yarn
642
+ - key: app1-node-modules-mr$CI_MERGE_REQUEST_IID
643
+ policy: pull-push
644
+ paths:
645
+ - app1/node_modules
646
+ fallback_keys:
647
+ - app1-node-modules
648
+ rules:
649
+ - when: never
650
+ if: $CI_PIPELINE_SOURCE == "trigger"
651
+ - if: $CI_MERGE_REQUEST_ID
652
+ needs: []
653
+ retry: *a1
654
+ interruptible: true
554
655
  'app1 🔨 app | review ':
555
656
  stage: build
556
657
  image: path/to/docker/jobs-default:the-version
@@ -618,14 +719,18 @@ app1 🧪 test:
618
719
  - collapseable_section_end "yarninstall"
619
720
  - yarn build
620
721
  cache:
621
- - key: app1-yarn
722
+ - key: app1-yarn-mr$CI_MERGE_REQUEST_IID
622
723
  policy: pull-push
623
724
  paths:
624
725
  - app1/.yarn
625
- - key: app1-node-modules
726
+ fallback_keys:
727
+ - app1-yarn
728
+ - key: app1-node-modules-mr$CI_MERGE_REQUEST_IID
626
729
  policy: pull-push
627
730
  paths:
628
731
  - app1/node_modules
732
+ fallback_keys:
733
+ - app1-node-modules
629
734
  artifacts:
630
735
  paths:
631
736
  - app1/__build_info.json
@@ -633,6 +738,7 @@ app1 🧪 test:
633
738
  - app1/dist
634
739
  exclude:
635
740
  - app1/.env
741
+ - app1/.next/cache/**/*
636
742
  expire_in: 1 day
637
743
  when: always
638
744
  reports: {}
@@ -691,10 +797,12 @@ app1 🧪 test:
691
797
  - docker push $DOCKER_CACHE_IMAGE
692
798
  - collapseable_section_end "docker-push"
693
799
  cache:
694
- - key: app1-yarn
800
+ - key: app1-yarn-mr$CI_MERGE_REQUEST_IID
695
801
  policy: pull
696
802
  paths:
697
803
  - app1/.yarn
804
+ fallback_keys:
805
+ - app1-yarn
698
806
  rules:
699
807
  - when: never
700
808
  if: $CI_PIPELINE_SOURCE == "trigger"
@@ -839,17 +947,17 @@ app1 🧪 test:
839
947
  - when: on_success
840
948
  if: $CI_MERGE_REQUEST_ID
841
949
  needs:
842
- - job: app1 👮 lint
950
+ - job: 'app1 👮 lint | review '
843
951
  artifacts: false
844
952
  - job: 'app1 🔨 app | review '
845
953
  artifacts: false
846
954
  - job: 'app1 🔨 docker | review '
847
955
  artifacts: false
848
- - job: app1 🧪 test
956
+ - job: 'app1 🧪 test | review '
849
957
  artifacts: false
850
958
  - job: 'app1 🧾 sbom | review '
851
959
  artifacts: true
852
- - job: app1 🛡 audit
960
+ - job: 'app1 🛡 audit | review '
853
961
  artifacts: false
854
962
  retry: *a1
855
963
  interruptible: true
@@ -973,6 +1081,7 @@ app1 🧪 test:
973
1081
  - app1/dist
974
1082
  exclude:
975
1083
  - app1/.env
1084
+ - app1/.next/cache/**/*
976
1085
  expire_in: 1 day
977
1086
  when: always
978
1087
  reports: {}
@@ -1300,6 +1409,7 @@ app1 🧪 test:
1300
1409
  - app1/dist
1301
1410
  exclude:
1302
1411
  - app1/.env
1412
+ - app1/.next/cache/**/*
1303
1413
  expire_in: 1 day
1304
1414
  when: always
1305
1415
  reports: {}
@@ -1545,7 +1655,7 @@ app1 🧪 test:
1545
1655
  retry: *a1
1546
1656
  interruptible: true
1547
1657
  allow_failure: true
1548
- app2 🛡 audit:
1658
+ 'app2 🛡 audit | dev ':
1549
1659
  stage: test
1550
1660
  image: path/to/docker/jobs-default:the-version
1551
1661
  variables:
@@ -1562,14 +1672,11 @@ app2 🛡 audit:
1562
1672
  - when: never
1563
1673
  if: $CI_PIPELINE_SOURCE == "trigger"
1564
1674
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
1565
- - when: never
1566
- if: $CI_PIPELINE_SOURCE == "trigger"
1567
- - if: $CI_MERGE_REQUEST_ID
1568
1675
  needs: []
1569
1676
  retry: *a1
1570
1677
  interruptible: true
1571
1678
  allow_failure: true
1572
- app2 👮 lint:
1679
+ 'app2 👮 lint | dev ':
1573
1680
  stage: test
1574
1681
  image: path/to/docker/jobs-default:the-version
1575
1682
  variables:
@@ -1606,13 +1713,10 @@ app2 👮 lint:
1606
1713
  - when: never
1607
1714
  if: $CI_PIPELINE_SOURCE == "trigger"
1608
1715
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
1609
- - when: never
1610
- if: $CI_PIPELINE_SOURCE == "trigger"
1611
- - if: $CI_MERGE_REQUEST_ID
1612
1716
  needs: []
1613
1717
  retry: *a1
1614
1718
  interruptible: true
1615
- app2 🧪 test:
1719
+ 'app2 🧪 test | dev ':
1616
1720
  stage: test
1617
1721
  image: path/to/docker/jobs-testing-chrome:the-version
1618
1722
  variables:
@@ -1649,9 +1753,6 @@ app2 🧪 test:
1649
1753
  - when: never
1650
1754
  if: $CI_PIPELINE_SOURCE == "trigger"
1651
1755
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
1652
- - when: never
1653
- if: $CI_PIPELINE_SOURCE == "trigger"
1654
- - if: $CI_MERGE_REQUEST_ID
1655
1756
  needs: []
1656
1757
  retry: *a1
1657
1758
  interruptible: true
@@ -1741,6 +1842,7 @@ app2 🧪 test:
1741
1842
  - app2/dist
1742
1843
  exclude:
1743
1844
  - app2/.env
1845
+ - app2/.next/cache/**/*
1744
1846
  expire_in: 1 day
1745
1847
  when: always
1746
1848
  reports: {}
@@ -1950,17 +2052,17 @@ app2 🧪 test:
1950
2052
  - when: on_success
1951
2053
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
1952
2054
  needs:
1953
- - job: app2 👮 lint
2055
+ - job: 'app2 👮 lint | dev '
1954
2056
  artifacts: false
1955
2057
  - job: 'app2 🔨 app | dev '
1956
2058
  artifacts: false
1957
2059
  - job: 'app2 🔨 docker | dev '
1958
2060
  artifacts: false
1959
- - job: app2 🧪 test
2061
+ - job: 'app2 🧪 test | dev '
1960
2062
  artifacts: false
1961
2063
  - job: 'app2 🧾 sbom | dev '
1962
2064
  artifacts: true
1963
- - job: app2 🛡 audit
2065
+ - job: 'app2 🛡 audit | dev '
1964
2066
  artifacts: false
1965
2067
  retry: *a1
1966
2068
  interruptible: true
@@ -1999,6 +2101,115 @@ app2 🧪 test:
1999
2101
  retry: *a1
2000
2102
  interruptible: true
2001
2103
  allow_failure: true
2104
+ 'app2 🛡 audit | review ':
2105
+ stage: test
2106
+ image: path/to/docker/jobs-default:the-version
2107
+ variables:
2108
+ KUBERNETES_CPU_REQUEST: '0.45'
2109
+ KUBERNETES_MEMORY_REQUEST: 1Gi
2110
+ KUBERNETES_MEMORY_LIMIT: 4Gi
2111
+ script:
2112
+ - collapseable_section_start "injectvars" "Injecting variables"
2113
+ - export APP_PATH="app2"
2114
+ - collapseable_section_end "injectvars"
2115
+ - cd app2
2116
+ - yarn npm audit --environment production
2117
+ rules:
2118
+ - when: never
2119
+ if: $CI_PIPELINE_SOURCE == "trigger"
2120
+ - if: $CI_MERGE_REQUEST_ID
2121
+ needs: []
2122
+ retry: *a1
2123
+ interruptible: true
2124
+ allow_failure: true
2125
+ 'app2 👮 lint | review ':
2126
+ stage: test
2127
+ image: path/to/docker/jobs-default:the-version
2128
+ variables:
2129
+ KUBERNETES_CPU_REQUEST: '0.45'
2130
+ KUBERNETES_MEMORY_REQUEST: 1Gi
2131
+ KUBERNETES_MEMORY_LIMIT: 4Gi
2132
+ script:
2133
+ - collapseable_section_start "injectvars" "Injecting variables"
2134
+ - export APP_PATH="app2"
2135
+ - collapseable_section_end "injectvars"
2136
+ - collapseable_section_start "nodeinstall" "Ensure node version"
2137
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
2138
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
2139
+ - collapseable_section_end "nodeinstall"
2140
+ - cd app2
2141
+ - collapseable_section_start "nodeinstall" "Ensure node version"
2142
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
2143
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
2144
+ - collapseable_section_end "nodeinstall"
2145
+ - collapseable_section_start "yarninstall" "Yarn install"
2146
+ - yarn install --immutable
2147
+ - collapseable_section_end "yarninstall"
2148
+ - yarn lint
2149
+ cache:
2150
+ - key: app2-yarn-mr$CI_MERGE_REQUEST_IID
2151
+ policy: pull-push
2152
+ paths:
2153
+ - app2/.yarn
2154
+ fallback_keys:
2155
+ - app2-yarn
2156
+ - key: app2-node-modules-mr$CI_MERGE_REQUEST_IID
2157
+ policy: pull-push
2158
+ paths:
2159
+ - app2/node_modules
2160
+ fallback_keys:
2161
+ - app2-node-modules
2162
+ rules:
2163
+ - when: never
2164
+ if: $CI_PIPELINE_SOURCE == "trigger"
2165
+ - if: $CI_MERGE_REQUEST_ID
2166
+ needs: []
2167
+ retry: *a1
2168
+ interruptible: true
2169
+ 'app2 🧪 test | review ':
2170
+ stage: test
2171
+ image: path/to/docker/jobs-testing-chrome:the-version
2172
+ variables:
2173
+ KUBERNETES_CPU_REQUEST: '0.45'
2174
+ KUBERNETES_MEMORY_REQUEST: 1Gi
2175
+ KUBERNETES_MEMORY_LIMIT: 4Gi
2176
+ script:
2177
+ - collapseable_section_start "injectvars" "Injecting variables"
2178
+ - export APP_PATH="app2"
2179
+ - collapseable_section_end "injectvars"
2180
+ - collapseable_section_start "nodeinstall" "Ensure node version"
2181
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
2182
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
2183
+ - collapseable_section_end "nodeinstall"
2184
+ - cd app2
2185
+ - collapseable_section_start "nodeinstall" "Ensure node version"
2186
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
2187
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
2188
+ - collapseable_section_end "nodeinstall"
2189
+ - collapseable_section_start "yarninstall" "Yarn install"
2190
+ - yarn install --immutable
2191
+ - collapseable_section_end "yarninstall"
2192
+ - yarn test
2193
+ cache:
2194
+ - key: app2-yarn-mr$CI_MERGE_REQUEST_IID
2195
+ policy: pull-push
2196
+ paths:
2197
+ - app2/.yarn
2198
+ fallback_keys:
2199
+ - app2-yarn
2200
+ - key: app2-node-modules-mr$CI_MERGE_REQUEST_IID
2201
+ policy: pull-push
2202
+ paths:
2203
+ - app2/node_modules
2204
+ fallback_keys:
2205
+ - app2-node-modules
2206
+ rules:
2207
+ - when: never
2208
+ if: $CI_PIPELINE_SOURCE == "trigger"
2209
+ - if: $CI_MERGE_REQUEST_ID
2210
+ needs: []
2211
+ retry: *a1
2212
+ interruptible: true
2002
2213
  'app2 🔨 app | review ':
2003
2214
  stage: build
2004
2215
  image: path/to/docker/jobs-default:the-version
@@ -2070,14 +2281,18 @@ app2 🧪 test:
2070
2281
  - collapseable_section_end "yarninstall"
2071
2282
  - yarn build
2072
2283
  cache:
2073
- - key: app2-yarn
2284
+ - key: app2-yarn-mr$CI_MERGE_REQUEST_IID
2074
2285
  policy: pull-push
2075
2286
  paths:
2076
2287
  - app2/.yarn
2077
- - key: app2-node-modules
2288
+ fallback_keys:
2289
+ - app2-yarn
2290
+ - key: app2-node-modules-mr$CI_MERGE_REQUEST_IID
2078
2291
  policy: pull-push
2079
2292
  paths:
2080
2293
  - app2/node_modules
2294
+ fallback_keys:
2295
+ - app2-node-modules
2081
2296
  artifacts:
2082
2297
  paths:
2083
2298
  - app2/__build_info.json
@@ -2085,6 +2300,7 @@ app2 🧪 test:
2085
2300
  - app2/dist
2086
2301
  exclude:
2087
2302
  - app2/.env
2303
+ - app2/.next/cache/**/*
2088
2304
  expire_in: 1 day
2089
2305
  when: always
2090
2306
  reports: {}
@@ -2143,10 +2359,12 @@ app2 🧪 test:
2143
2359
  - docker push $DOCKER_CACHE_IMAGE
2144
2360
  - collapseable_section_end "docker-push"
2145
2361
  cache:
2146
- - key: app2-yarn
2362
+ - key: app2-yarn-mr$CI_MERGE_REQUEST_IID
2147
2363
  policy: pull
2148
2364
  paths:
2149
2365
  - app2/.yarn
2366
+ fallback_keys:
2367
+ - app2-yarn
2150
2368
  rules:
2151
2369
  - when: never
2152
2370
  if: $CI_PIPELINE_SOURCE == "trigger"
@@ -2297,17 +2515,17 @@ app2 🧪 test:
2297
2515
  - when: on_success
2298
2516
  if: $CI_MERGE_REQUEST_ID
2299
2517
  needs:
2300
- - job: app2 👮 lint
2518
+ - job: 'app2 👮 lint | review '
2301
2519
  artifacts: false
2302
2520
  - job: 'app2 🔨 app | review '
2303
2521
  artifacts: false
2304
2522
  - job: 'app2 🔨 docker | review '
2305
2523
  artifacts: false
2306
- - job: app2 🧪 test
2524
+ - job: 'app2 🧪 test | review '
2307
2525
  artifacts: false
2308
2526
  - job: 'app2 🧾 sbom | review '
2309
2527
  artifacts: true
2310
- - job: app2 🛡 audit
2528
+ - job: 'app2 🛡 audit | review '
2311
2529
  artifacts: false
2312
2530
  retry: *a1
2313
2531
  interruptible: true
@@ -2435,6 +2653,7 @@ app2 🧪 test:
2435
2653
  - app2/dist
2436
2654
  exclude:
2437
2655
  - app2/.env
2656
+ - app2/.next/cache/**/*
2438
2657
  expire_in: 1 day
2439
2658
  when: always
2440
2659
  reports: {}
@@ -2772,6 +2991,7 @@ app2 🧪 test:
2772
2991
  - app2/dist
2773
2992
  exclude:
2774
2993
  - app2/.env
2994
+ - app2/.next/cache/**/*
2775
2995
  expire_in: 1 day
2776
2996
  when: always
2777
2997
  reports: {}
@@ -3023,7 +3243,7 @@ app2 🧪 test:
3023
3243
  retry: *a1
3024
3244
  interruptible: true
3025
3245
  allow_failure: true
3026
- app3 🛡 audit:
3246
+ 'app3 🛡 audit | dev ':
3027
3247
  stage: test
3028
3248
  image: path/to/docker/jobs-default:the-version
3029
3249
  variables:
@@ -3040,14 +3260,11 @@ app3 🛡 audit:
3040
3260
  - when: never
3041
3261
  if: $CI_PIPELINE_SOURCE == "trigger"
3042
3262
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
3043
- - when: never
3044
- if: $CI_PIPELINE_SOURCE == "trigger"
3045
- - if: $CI_MERGE_REQUEST_ID
3046
3263
  needs: []
3047
3264
  retry: *a1
3048
3265
  interruptible: true
3049
3266
  allow_failure: true
3050
- app3 👮 lint:
3267
+ 'app3 👮 lint | dev ':
3051
3268
  stage: test
3052
3269
  image: path/to/docker/jobs-default:the-version
3053
3270
  variables:
@@ -3084,13 +3301,10 @@ app3 👮 lint:
3084
3301
  - when: never
3085
3302
  if: $CI_PIPELINE_SOURCE == "trigger"
3086
3303
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
3087
- - when: never
3088
- if: $CI_PIPELINE_SOURCE == "trigger"
3089
- - if: $CI_MERGE_REQUEST_ID
3090
3304
  needs: []
3091
3305
  retry: *a1
3092
3306
  interruptible: true
3093
- app3 🧪 test:
3307
+ 'app3 🧪 test | dev ':
3094
3308
  stage: test
3095
3309
  image: path/to/docker/jobs-testing-chrome:the-version
3096
3310
  variables:
@@ -3127,9 +3341,6 @@ app3 🧪 test:
3127
3341
  - when: never
3128
3342
  if: $CI_PIPELINE_SOURCE == "trigger"
3129
3343
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
3130
- - when: never
3131
- if: $CI_PIPELINE_SOURCE == "trigger"
3132
- - if: $CI_MERGE_REQUEST_ID
3133
3344
  needs: []
3134
3345
  retry: *a1
3135
3346
  interruptible: true
@@ -3213,6 +3424,7 @@ app3 🧪 test:
3213
3424
  - kube/dist
3214
3425
  exclude:
3215
3426
  - kube/.env
3427
+ - kube/.next/cache/**/*
3216
3428
  expire_in: 1 day
3217
3429
  when: always
3218
3430
  reports: {}
@@ -3432,17 +3644,17 @@ app3 🧪 test:
3432
3644
  - when: on_success
3433
3645
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
3434
3646
  needs:
3435
- - job: app3 👮 lint
3647
+ - job: 'app3 👮 lint | dev '
3436
3648
  artifacts: false
3437
3649
  - job: 'app3 🔨 app | dev '
3438
3650
  artifacts: false
3439
3651
  - job: 'app3 🔨 docker | dev '
3440
3652
  artifacts: false
3441
- - job: app3 🧪 test
3653
+ - job: 'app3 🧪 test | dev '
3442
3654
  artifacts: false
3443
3655
  - job: 'app3 🧾 sbom | dev '
3444
3656
  artifacts: true
3445
- - job: app3 🛡 audit
3657
+ - job: 'app3 🛡 audit | dev '
3446
3658
  artifacts: false
3447
3659
  retry: *a1
3448
3660
  interruptible: true
@@ -3557,6 +3769,115 @@ app3 🧪 test:
3557
3769
  retry: *a1
3558
3770
  interruptible: true
3559
3771
  allow_failure: true
3772
+ 'app3 🛡 audit | review ':
3773
+ stage: test
3774
+ image: path/to/docker/jobs-default:the-version
3775
+ variables:
3776
+ KUBERNETES_CPU_REQUEST: '0.45'
3777
+ KUBERNETES_MEMORY_REQUEST: 1Gi
3778
+ KUBERNETES_MEMORY_LIMIT: 4Gi
3779
+ script:
3780
+ - collapseable_section_start "injectvars" "Injecting variables"
3781
+ - export APP_PATH="kube"
3782
+ - collapseable_section_end "injectvars"
3783
+ - cd kube
3784
+ - yarn npm audit --environment production
3785
+ rules:
3786
+ - when: never
3787
+ if: $CI_PIPELINE_SOURCE == "trigger"
3788
+ - if: $CI_MERGE_REQUEST_ID
3789
+ needs: []
3790
+ retry: *a1
3791
+ interruptible: true
3792
+ allow_failure: true
3793
+ 'app3 👮 lint | review ':
3794
+ stage: test
3795
+ image: path/to/docker/jobs-default:the-version
3796
+ variables:
3797
+ KUBERNETES_CPU_REQUEST: '0.45'
3798
+ KUBERNETES_MEMORY_REQUEST: 1Gi
3799
+ KUBERNETES_MEMORY_LIMIT: 4Gi
3800
+ script:
3801
+ - collapseable_section_start "injectvars" "Injecting variables"
3802
+ - export APP_PATH="kube"
3803
+ - collapseable_section_end "injectvars"
3804
+ - collapseable_section_start "nodeinstall" "Ensure node version"
3805
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
3806
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
3807
+ - collapseable_section_end "nodeinstall"
3808
+ - cd kube
3809
+ - collapseable_section_start "nodeinstall" "Ensure node version"
3810
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
3811
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
3812
+ - collapseable_section_end "nodeinstall"
3813
+ - collapseable_section_start "yarninstall" "Yarn install"
3814
+ - yarn install --immutable
3815
+ - collapseable_section_end "yarninstall"
3816
+ - yarn lint
3817
+ cache:
3818
+ - key: kube-yarn-mr$CI_MERGE_REQUEST_IID
3819
+ policy: pull-push
3820
+ paths:
3821
+ - kube/.yarn
3822
+ fallback_keys:
3823
+ - kube-yarn
3824
+ - key: kube-node-modules-mr$CI_MERGE_REQUEST_IID
3825
+ policy: pull-push
3826
+ paths:
3827
+ - kube/node_modules
3828
+ fallback_keys:
3829
+ - kube-node-modules
3830
+ rules:
3831
+ - when: never
3832
+ if: $CI_PIPELINE_SOURCE == "trigger"
3833
+ - if: $CI_MERGE_REQUEST_ID
3834
+ needs: []
3835
+ retry: *a1
3836
+ interruptible: true
3837
+ 'app3 🧪 test | review ':
3838
+ stage: test
3839
+ image: path/to/docker/jobs-testing-chrome:the-version
3840
+ variables:
3841
+ KUBERNETES_CPU_REQUEST: '0.45'
3842
+ KUBERNETES_MEMORY_REQUEST: 1Gi
3843
+ KUBERNETES_MEMORY_LIMIT: 4Gi
3844
+ script:
3845
+ - collapseable_section_start "injectvars" "Injecting variables"
3846
+ - export APP_PATH="kube"
3847
+ - collapseable_section_end "injectvars"
3848
+ - collapseable_section_start "nodeinstall" "Ensure node version"
3849
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
3850
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
3851
+ - collapseable_section_end "nodeinstall"
3852
+ - cd kube
3853
+ - collapseable_section_start "nodeinstall" "Ensure node version"
3854
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
3855
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
3856
+ - collapseable_section_end "nodeinstall"
3857
+ - collapseable_section_start "yarninstall" "Yarn install"
3858
+ - yarn install --immutable
3859
+ - collapseable_section_end "yarninstall"
3860
+ - yarn test
3861
+ cache:
3862
+ - key: kube-yarn-mr$CI_MERGE_REQUEST_IID
3863
+ policy: pull-push
3864
+ paths:
3865
+ - kube/.yarn
3866
+ fallback_keys:
3867
+ - kube-yarn
3868
+ - key: kube-node-modules-mr$CI_MERGE_REQUEST_IID
3869
+ policy: pull-push
3870
+ paths:
3871
+ - kube/node_modules
3872
+ fallback_keys:
3873
+ - kube-node-modules
3874
+ rules:
3875
+ - when: never
3876
+ if: $CI_PIPELINE_SOURCE == "trigger"
3877
+ - if: $CI_MERGE_REQUEST_ID
3878
+ needs: []
3879
+ retry: *a1
3880
+ interruptible: true
3560
3881
  'app3 🔨 app | review ':
3561
3882
  stage: build
3562
3883
  image: path/to/docker/jobs-default:the-version
@@ -3622,14 +3943,18 @@ app3 🧪 test:
3622
3943
  - collapseable_section_end "yarninstall"
3623
3944
  - yarn build
3624
3945
  cache:
3625
- - key: kube-yarn
3946
+ - key: kube-yarn-mr$CI_MERGE_REQUEST_IID
3626
3947
  policy: pull-push
3627
3948
  paths:
3628
3949
  - kube/.yarn
3629
- - key: kube-node-modules
3950
+ fallback_keys:
3951
+ - kube-yarn
3952
+ - key: kube-node-modules-mr$CI_MERGE_REQUEST_IID
3630
3953
  policy: pull-push
3631
3954
  paths:
3632
3955
  - kube/node_modules
3956
+ fallback_keys:
3957
+ - kube-node-modules
3633
3958
  artifacts:
3634
3959
  paths:
3635
3960
  - kube/__build_info.json
@@ -3637,6 +3962,7 @@ app3 🧪 test:
3637
3962
  - kube/dist
3638
3963
  exclude:
3639
3964
  - kube/.env
3965
+ - kube/.next/cache/**/*
3640
3966
  expire_in: 1 day
3641
3967
  when: always
3642
3968
  reports: {}
@@ -3695,10 +4021,12 @@ app3 🧪 test:
3695
4021
  - docker push $DOCKER_CACHE_IMAGE
3696
4022
  - collapseable_section_end "docker-push"
3697
4023
  cache:
3698
- - key: kube-yarn
4024
+ - key: kube-yarn-mr$CI_MERGE_REQUEST_IID
3699
4025
  policy: pull
3700
4026
  paths:
3701
4027
  - kube/.yarn
4028
+ fallback_keys:
4029
+ - kube-yarn
3702
4030
  rules:
3703
4031
  - when: never
3704
4032
  if: $CI_PIPELINE_SOURCE == "trigger"
@@ -3857,17 +4185,17 @@ app3 🧪 test:
3857
4185
  - when: on_success
3858
4186
  if: $CI_MERGE_REQUEST_ID
3859
4187
  needs:
3860
- - job: app3 👮 lint
4188
+ - job: 'app3 👮 lint | review '
3861
4189
  artifacts: false
3862
4190
  - job: 'app3 🔨 app | review '
3863
4191
  artifacts: false
3864
4192
  - job: 'app3 🔨 docker | review '
3865
4193
  artifacts: false
3866
- - job: app3 🧪 test
4194
+ - job: 'app3 🧪 test | review '
3867
4195
  artifacts: false
3868
4196
  - job: 'app3 🧾 sbom | review '
3869
4197
  artifacts: true
3870
- - job: app3 🛡 audit
4198
+ - job: 'app3 🛡 audit | review '
3871
4199
  artifacts: false
3872
4200
  retry: *a1
3873
4201
  interruptible: true
@@ -4062,6 +4390,7 @@ app3 🧪 test:
4062
4390
  - kube/dist
4063
4391
  exclude:
4064
4392
  - kube/.env
4393
+ - kube/.next/cache/**/*
4065
4394
  expire_in: 1 day
4066
4395
  when: always
4067
4396
  reports: {}
@@ -4479,6 +4808,7 @@ app3 🧪 test:
4479
4808
  - kube/dist
4480
4809
  exclude:
4481
4810
  - kube/.env
4811
+ - kube/.next/cache/**/*
4482
4812
  expire_in: 1 day
4483
4813
  when: always
4484
4814
  reports: {}