@catladder/pipeline 3.25.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 (73) hide show
  1. package/dist/build/custom/testJob.js +1 -2
  2. package/dist/build/node/testJob.js +1 -2
  3. package/dist/build/rails/test.js +1 -2
  4. package/dist/constants.js +1 -1
  5. package/dist/pipeline/agent/createAgentReviewJob.js +1 -0
  6. package/dist/pipeline/agent/shared.d.ts +1 -1
  7. package/dist/pipeline/agent/shared.js +0 -1
  8. package/dist/pipeline/createMainPipeline.js +1 -0
  9. package/dist/pipeline/gitlab/cache.d.ts +9 -0
  10. package/dist/pipeline/gitlab/cache.js +47 -0
  11. package/dist/pipeline/gitlab/createGitlabJobs.js +7 -7
  12. package/dist/tsconfig.tsbuildinfo +1 -1
  13. package/dist/types/jobs.d.ts +2 -3
  14. package/examples/__snapshots__/automatic-releases.test.ts.snap +127 -21
  15. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +127 -21
  16. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +127 -21
  17. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +127 -21
  18. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +127 -21
  19. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +127 -21
  20. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +127 -21
  21. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +130 -22
  22. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +127 -21
  23. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +127 -21
  24. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +127 -21
  25. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +127 -21
  26. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +127 -21
  27. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +127 -21
  28. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +127 -21
  29. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +127 -21
  30. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +127 -21
  31. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +9 -3
  32. package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +130 -22
  33. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +127 -21
  34. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +127 -21
  35. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +127 -21
  36. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +381 -63
  37. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +254 -42
  38. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +127 -21
  39. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +127 -21
  40. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +93 -22
  41. package/examples/__snapshots__/custom-deploy.test.ts.snap +127 -21
  42. package/examples/__snapshots__/custom-envs.test.ts.snap +320 -32
  43. package/examples/__snapshots__/custom-verify-job.test.ts.snap +130 -22
  44. package/examples/__snapshots__/git-submodule.test.ts.snap +127 -21
  45. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +127 -21
  46. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +127 -21
  47. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +254 -42
  48. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +127 -21
  49. package/examples/__snapshots__/local-dot-env.test.ts.snap +127 -21
  50. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +127 -21
  51. package/examples/__snapshots__/modify-generated-files.test.ts.snap +118 -14
  52. package/examples/__snapshots__/modify-generated-yaml.test.ts.snap +118 -14
  53. package/examples/__snapshots__/multiline-var.test.ts.snap +381 -63
  54. package/examples/__snapshots__/native-app.test.ts.snap +257 -41
  55. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +127 -21
  56. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +127 -21
  57. package/examples/__snapshots__/override-secrets.test.ts.snap +127 -21
  58. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +84 -22
  59. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +84 -22
  60. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +381 -63
  61. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +248 -40
  62. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +139 -29
  63. package/examples/__snapshots__/workspace-api-www.test.ts.snap +139 -29
  64. package/package.json +1 -1
  65. package/src/build/custom/testJob.ts +0 -1
  66. package/src/build/node/testJob.ts +0 -1
  67. package/src/build/rails/test.ts +0 -1
  68. package/src/pipeline/agent/createAgentReviewJob.ts +1 -0
  69. package/src/pipeline/agent/shared.ts +2 -2
  70. package/src/pipeline/createMainPipeline.ts +1 -0
  71. package/src/pipeline/gitlab/cache.ts +49 -0
  72. package/src/pipeline/gitlab/createGitlabJobs.ts +7 -9
  73. 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
- my-app ๐Ÿ›ก audit:
106
+ 'my-app ๐Ÿ›ก audit | dev ':
107
107
  stage: test
108
108
  image: path/to/docker/jobs-default:the-version
109
109
  variables:
@@ -120,9 +120,6 @@ my-app ๐Ÿ›ก 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 @@ my-app ๐Ÿ›ก audit:
131
128
  - stuck_or_timeout_failure
132
129
  interruptible: true
133
130
  allow_failure: true
134
- my-app ๐Ÿ‘ฎ lint:
131
+ 'my-app ๐Ÿ‘ฎ lint | dev ':
135
132
  stage: test
136
133
  image: path/to/docker/jobs-default:the-version
137
134
  variables:
@@ -168,13 +165,10 @@ my-app ๐Ÿ‘ฎ 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
- my-app ๐Ÿงช test:
171
+ 'my-app ๐Ÿงช test | dev ':
178
172
  stage: test
179
173
  image: path/to/docker/jobs-testing-chrome:the-version
180
174
  variables:
@@ -211,9 +205,6 @@ my-app ๐Ÿงช 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
@@ -483,17 +474,17 @@ my-app ๐Ÿงช test:
483
474
  - when: on_success
484
475
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
485
476
  needs:
486
- - job: my-app ๐Ÿ‘ฎ lint
477
+ - job: 'my-app ๐Ÿ‘ฎ lint | dev '
487
478
  artifacts: false
488
479
  - job: 'my-app ๐Ÿ”จ app | dev '
489
480
  artifacts: false
490
481
  - job: 'my-app ๐Ÿ”จ docker | dev '
491
482
  artifacts: false
492
- - job: my-app ๐Ÿงช test
483
+ - job: 'my-app ๐Ÿงช test | dev '
493
484
  artifacts: false
494
485
  - job: 'my-app ๐Ÿงพ sbom | dev '
495
486
  artifacts: true
496
- - job: my-app ๐Ÿ›ก audit
487
+ - job: 'my-app ๐Ÿ›ก audit | dev '
497
488
  artifacts: false
498
489
  retry: *a1
499
490
  interruptible: true
@@ -532,6 +523,115 @@ my-app ๐Ÿงช test:
532
523
  retry: *a1
533
524
  interruptible: true
534
525
  allow_failure: true
526
+ 'my-app ๐Ÿ›ก audit | review ':
527
+ stage: test
528
+ image: path/to/docker/jobs-default:the-version
529
+ variables:
530
+ KUBERNETES_CPU_REQUEST: '0.45'
531
+ KUBERNETES_MEMORY_REQUEST: 1Gi
532
+ KUBERNETES_MEMORY_LIMIT: 4Gi
533
+ script:
534
+ - collapseable_section_start "injectvars" "Injecting variables"
535
+ - export APP_PATH="app"
536
+ - collapseable_section_end "injectvars"
537
+ - cd app
538
+ - yarn npm audit --environment production
539
+ rules:
540
+ - when: never
541
+ if: $CI_PIPELINE_SOURCE == "trigger"
542
+ - if: $CI_MERGE_REQUEST_ID
543
+ needs: []
544
+ retry: *a1
545
+ interruptible: true
546
+ allow_failure: true
547
+ 'my-app ๐Ÿ‘ฎ lint | review ':
548
+ stage: test
549
+ image: path/to/docker/jobs-default:the-version
550
+ variables:
551
+ KUBERNETES_CPU_REQUEST: '0.45'
552
+ KUBERNETES_MEMORY_REQUEST: 1Gi
553
+ KUBERNETES_MEMORY_LIMIT: 4Gi
554
+ script:
555
+ - collapseable_section_start "injectvars" "Injecting variables"
556
+ - export APP_PATH="app"
557
+ - collapseable_section_end "injectvars"
558
+ - collapseable_section_start "nodeinstall" "Ensure node version"
559
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
560
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
561
+ - collapseable_section_end "nodeinstall"
562
+ - cd app
563
+ - collapseable_section_start "nodeinstall" "Ensure node version"
564
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
565
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
566
+ - collapseable_section_end "nodeinstall"
567
+ - collapseable_section_start "yarninstall" "Yarn install"
568
+ - yarn install --immutable
569
+ - collapseable_section_end "yarninstall"
570
+ - yarn lint
571
+ cache:
572
+ - key: app-yarn-mr$CI_MERGE_REQUEST_IID
573
+ policy: pull-push
574
+ paths:
575
+ - app/.yarn
576
+ fallback_keys:
577
+ - app-yarn
578
+ - key: app-node-modules-mr$CI_MERGE_REQUEST_IID
579
+ policy: pull-push
580
+ paths:
581
+ - app/node_modules
582
+ fallback_keys:
583
+ - app-node-modules
584
+ rules:
585
+ - when: never
586
+ if: $CI_PIPELINE_SOURCE == "trigger"
587
+ - if: $CI_MERGE_REQUEST_ID
588
+ needs: []
589
+ retry: *a1
590
+ interruptible: true
591
+ 'my-app ๐Ÿงช test | review ':
592
+ stage: test
593
+ image: path/to/docker/jobs-testing-chrome:the-version
594
+ variables:
595
+ KUBERNETES_CPU_REQUEST: '0.45'
596
+ KUBERNETES_MEMORY_REQUEST: 1Gi
597
+ KUBERNETES_MEMORY_LIMIT: 4Gi
598
+ script:
599
+ - collapseable_section_start "injectvars" "Injecting variables"
600
+ - export APP_PATH="app"
601
+ - collapseable_section_end "injectvars"
602
+ - collapseable_section_start "nodeinstall" "Ensure node version"
603
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
604
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
605
+ - collapseable_section_end "nodeinstall"
606
+ - cd app
607
+ - collapseable_section_start "nodeinstall" "Ensure node version"
608
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
609
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
610
+ - collapseable_section_end "nodeinstall"
611
+ - collapseable_section_start "yarninstall" "Yarn install"
612
+ - yarn install --immutable
613
+ - collapseable_section_end "yarninstall"
614
+ - yarn test
615
+ cache:
616
+ - key: app-yarn-mr$CI_MERGE_REQUEST_IID
617
+ policy: pull-push
618
+ paths:
619
+ - app/.yarn
620
+ fallback_keys:
621
+ - app-yarn
622
+ - key: app-node-modules-mr$CI_MERGE_REQUEST_IID
623
+ policy: pull-push
624
+ paths:
625
+ - app/node_modules
626
+ fallback_keys:
627
+ - app-node-modules
628
+ rules:
629
+ - when: never
630
+ if: $CI_PIPELINE_SOURCE == "trigger"
631
+ - if: $CI_MERGE_REQUEST_ID
632
+ needs: []
633
+ retry: *a1
634
+ interruptible: true
535
635
  'my-app ๐Ÿ”จ app | review ':
536
636
  stage: build
537
637
  image: path/to/docker/jobs-default:the-version
@@ -593,14 +693,18 @@ my-app ๐Ÿงช test:
593
693
  - collapseable_section_end "yarninstall"
594
694
  - yarn build
595
695
  cache:
596
- - key: app-yarn
696
+ - key: app-yarn-mr$CI_MERGE_REQUEST_IID
597
697
  policy: pull-push
598
698
  paths:
599
699
  - app/.yarn
600
- - key: app-node-modules
700
+ fallback_keys:
701
+ - app-yarn
702
+ - key: app-node-modules-mr$CI_MERGE_REQUEST_IID
601
703
  policy: pull-push
602
704
  paths:
603
705
  - app/node_modules
706
+ fallback_keys:
707
+ - app-node-modules
604
708
  artifacts:
605
709
  paths:
606
710
  - app/__build_info.json
@@ -667,10 +771,12 @@ my-app ๐Ÿงช test:
667
771
  - docker push $DOCKER_CACHE_IMAGE
668
772
  - collapseable_section_end "docker-push"
669
773
  cache:
670
- - key: app-yarn
774
+ - key: app-yarn-mr$CI_MERGE_REQUEST_IID
671
775
  policy: pull
672
776
  paths:
673
777
  - app/.yarn
778
+ fallback_keys:
779
+ - app-yarn
674
780
  rules:
675
781
  - when: never
676
782
  if: $CI_PIPELINE_SOURCE == "trigger"
@@ -806,17 +912,17 @@ my-app ๐Ÿงช test:
806
912
  - when: on_success
807
913
  if: $CI_MERGE_REQUEST_ID
808
914
  needs:
809
- - job: my-app ๐Ÿ‘ฎ lint
915
+ - job: 'my-app ๐Ÿ‘ฎ lint | review '
810
916
  artifacts: false
811
917
  - job: 'my-app ๐Ÿ”จ app | review '
812
918
  artifacts: false
813
919
  - job: 'my-app ๐Ÿ”จ docker | review '
814
920
  artifacts: false
815
- - job: my-app ๐Ÿงช test
921
+ - job: 'my-app ๐Ÿงช test | review '
816
922
  artifacts: false
817
923
  - job: 'my-app ๐Ÿงพ sbom | review '
818
924
  artifacts: true
819
- - job: my-app ๐Ÿ›ก audit
925
+ - job: 'my-app ๐Ÿ›ก audit | review '
820
926
  artifacts: false
821
927
  retry: *a1
822
928
  interruptible: true
@@ -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
- app ๐Ÿ›ก audit:
106
+ 'app ๐Ÿ›ก audit | dev ':
107
107
  stage: test
108
108
  image: ruby:3.2.1
109
109
  variables: {}
@@ -117,9 +117,6 @@ app ๐Ÿ›ก audit:
117
117
  - when: never
118
118
  if: $CI_PIPELINE_SOURCE == "trigger"
119
119
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
120
- - when: never
121
- if: $CI_PIPELINE_SOURCE == "trigger"
122
- - if: $CI_MERGE_REQUEST_ID
123
120
  needs: []
124
121
  retry: &a1
125
122
  max: 2
@@ -128,7 +125,7 @@ app ๐Ÿ›ก audit:
128
125
  - stuck_or_timeout_failure
129
126
  interruptible: true
130
127
  allow_failure: true
131
- app ๐Ÿ‘ฎ lint:
128
+ 'app ๐Ÿ‘ฎ lint | dev ':
132
129
  stage: test
133
130
  image: ruby:3.2.1
134
131
  variables: {}
@@ -150,13 +147,10 @@ app ๐Ÿ‘ฎ lint:
150
147
  - when: never
151
148
  if: $CI_PIPELINE_SOURCE == "trigger"
152
149
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
153
- - when: never
154
- if: $CI_PIPELINE_SOURCE == "trigger"
155
- - if: $CI_MERGE_REQUEST_ID
156
150
  needs: []
157
151
  retry: *a1
158
152
  interruptible: true
159
- app ๐Ÿงช test:
153
+ 'app ๐Ÿงช test | dev ':
160
154
  stage: test
161
155
  image: ruby:3.2.1
162
156
  services:
@@ -181,9 +175,6 @@ app ๐Ÿงช test:
181
175
  - when: never
182
176
  if: $CI_PIPELINE_SOURCE == "trigger"
183
177
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
184
- - when: never
185
- if: $CI_PIPELINE_SOURCE == "trigger"
186
- - if: $CI_MERGE_REQUEST_ID
187
178
  needs: []
188
179
  retry: *a1
189
180
  interruptible: true
@@ -398,15 +389,15 @@ app ๐Ÿงช test:
398
389
  - when: on_success
399
390
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
400
391
  needs:
401
- - job: app ๐Ÿ‘ฎ lint
392
+ - job: 'app ๐Ÿ‘ฎ lint | dev '
402
393
  artifacts: false
403
394
  - job: 'app ๐Ÿ”จ docker | dev '
404
395
  artifacts: false
405
- - job: app ๐Ÿงช test
396
+ - job: 'app ๐Ÿงช test | dev '
406
397
  artifacts: false
407
398
  - job: 'app ๐Ÿงพ sbom | dev '
408
399
  artifacts: true
409
- - job: app ๐Ÿ›ก audit
400
+ - job: 'app ๐Ÿ›ก audit | dev '
410
401
  artifacts: false
411
402
  retry: *a1
412
403
  interruptible: true
@@ -519,6 +510,77 @@ app ๐Ÿงช test:
519
510
  retry: *a1
520
511
  interruptible: true
521
512
  allow_failure: true
513
+ 'app ๐Ÿ›ก audit | review ':
514
+ stage: test
515
+ image: ruby:3.2.1
516
+ variables: {}
517
+ script:
518
+ - collapseable_section_start "injectvars" "Injecting variables"
519
+ - collapseable_section_end "injectvars"
520
+ - cd .temp-with-dockerfile
521
+ - gem install bundler-audit
522
+ - bundle audit check
523
+ rules:
524
+ - when: never
525
+ if: $CI_PIPELINE_SOURCE == "trigger"
526
+ - if: $CI_MERGE_REQUEST_ID
527
+ needs: []
528
+ retry: *a1
529
+ interruptible: true
530
+ allow_failure: true
531
+ 'app ๐Ÿ‘ฎ lint | review ':
532
+ stage: test
533
+ image: ruby:3.2.1
534
+ variables: {}
535
+ script:
536
+ - collapseable_section_start "injectvars" "Injecting variables"
537
+ - collapseable_section_end "injectvars"
538
+ - cd .temp-with-dockerfile
539
+ - bundle config set path 'tmp/cache'
540
+ - bundle install -j $(nproc)
541
+ - bundle exec rubocop
542
+ cache: &a3
543
+ key:
544
+ files:
545
+ - Gemfile.lock
546
+ prefix: $CI_JOB_IMAGE
547
+ paths:
548
+ - tmp/cache
549
+ rules:
550
+ - when: never
551
+ if: $CI_PIPELINE_SOURCE == "trigger"
552
+ - if: $CI_MERGE_REQUEST_ID
553
+ needs: []
554
+ retry: *a1
555
+ interruptible: true
556
+ 'app ๐Ÿงช test | review ':
557
+ stage: test
558
+ image: ruby:3.2.1
559
+ services:
560
+ - name: docker.io/postgres:latest
561
+ alias: database
562
+ variables:
563
+ POSTGRES_HOST_AUTH_METHOD: trust
564
+ variables:
565
+ RAILS_ENV: test
566
+ DATABASE_URL: postgresql://postgres@database
567
+ script:
568
+ - collapseable_section_start "injectvars" "Injecting variables"
569
+ - collapseable_section_end "injectvars"
570
+ - cd .temp-with-dockerfile
571
+ - bundle config set path 'tmp/cache'
572
+ - bundle install -j $(nproc)
573
+ - bundle exec rake db:test:prepare
574
+ - bundle exec rake assets:precompile assets:clean
575
+ - bundle exec rspec
576
+ cache: *a3
577
+ rules:
578
+ - when: never
579
+ if: $CI_PIPELINE_SOURCE == "trigger"
580
+ - if: $CI_MERGE_REQUEST_ID
581
+ needs: []
582
+ retry: *a1
583
+ interruptible: true
522
584
  'app ๐Ÿ”จ docker | review ':
523
585
  stage: build
524
586
  image: path/to/docker/docker-build:the-version
@@ -736,15 +798,15 @@ app ๐Ÿงช test:
736
798
  - when: on_success
737
799
  if: $CI_MERGE_REQUEST_ID
738
800
  needs:
739
- - job: app ๐Ÿ‘ฎ lint
801
+ - job: 'app ๐Ÿ‘ฎ lint | review '
740
802
  artifacts: false
741
803
  - job: 'app ๐Ÿ”จ docker | review '
742
804
  artifacts: false
743
- - job: app ๐Ÿงช test
805
+ - job: 'app ๐Ÿงช test | review '
744
806
  artifacts: false
745
807
  - job: 'app ๐Ÿงพ sbom | review '
746
808
  artifacts: true
747
- - job: app ๐Ÿ›ก audit
809
+ - job: 'app ๐Ÿ›ก audit | review '
748
810
  artifacts: false
749
811
  retry: *a1
750
812
  interruptible: true
@@ -1514,13 +1576,13 @@ create release:
1514
1576
  - semanticRelease
1515
1577
  - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1516
1578
  rules:
1517
- - &a3
1579
+ - &a4
1518
1580
  if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
1519
1581
  when: never
1520
- - &a4
1582
+ - &a5
1521
1583
  if: $CI_PIPELINE_SOURCE == "trigger"
1522
1584
  when: never
1523
- - &a5
1585
+ - &a6
1524
1586
  if: $CI_PIPELINE_SOURCE == "schedule"
1525
1587
  when: never
1526
1588
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
@@ -1534,9 +1596,9 @@ create release:
1534
1596
  - semanticRelease
1535
1597
  - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1536
1598
  rules:
1537
- - *a3
1538
1599
  - *a4
1539
1600
  - *a5
1601
+ - *a6
1540
1602
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1541
1603
  when: manual
1542
1604
  - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
@@ -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
- app ๐Ÿ›ก audit:
106
+ 'app ๐Ÿ›ก audit | dev ':
107
107
  stage: test
108
108
  image: ruby:3.2.1
109
109
  variables: {}
@@ -117,9 +117,6 @@ app ๐Ÿ›ก audit:
117
117
  - when: never
118
118
  if: $CI_PIPELINE_SOURCE == "trigger"
119
119
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
120
- - when: never
121
- if: $CI_PIPELINE_SOURCE == "trigger"
122
- - if: $CI_MERGE_REQUEST_ID
123
120
  needs: []
124
121
  retry: &a1
125
122
  max: 2
@@ -128,7 +125,7 @@ app ๐Ÿ›ก audit:
128
125
  - stuck_or_timeout_failure
129
126
  interruptible: true
130
127
  allow_failure: true
131
- app ๐Ÿ‘ฎ lint:
128
+ 'app ๐Ÿ‘ฎ lint | dev ':
132
129
  stage: test
133
130
  image: ruby:3.2.1
134
131
  variables: {}
@@ -150,13 +147,10 @@ app ๐Ÿ‘ฎ lint:
150
147
  - when: never
151
148
  if: $CI_PIPELINE_SOURCE == "trigger"
152
149
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
153
- - when: never
154
- if: $CI_PIPELINE_SOURCE == "trigger"
155
- - if: $CI_MERGE_REQUEST_ID
156
150
  needs: []
157
151
  retry: *a1
158
152
  interruptible: true
159
- app ๐Ÿงช test:
153
+ 'app ๐Ÿงช test | dev ':
160
154
  stage: test
161
155
  image: ruby:3.2.1
162
156
  services:
@@ -181,9 +175,6 @@ app ๐Ÿงช test:
181
175
  - when: never
182
176
  if: $CI_PIPELINE_SOURCE == "trigger"
183
177
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
184
- - when: never
185
- if: $CI_PIPELINE_SOURCE == "trigger"
186
- - if: $CI_MERGE_REQUEST_ID
187
178
  needs: []
188
179
  retry: *a1
189
180
  interruptible: true
@@ -393,15 +384,15 @@ app ๐Ÿงช test:
393
384
  - when: on_success
394
385
  if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
395
386
  needs:
396
- - job: app ๐Ÿ‘ฎ lint
387
+ - job: 'app ๐Ÿ‘ฎ lint | dev '
397
388
  artifacts: false
398
389
  - job: 'app ๐Ÿ”จ docker | dev '
399
390
  artifacts: false
400
- - job: app ๐Ÿงช test
391
+ - job: 'app ๐Ÿงช test | dev '
401
392
  artifacts: false
402
393
  - job: 'app ๐Ÿงพ sbom | dev '
403
394
  artifacts: true
404
- - job: app ๐Ÿ›ก audit
395
+ - job: 'app ๐Ÿ›ก audit | dev '
405
396
  artifacts: false
406
397
  retry: *a1
407
398
  interruptible: true
@@ -514,6 +505,77 @@ app ๐Ÿงช test:
514
505
  retry: *a1
515
506
  interruptible: true
516
507
  allow_failure: true
508
+ 'app ๐Ÿ›ก audit | review ':
509
+ stage: test
510
+ image: ruby:3.2.1
511
+ variables: {}
512
+ script:
513
+ - collapseable_section_start "injectvars" "Injecting variables"
514
+ - collapseable_section_end "injectvars"
515
+ - cd .
516
+ - gem install bundler-audit
517
+ - bundle audit check
518
+ rules:
519
+ - when: never
520
+ if: $CI_PIPELINE_SOURCE == "trigger"
521
+ - if: $CI_MERGE_REQUEST_ID
522
+ needs: []
523
+ retry: *a1
524
+ interruptible: true
525
+ allow_failure: true
526
+ 'app ๐Ÿ‘ฎ lint | review ':
527
+ stage: test
528
+ image: ruby:3.2.1
529
+ variables: {}
530
+ script:
531
+ - collapseable_section_start "injectvars" "Injecting variables"
532
+ - collapseable_section_end "injectvars"
533
+ - cd .
534
+ - bundle config set path 'tmp/cache'
535
+ - bundle install -j $(nproc)
536
+ - bundle exec rubocop
537
+ cache: &a3
538
+ key:
539
+ files:
540
+ - Gemfile.lock
541
+ prefix: $CI_JOB_IMAGE
542
+ paths:
543
+ - tmp/cache
544
+ rules:
545
+ - when: never
546
+ if: $CI_PIPELINE_SOURCE == "trigger"
547
+ - if: $CI_MERGE_REQUEST_ID
548
+ needs: []
549
+ retry: *a1
550
+ interruptible: true
551
+ 'app ๐Ÿงช test | review ':
552
+ stage: test
553
+ image: ruby:3.2.1
554
+ services:
555
+ - name: docker.io/postgres:latest
556
+ alias: database
557
+ variables:
558
+ POSTGRES_HOST_AUTH_METHOD: trust
559
+ variables:
560
+ RAILS_ENV: test
561
+ DATABASE_URL: postgresql://postgres@database
562
+ script:
563
+ - collapseable_section_start "injectvars" "Injecting variables"
564
+ - collapseable_section_end "injectvars"
565
+ - cd .
566
+ - bundle config set path 'tmp/cache'
567
+ - bundle install -j $(nproc)
568
+ - bundle exec rake db:test:prepare
569
+ - bundle exec rake assets:precompile assets:clean
570
+ - bundle exec rspec
571
+ cache: *a3
572
+ rules:
573
+ - when: never
574
+ if: $CI_PIPELINE_SOURCE == "trigger"
575
+ - if: $CI_MERGE_REQUEST_ID
576
+ needs: []
577
+ retry: *a1
578
+ interruptible: true
517
579
  'app ๐Ÿ”จ docker | review ':
518
580
  stage: build
519
581
  image: path/to/docker/docker-build:the-version
@@ -726,15 +788,15 @@ app ๐Ÿงช test:
726
788
  - when: on_success
727
789
  if: $CI_MERGE_REQUEST_ID
728
790
  needs:
729
- - job: app ๐Ÿ‘ฎ lint
791
+ - job: 'app ๐Ÿ‘ฎ lint | review '
730
792
  artifacts: false
731
793
  - job: 'app ๐Ÿ”จ docker | review '
732
794
  artifacts: false
733
- - job: app ๐Ÿงช test
795
+ - job: 'app ๐Ÿงช test | review '
734
796
  artifacts: false
735
797
  - job: 'app ๐Ÿงพ sbom | review '
736
798
  artifacts: true
737
- - job: app ๐Ÿ›ก audit
799
+ - job: 'app ๐Ÿ›ก audit | review '
738
800
  artifacts: false
739
801
  retry: *a1
740
802
  interruptible: true
@@ -1494,13 +1556,13 @@ create release:
1494
1556
  - semanticRelease
1495
1557
  - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1496
1558
  rules:
1497
- - &a3
1559
+ - &a4
1498
1560
  if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
1499
1561
  when: never
1500
- - &a4
1562
+ - &a5
1501
1563
  if: $CI_PIPELINE_SOURCE == "trigger"
1502
1564
  when: never
1503
- - &a5
1565
+ - &a6
1504
1566
  if: $CI_PIPELINE_SOURCE == "schedule"
1505
1567
  when: never
1506
1568
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
@@ -1514,9 +1576,9 @@ create release:
1514
1576
  - semanticRelease
1515
1577
  - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1516
1578
  rules:
1517
- - *a3
1518
1579
  - *a4
1519
1580
  - *a5
1581
+ - *a6
1520
1582
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1521
1583
  when: manual
1522
1584
  - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/