@catladder/pipeline 1.80.2 → 1.80.3
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.
|
@@ -450,91 +450,19 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
450
450
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
451
451
|
},
|
|
452
452
|
},
|
|
453
|
-
|
|
454
|
-
"stages": [
|
|
455
|
-
"setup",
|
|
456
|
-
"setup dev",
|
|
457
|
-
"setup review",
|
|
458
|
-
"setup stage",
|
|
459
|
-
"setup prod",
|
|
460
|
-
"setup local",
|
|
461
|
-
"test",
|
|
462
|
-
"test dev",
|
|
463
|
-
"test review",
|
|
464
|
-
"test stage",
|
|
465
|
-
"test prod",
|
|
466
|
-
"test local",
|
|
467
|
-
"build",
|
|
468
|
-
"build dev",
|
|
469
|
-
"build review",
|
|
470
|
-
"build stage",
|
|
471
|
-
"build prod",
|
|
472
|
-
"build local",
|
|
473
|
-
"deploy",
|
|
474
|
-
"deploy dev",
|
|
475
|
-
"deploy review",
|
|
476
|
-
"deploy stage",
|
|
477
|
-
"deploy prod",
|
|
478
|
-
"deploy local",
|
|
479
|
-
"verify",
|
|
480
|
-
"verify dev",
|
|
481
|
-
"verify review",
|
|
482
|
-
"verify stage",
|
|
483
|
-
"verify prod",
|
|
484
|
-
"verify local",
|
|
485
|
-
"rollback",
|
|
486
|
-
"rollback dev",
|
|
487
|
-
"rollback review",
|
|
488
|
-
"rollback stage",
|
|
489
|
-
"rollback prod",
|
|
490
|
-
"rollback local",
|
|
491
|
-
"stop",
|
|
492
|
-
"stop dev",
|
|
493
|
-
"stop review",
|
|
494
|
-
"stop stage",
|
|
495
|
-
"stop prod",
|
|
496
|
-
"stop local",
|
|
497
|
-
],
|
|
498
|
-
"variables": {
|
|
499
|
-
"FF_USE_FASTZIP": "true",
|
|
500
|
-
},
|
|
501
|
-
"workflow": {
|
|
502
|
-
"rules": [
|
|
503
|
-
{
|
|
504
|
-
"if": "$CI_COMMIT_TAG",
|
|
505
|
-
},
|
|
506
|
-
{
|
|
507
|
-
"if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
508
|
-
"when": "never",
|
|
509
|
-
},
|
|
510
|
-
{
|
|
511
|
-
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
515
|
-
},
|
|
516
|
-
{
|
|
517
|
-
"if": "$CI_MERGE_REQUEST_ID",
|
|
518
|
-
},
|
|
519
|
-
],
|
|
520
|
-
},
|
|
521
|
-
},
|
|
522
|
-
"mr": {
|
|
523
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
524
|
-
"jobs": {
|
|
525
|
-
"api 👮 lint": {
|
|
453
|
+
"www 👮 lint": {
|
|
526
454
|
"cache": [
|
|
527
455
|
{
|
|
528
|
-
"key": "
|
|
456
|
+
"key": "www-yarn",
|
|
529
457
|
"paths": [
|
|
530
|
-
"
|
|
458
|
+
"www/.yarn",
|
|
531
459
|
],
|
|
532
460
|
"policy": "pull-push",
|
|
533
461
|
},
|
|
534
462
|
{
|
|
535
|
-
"key": "
|
|
463
|
+
"key": "www-node-modules",
|
|
536
464
|
"paths": [
|
|
537
|
-
"
|
|
465
|
+
"www/node_modules",
|
|
538
466
|
],
|
|
539
467
|
"policy": "pull-push",
|
|
540
468
|
},
|
|
@@ -550,26 +478,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
550
478
|
],
|
|
551
479
|
},
|
|
552
480
|
"script": [
|
|
553
|
-
"cd
|
|
481
|
+
"cd www",
|
|
554
482
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
555
483
|
"yarn install --immutable",
|
|
556
484
|
"yarn lint",
|
|
557
485
|
],
|
|
558
486
|
"stage": "test",
|
|
559
487
|
"variables": {
|
|
560
|
-
"APP_PATH": "
|
|
488
|
+
"APP_PATH": "www",
|
|
561
489
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
562
490
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
563
491
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
564
492
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
565
493
|
},
|
|
566
494
|
},
|
|
567
|
-
"
|
|
495
|
+
"www 🔨 app | dev ": {
|
|
568
496
|
"artifacts": {
|
|
569
497
|
"paths": [
|
|
570
|
-
"
|
|
571
|
-
"
|
|
572
|
-
"
|
|
498
|
+
"www/__build_info.json",
|
|
499
|
+
"www/dist",
|
|
500
|
+
"www/.next",
|
|
573
501
|
],
|
|
574
502
|
"reports": {
|
|
575
503
|
"junit": undefined,
|
|
@@ -577,23 +505,23 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
577
505
|
},
|
|
578
506
|
"cache": [
|
|
579
507
|
{
|
|
580
|
-
"key": "
|
|
508
|
+
"key": "www-yarn",
|
|
581
509
|
"paths": [
|
|
582
|
-
"
|
|
510
|
+
"www/.yarn",
|
|
583
511
|
],
|
|
584
512
|
"policy": "pull-push",
|
|
585
513
|
},
|
|
586
514
|
{
|
|
587
|
-
"key": "
|
|
515
|
+
"key": "www-node-modules",
|
|
588
516
|
"paths": [
|
|
589
|
-
"
|
|
517
|
+
"www/node_modules",
|
|
590
518
|
],
|
|
591
519
|
"policy": "pull-push",
|
|
592
520
|
},
|
|
593
521
|
{
|
|
594
|
-
"key": "
|
|
522
|
+
"key": "www-next-cache",
|
|
595
523
|
"paths": [
|
|
596
|
-
"
|
|
524
|
+
"www/.next/cache/",
|
|
597
525
|
],
|
|
598
526
|
"policy": "pull-push",
|
|
599
527
|
},
|
|
@@ -610,43 +538,36 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
610
538
|
],
|
|
611
539
|
},
|
|
612
540
|
"script": [
|
|
613
|
-
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' >
|
|
541
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
|
|
614
542
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
615
|
-
"cd
|
|
543
|
+
"cd www",
|
|
616
544
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
617
545
|
"yarn install --immutable",
|
|
618
546
|
"yarn build",
|
|
619
547
|
],
|
|
620
548
|
"stage": "build",
|
|
621
549
|
"variables": {
|
|
622
|
-
"
|
|
623
|
-
"
|
|
624
|
-
"
|
|
625
|
-
"
|
|
626
|
-
"
|
|
627
|
-
"
|
|
628
|
-
"
|
|
629
|
-
"DB_PASSWORD": "$CL_review_api_DB_PASSWORD",
|
|
630
|
-
"DB_USER": "my-user",
|
|
631
|
-
"ENV_SHORT": "review",
|
|
632
|
-
"ENV_TYPE": "review",
|
|
633
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
634
|
-
"HOST": "pan-test-app-review-mr1234-api-undefined",
|
|
635
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-undefined",
|
|
550
|
+
"API_URL": "https://pan-test-app-dev-api-undefined",
|
|
551
|
+
"APP_DIR": "www",
|
|
552
|
+
"ENV_SHORT": "dev",
|
|
553
|
+
"ENV_TYPE": "dev",
|
|
554
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
|
|
555
|
+
"HOST": "pan-test-app-dev-www-undefined",
|
|
556
|
+
"HOST_CANONICAL": "pan-test-app-dev-www-undefined",
|
|
636
557
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
637
558
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
638
559
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
639
560
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
640
|
-
"ROOT_URL": "https://pan-test-app-
|
|
641
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
561
|
+
"ROOT_URL": "https://pan-test-app-dev-www-undefined",
|
|
562
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
642
563
|
},
|
|
643
564
|
},
|
|
644
|
-
"
|
|
565
|
+
"www 🔨 docker | dev ": {
|
|
645
566
|
"cache": [
|
|
646
567
|
{
|
|
647
|
-
"key": "
|
|
568
|
+
"key": "www-yarn",
|
|
648
569
|
"paths": [
|
|
649
|
-
"
|
|
570
|
+
"www/.yarn",
|
|
650
571
|
],
|
|
651
572
|
"policy": "pull",
|
|
652
573
|
},
|
|
@@ -655,7 +576,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
655
576
|
"image": "path/to/docker/docker-build:the-version",
|
|
656
577
|
"interruptible": true,
|
|
657
578
|
"needs": [
|
|
658
|
-
"
|
|
579
|
+
"www 🔨 app | dev ",
|
|
659
580
|
],
|
|
660
581
|
"retry": {
|
|
661
582
|
"max": 2,
|
|
@@ -683,18 +604,18 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
683
604
|
],
|
|
684
605
|
"stage": "build",
|
|
685
606
|
"variables": {
|
|
686
|
-
"APP_DIR": "
|
|
607
|
+
"APP_DIR": "www",
|
|
687
608
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
688
609
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
689
610
|
"DOCKER_BUILDKIT": "1",
|
|
690
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
691
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node
|
|
692
|
-
COPY --chown=node:node
|
|
611
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
612
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node www/package.json /app/www/package.json
|
|
613
|
+
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock",
|
|
693
614
|
"DOCKER_DIR": ".",
|
|
694
615
|
"DOCKER_DRIVER": "overlay2",
|
|
695
616
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
696
617
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
697
|
-
"DOCKER_IMAGE_NAME": "
|
|
618
|
+
"DOCKER_IMAGE_NAME": "dev/www",
|
|
698
619
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
699
620
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
700
621
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
@@ -707,7 +628,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
707
628
|
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
708
629
|
},
|
|
709
630
|
},
|
|
710
|
-
"
|
|
631
|
+
"www 🚀 Deploy | dev ": {
|
|
711
632
|
"allow_failure": false,
|
|
712
633
|
"artifacts": {
|
|
713
634
|
"paths": [
|
|
@@ -715,33 +636,33 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
715
636
|
],
|
|
716
637
|
},
|
|
717
638
|
"environment": {
|
|
718
|
-
"auto_stop_in": "
|
|
719
|
-
"name": "
|
|
720
|
-
"on_stop": "
|
|
721
|
-
"url": "https://pan-test-app-
|
|
639
|
+
"auto_stop_in": "4 weeks",
|
|
640
|
+
"name": "dev/www",
|
|
641
|
+
"on_stop": "www 🛑 Stop ⚠️ | dev ",
|
|
642
|
+
"url": "https://pan-test-app-dev-www-undefined",
|
|
722
643
|
},
|
|
723
644
|
"image": "path/to/docker/gcloud:the-version",
|
|
724
645
|
"interruptible": true,
|
|
725
646
|
"needs": [
|
|
726
647
|
{
|
|
727
648
|
"artifacts": false,
|
|
728
|
-
"job": "
|
|
649
|
+
"job": "www 👮 lint",
|
|
729
650
|
},
|
|
730
651
|
{
|
|
731
652
|
"artifacts": false,
|
|
732
|
-
"job": "
|
|
653
|
+
"job": "www 🔨 app | dev ",
|
|
733
654
|
},
|
|
734
655
|
{
|
|
735
656
|
"artifacts": false,
|
|
736
|
-
"job": "
|
|
657
|
+
"job": "www 🔨 docker | dev ",
|
|
737
658
|
},
|
|
738
659
|
{
|
|
739
660
|
"artifacts": false,
|
|
740
|
-
"job": "
|
|
661
|
+
"job": "www 🧪 test",
|
|
741
662
|
},
|
|
742
663
|
{
|
|
743
664
|
"artifacts": false,
|
|
744
|
-
"job": "
|
|
665
|
+
"job": "www 🛡 audit",
|
|
745
666
|
},
|
|
746
667
|
],
|
|
747
668
|
"retry": {
|
|
@@ -757,7 +678,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
757
678
|
},
|
|
758
679
|
],
|
|
759
680
|
"script": [
|
|
760
|
-
"echo $
|
|
681
|
+
"echo $CL_dev_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
761
682
|
",
|
|
762
683
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
763
684
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
@@ -768,24 +689,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
768
689
|
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
769
690
|
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
770
691
|
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
771
|
-
"
|
|
772
|
-
"echo "ensuring Database..."",
|
|
773
|
-
"gcloud sql databases create pan-test-app-review-mr1234-api --instance=instancename --project projectId",
|
|
774
|
-
"set -e",
|
|
775
|
-
"set +e",
|
|
776
|
-
"gcloud scheduler jobs create http pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
777
|
-
"set -e",
|
|
778
|
-
"gcloud scheduler jobs update http pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
779
|
-
"set +e",
|
|
780
|
-
"gcloud beta run jobs create pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi",
|
|
781
|
-
"set -e",
|
|
782
|
-
"gcloud beta run jobs update pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
783
|
-
"set +e",
|
|
784
|
-
"gcloud beta run jobs create pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi",
|
|
785
|
-
"set -e",
|
|
786
|
-
"gcloud beta run jobs update pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
787
|
-
"gcloud run deploy pan-test-app-review-mr1234-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
788
|
-
"gcloud beta run jobs execute pan-test-app-review-mr1234-api-migration --project google-project-id --region=europe-west6",
|
|
692
|
+
"gcloud run deploy pan-test-app-dev-www --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --labels customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated",
|
|
789
693
|
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
790
694
|
],
|
|
791
695
|
"services": [
|
|
@@ -796,65 +700,51 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
796
700
|
"name": "docker:20-dind",
|
|
797
701
|
},
|
|
798
702
|
],
|
|
799
|
-
"stage": "deploy
|
|
703
|
+
"stage": "deploy dev",
|
|
800
704
|
"variables": {
|
|
801
|
-
"
|
|
705
|
+
"API_URL": "https://pan-test-app-dev-api-undefined",
|
|
706
|
+
"APP_DIR": "www",
|
|
802
707
|
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
803
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migration:run",
|
|
804
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run",
|
|
805
|
-
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
806
|
-
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
807
|
-
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
808
|
-
"DB_NAME": "pan-test-app-review-mr1234-api",
|
|
809
|
-
"DB_PASSWORD": "$CL_review_api_DB_PASSWORD",
|
|
810
|
-
"DB_USER": "my-user",
|
|
811
708
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
812
709
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
813
710
|
"DOCKER_BUILDKIT": "1",
|
|
814
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
711
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
815
712
|
"DOCKER_DIR": ".",
|
|
816
713
|
"DOCKER_DRIVER": "overlay2",
|
|
817
714
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
818
715
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
819
|
-
"DOCKER_IMAGE_NAME": "
|
|
716
|
+
"DOCKER_IMAGE_NAME": "dev/www",
|
|
820
717
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
821
718
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
822
719
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
823
720
|
"DOCKER_TLS_CERTDIR": "",
|
|
824
|
-
"ENV_SHORT": "
|
|
825
|
-
"ENV_TYPE": "
|
|
826
|
-
"ENV_VARS": "ENV_SHORT: '
|
|
827
|
-
APP_DIR: '
|
|
828
|
-
ENV_TYPE: '
|
|
829
|
-
HOST: 'pan-test-app-
|
|
830
|
-
ROOT_URL: 'https://pan-test-app-
|
|
831
|
-
HOST_CANONICAL: 'pan-test-app-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
DB_USER: 'my-user'
|
|
835
|
-
DB_PASSWORD: '$CL_review_api_DB_PASSWORD'
|
|
836
|
-
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
837
|
-
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
838
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migration:run'
|
|
839
|
-
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run'
|
|
840
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
721
|
+
"ENV_SHORT": "dev",
|
|
722
|
+
"ENV_TYPE": "dev",
|
|
723
|
+
"ENV_VARS": "ENV_SHORT: 'dev'
|
|
724
|
+
APP_DIR: 'www'
|
|
725
|
+
ENV_TYPE: 'dev'
|
|
726
|
+
HOST: 'pan-test-app-dev-www-undefined'
|
|
727
|
+
ROOT_URL: 'https://pan-test-app-dev-www-undefined'
|
|
728
|
+
HOST_CANONICAL: 'pan-test-app-dev-www-undefined'
|
|
729
|
+
API_URL: 'https://pan-test-app-dev-api-undefined'
|
|
730
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]'
|
|
841
731
|
",
|
|
842
|
-
"GCLOUD_DEPLOY_credentialsKey": "$
|
|
843
|
-
"HOST": "pan-test-app-
|
|
844
|
-
"HOST_CANONICAL": "pan-test-app-
|
|
732
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
|
|
733
|
+
"HOST": "pan-test-app-dev-www-undefined",
|
|
734
|
+
"HOST_CANONICAL": "pan-test-app-dev-www-undefined",
|
|
845
735
|
"KUBERNETES_CPU_LIMIT": "1",
|
|
846
736
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
847
737
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
848
738
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
849
|
-
"ROOT_URL": "https://pan-test-app-
|
|
850
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
739
|
+
"ROOT_URL": "https://pan-test-app-dev-www-undefined",
|
|
740
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
851
741
|
},
|
|
852
742
|
},
|
|
853
|
-
"
|
|
743
|
+
"www 🛑 Stop ⚠️ | dev ": {
|
|
854
744
|
"environment": {
|
|
855
745
|
"action": "stop",
|
|
856
|
-
"name": "
|
|
857
|
-
"url": "https://pan-test-app-
|
|
746
|
+
"name": "dev/www",
|
|
747
|
+
"url": "https://pan-test-app-dev-www-undefined",
|
|
858
748
|
},
|
|
859
749
|
"image": "path/to/docker/gcloud:the-version",
|
|
860
750
|
"interruptible": true,
|
|
@@ -878,26 +768,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
878
768
|
},
|
|
879
769
|
],
|
|
880
770
|
"script": [
|
|
881
|
-
"echo $
|
|
771
|
+
"echo $CL_dev_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
882
772
|
",
|
|
883
773
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
884
|
-
"gcloud run services delete pan-test-app-
|
|
885
|
-
"set +e",
|
|
886
|
-
"gcloud scheduler jobs delete pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
887
|
-
"set -e",
|
|
888
|
-
"gcloud beta run jobs delete pan-test-app-review-mr1234-api-migration --project google-project-id --region=europe-west6",
|
|
889
|
-
"gcloud beta run jobs delete pan-test-app-review-mr1234-api-send-reminders --project google-project-id --region=europe-west6",
|
|
890
|
-
"echo "deleting database pan-test-app-review-mr1234-api..."",
|
|
891
|
-
"echo "👆 this can take multiple attemps (3-5min), because google cloud run may still have a connection to the database after the cloud run service is shut down"",
|
|
892
|
-
"
|
|
893
|
-
until gcloud sql databases delete pan-test-app-review-mr1234-api --instance=instancename --project projectId &> /dev/null
|
|
894
|
-
do
|
|
895
|
-
echo "Trying again."
|
|
896
|
-
sleep 10
|
|
897
|
-
done
|
|
898
|
-
",
|
|
774
|
+
"gcloud run services delete pan-test-app-dev-www --project google-project-id --region=europe-west6",
|
|
899
775
|
],
|
|
900
|
-
"stage": "stop
|
|
776
|
+
"stage": "stop dev",
|
|
901
777
|
"variables": {
|
|
902
778
|
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
903
779
|
"GIT_STRATEGY": "none",
|
|
@@ -907,7 +783,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
907
783
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
908
784
|
},
|
|
909
785
|
},
|
|
910
|
-
"
|
|
786
|
+
"www 🛡 audit": {
|
|
911
787
|
"allow_failure": true,
|
|
912
788
|
"cache": undefined,
|
|
913
789
|
"environment": undefined,
|
|
@@ -921,31 +797,31 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
921
797
|
],
|
|
922
798
|
},
|
|
923
799
|
"script": [
|
|
924
|
-
"cd
|
|
800
|
+
"cd www",
|
|
925
801
|
"yarn npm audit --environment production",
|
|
926
802
|
],
|
|
927
803
|
"stage": "test",
|
|
928
804
|
"variables": {
|
|
929
|
-
"APP_PATH": "
|
|
805
|
+
"APP_PATH": "www",
|
|
930
806
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
931
807
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
932
808
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
933
809
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
934
810
|
},
|
|
935
811
|
},
|
|
936
|
-
"
|
|
812
|
+
"www 🧪 test": {
|
|
937
813
|
"cache": [
|
|
938
814
|
{
|
|
939
|
-
"key": "
|
|
815
|
+
"key": "www-yarn",
|
|
940
816
|
"paths": [
|
|
941
|
-
"
|
|
817
|
+
"www/.yarn",
|
|
942
818
|
],
|
|
943
819
|
"policy": "pull-push",
|
|
944
820
|
},
|
|
945
821
|
{
|
|
946
|
-
"key": "
|
|
822
|
+
"key": "www-node-modules",
|
|
947
823
|
"paths": [
|
|
948
|
-
"
|
|
824
|
+
"www/node_modules",
|
|
949
825
|
],
|
|
950
826
|
"policy": "pull-push",
|
|
951
827
|
},
|
|
@@ -962,14 +838,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
962
838
|
],
|
|
963
839
|
},
|
|
964
840
|
"script": [
|
|
965
|
-
"cd
|
|
841
|
+
"cd www",
|
|
966
842
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
967
843
|
"yarn install --immutable",
|
|
968
844
|
"yarn test",
|
|
969
845
|
],
|
|
970
846
|
"stage": "test",
|
|
971
847
|
"variables": {
|
|
972
|
-
"APP_PATH": "
|
|
848
|
+
"APP_PATH": "www",
|
|
973
849
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
974
850
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
975
851
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
@@ -1033,27 +909,1599 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1033
909
|
"if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
1034
910
|
"when": "never",
|
|
1035
911
|
},
|
|
1036
|
-
{
|
|
1037
|
-
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
912
|
+
{
|
|
913
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
914
|
+
},
|
|
915
|
+
{
|
|
916
|
+
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"if": "$CI_MERGE_REQUEST_ID",
|
|
920
|
+
},
|
|
921
|
+
],
|
|
922
|
+
},
|
|
923
|
+
},
|
|
924
|
+
"mr": {
|
|
925
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
926
|
+
"jobs": {
|
|
927
|
+
"api 👮 lint": {
|
|
928
|
+
"cache": [
|
|
929
|
+
{
|
|
930
|
+
"key": "api-yarn",
|
|
931
|
+
"paths": [
|
|
932
|
+
"api/.yarn",
|
|
933
|
+
],
|
|
934
|
+
"policy": "pull-push",
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
"key": "api-node-modules",
|
|
938
|
+
"paths": [
|
|
939
|
+
"api/node_modules",
|
|
940
|
+
],
|
|
941
|
+
"policy": "pull-push",
|
|
942
|
+
},
|
|
943
|
+
],
|
|
944
|
+
"environment": undefined,
|
|
945
|
+
"interruptible": true,
|
|
946
|
+
"needs": [],
|
|
947
|
+
"retry": {
|
|
948
|
+
"max": 2,
|
|
949
|
+
"when": [
|
|
950
|
+
"runner_system_failure",
|
|
951
|
+
"stuck_or_timeout_failure",
|
|
952
|
+
],
|
|
953
|
+
},
|
|
954
|
+
"script": [
|
|
955
|
+
"cd api",
|
|
956
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
957
|
+
"yarn install --immutable",
|
|
958
|
+
"yarn lint",
|
|
959
|
+
],
|
|
960
|
+
"stage": "test",
|
|
961
|
+
"variables": {
|
|
962
|
+
"APP_PATH": "api",
|
|
963
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
964
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
965
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
966
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
967
|
+
},
|
|
968
|
+
},
|
|
969
|
+
"api 🔨 app | review ": {
|
|
970
|
+
"artifacts": {
|
|
971
|
+
"paths": [
|
|
972
|
+
"api/__build_info.json",
|
|
973
|
+
"api/dist",
|
|
974
|
+
"api/.next",
|
|
975
|
+
],
|
|
976
|
+
"reports": {
|
|
977
|
+
"junit": undefined,
|
|
978
|
+
},
|
|
979
|
+
},
|
|
980
|
+
"cache": [
|
|
981
|
+
{
|
|
982
|
+
"key": "api-yarn",
|
|
983
|
+
"paths": [
|
|
984
|
+
"api/.yarn",
|
|
985
|
+
],
|
|
986
|
+
"policy": "pull-push",
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
"key": "api-node-modules",
|
|
990
|
+
"paths": [
|
|
991
|
+
"api/node_modules",
|
|
992
|
+
],
|
|
993
|
+
"policy": "pull-push",
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
"key": "api-next-cache",
|
|
997
|
+
"paths": [
|
|
998
|
+
"api/.next/cache/",
|
|
999
|
+
],
|
|
1000
|
+
"policy": "pull-push",
|
|
1001
|
+
},
|
|
1002
|
+
],
|
|
1003
|
+
"environment": undefined,
|
|
1004
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
1005
|
+
"interruptible": true,
|
|
1006
|
+
"needs": [],
|
|
1007
|
+
"retry": {
|
|
1008
|
+
"max": 2,
|
|
1009
|
+
"when": [
|
|
1010
|
+
"runner_system_failure",
|
|
1011
|
+
"stuck_or_timeout_failure",
|
|
1012
|
+
],
|
|
1013
|
+
},
|
|
1014
|
+
"script": [
|
|
1015
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
|
|
1016
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1017
|
+
"cd api",
|
|
1018
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1019
|
+
"yarn install --immutable",
|
|
1020
|
+
"yarn build",
|
|
1021
|
+
],
|
|
1022
|
+
"stage": "build",
|
|
1023
|
+
"variables": {
|
|
1024
|
+
"APP_DIR": "api",
|
|
1025
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migration:run",
|
|
1026
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run",
|
|
1027
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1028
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1029
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1030
|
+
"DB_NAME": "pan-test-app-review-mr1234-api",
|
|
1031
|
+
"DB_PASSWORD": "$CL_review_api_DB_PASSWORD",
|
|
1032
|
+
"DB_USER": "my-user",
|
|
1033
|
+
"ENV_SHORT": "review",
|
|
1034
|
+
"ENV_TYPE": "review",
|
|
1035
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1036
|
+
"HOST": "pan-test-app-review-mr1234-api-undefined",
|
|
1037
|
+
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-undefined",
|
|
1038
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1039
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1040
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1041
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1042
|
+
"ROOT_URL": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1043
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
1044
|
+
},
|
|
1045
|
+
},
|
|
1046
|
+
"api 🔨 docker | review ": {
|
|
1047
|
+
"cache": [
|
|
1048
|
+
{
|
|
1049
|
+
"key": "api-yarn",
|
|
1050
|
+
"paths": [
|
|
1051
|
+
"api/.yarn",
|
|
1052
|
+
],
|
|
1053
|
+
"policy": "pull",
|
|
1054
|
+
},
|
|
1055
|
+
],
|
|
1056
|
+
"environment": undefined,
|
|
1057
|
+
"image": "path/to/docker/docker-build:the-version",
|
|
1058
|
+
"interruptible": true,
|
|
1059
|
+
"needs": [
|
|
1060
|
+
"api 🔨 app | review ",
|
|
1061
|
+
],
|
|
1062
|
+
"retry": {
|
|
1063
|
+
"max": 2,
|
|
1064
|
+
"when": [
|
|
1065
|
+
"runner_system_failure",
|
|
1066
|
+
"stuck_or_timeout_failure",
|
|
1067
|
+
],
|
|
1068
|
+
},
|
|
1069
|
+
"script": [
|
|
1070
|
+
"ensureNodeDockerfile",
|
|
1071
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
1072
|
+
"docker version",
|
|
1073
|
+
"docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
|
|
1074
|
+
"docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
1075
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
|
|
1076
|
+
"docker push $DOCKER_CACHE_IMAGE",
|
|
1077
|
+
],
|
|
1078
|
+
"services": [
|
|
1079
|
+
{
|
|
1080
|
+
"command": [
|
|
1081
|
+
"--tls=false",
|
|
1082
|
+
],
|
|
1083
|
+
"name": "docker:20-dind",
|
|
1084
|
+
},
|
|
1085
|
+
],
|
|
1086
|
+
"stage": "build",
|
|
1087
|
+
"variables": {
|
|
1088
|
+
"APP_DIR": "api",
|
|
1089
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
1090
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1091
|
+
"DOCKER_BUILDKIT": "1",
|
|
1092
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
1093
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1094
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
1095
|
+
"DOCKER_DIR": ".",
|
|
1096
|
+
"DOCKER_DRIVER": "overlay2",
|
|
1097
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1098
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1099
|
+
"DOCKER_IMAGE_NAME": "review/api",
|
|
1100
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1101
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1102
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
1103
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
1104
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1105
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1106
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1107
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1108
|
+
"YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1109
|
+
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1110
|
+
},
|
|
1111
|
+
},
|
|
1112
|
+
"api 🚀 Deploy | review ": {
|
|
1113
|
+
"allow_failure": false,
|
|
1114
|
+
"artifacts": {
|
|
1115
|
+
"paths": [
|
|
1116
|
+
"____envvars.yaml",
|
|
1117
|
+
],
|
|
1118
|
+
},
|
|
1119
|
+
"environment": {
|
|
1120
|
+
"auto_stop_in": "2 week",
|
|
1121
|
+
"name": "review/some-commit/api",
|
|
1122
|
+
"on_stop": "api 🛑 Stop ⚠️ | review ",
|
|
1123
|
+
"url": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1124
|
+
},
|
|
1125
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
1126
|
+
"interruptible": true,
|
|
1127
|
+
"needs": [
|
|
1128
|
+
{
|
|
1129
|
+
"artifacts": false,
|
|
1130
|
+
"job": "api 👮 lint",
|
|
1131
|
+
},
|
|
1132
|
+
{
|
|
1133
|
+
"artifacts": false,
|
|
1134
|
+
"job": "api 🔨 app | review ",
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
"artifacts": false,
|
|
1138
|
+
"job": "api 🔨 docker | review ",
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
"artifacts": false,
|
|
1142
|
+
"job": "api 🧪 test",
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
"artifacts": false,
|
|
1146
|
+
"job": "api 🛡 audit",
|
|
1147
|
+
},
|
|
1148
|
+
],
|
|
1149
|
+
"retry": {
|
|
1150
|
+
"max": 2,
|
|
1151
|
+
"when": [
|
|
1152
|
+
"runner_system_failure",
|
|
1153
|
+
"stuck_or_timeout_failure",
|
|
1154
|
+
],
|
|
1155
|
+
},
|
|
1156
|
+
"rules": [
|
|
1157
|
+
{
|
|
1158
|
+
"when": "on_success",
|
|
1159
|
+
},
|
|
1160
|
+
],
|
|
1161
|
+
"script": [
|
|
1162
|
+
"echo $CL_review_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1163
|
+
",
|
|
1164
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1165
|
+
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1166
|
+
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1167
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
1168
|
+
"gcloud auth configure-docker europe-west6-docker.pkg.dev",
|
|
1169
|
+
"docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
1170
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1171
|
+
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1172
|
+
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1173
|
+
"set +e",
|
|
1174
|
+
"echo "ensuring Database..."",
|
|
1175
|
+
"gcloud sql databases create pan-test-app-review-mr1234-api --instance=instancename --project projectId",
|
|
1176
|
+
"set -e",
|
|
1177
|
+
"set +e",
|
|
1178
|
+
"gcloud scheduler jobs create http pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1179
|
+
"set -e",
|
|
1180
|
+
"gcloud scheduler jobs update http pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1181
|
+
"set +e",
|
|
1182
|
+
"gcloud beta run jobs create pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi",
|
|
1183
|
+
"set -e",
|
|
1184
|
+
"gcloud beta run jobs update pan-test-app-review-mr1234-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1185
|
+
"set +e",
|
|
1186
|
+
"gcloud beta run jobs create pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi",
|
|
1187
|
+
"set -e",
|
|
1188
|
+
"gcloud beta run jobs update pan-test-app-review-mr1234-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1189
|
+
"gcloud run deploy pan-test-app-review-mr1234-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
1190
|
+
"gcloud beta run jobs execute pan-test-app-review-mr1234-api-migration --project google-project-id --region=europe-west6",
|
|
1191
|
+
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1192
|
+
],
|
|
1193
|
+
"services": [
|
|
1194
|
+
{
|
|
1195
|
+
"command": [
|
|
1196
|
+
"--tls=false",
|
|
1197
|
+
],
|
|
1198
|
+
"name": "docker:20-dind",
|
|
1199
|
+
},
|
|
1200
|
+
],
|
|
1201
|
+
"stage": "deploy review",
|
|
1202
|
+
"variables": {
|
|
1203
|
+
"APP_DIR": "api",
|
|
1204
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1205
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migration:run",
|
|
1206
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run",
|
|
1207
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1208
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1209
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1210
|
+
"DB_NAME": "pan-test-app-review-mr1234-api",
|
|
1211
|
+
"DB_PASSWORD": "$CL_review_api_DB_PASSWORD",
|
|
1212
|
+
"DB_USER": "my-user",
|
|
1213
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
1214
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1215
|
+
"DOCKER_BUILDKIT": "1",
|
|
1216
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
1217
|
+
"DOCKER_DIR": ".",
|
|
1218
|
+
"DOCKER_DRIVER": "overlay2",
|
|
1219
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1220
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1221
|
+
"DOCKER_IMAGE_NAME": "review/api",
|
|
1222
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1223
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1224
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
1225
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
1226
|
+
"ENV_SHORT": "review",
|
|
1227
|
+
"ENV_TYPE": "review",
|
|
1228
|
+
"ENV_VARS": "ENV_SHORT: 'review'
|
|
1229
|
+
APP_DIR: 'api'
|
|
1230
|
+
ENV_TYPE: 'review'
|
|
1231
|
+
HOST: 'pan-test-app-review-mr1234-api-undefined'
|
|
1232
|
+
ROOT_URL: 'https://pan-test-app-review-mr1234-api-undefined'
|
|
1233
|
+
HOST_CANONICAL: 'pan-test-app-review-mr1234-api-undefined'
|
|
1234
|
+
CLOUD_SQL_INSTANCE_CONNECTION_NAME: 'projectId:region:instancename'
|
|
1235
|
+
DB_NAME: 'pan-test-app-review-mr1234-api'
|
|
1236
|
+
DB_USER: 'my-user'
|
|
1237
|
+
DB_PASSWORD: '$CL_review_api_DB_PASSWORD'
|
|
1238
|
+
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
1239
|
+
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
1240
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migration:run'
|
|
1241
|
+
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-send-reminders:run'
|
|
1242
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
1243
|
+
",
|
|
1244
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1245
|
+
"HOST": "pan-test-app-review-mr1234-api-undefined",
|
|
1246
|
+
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-undefined",
|
|
1247
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1248
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1249
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1250
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1251
|
+
"ROOT_URL": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1252
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
1253
|
+
},
|
|
1254
|
+
},
|
|
1255
|
+
"api 🛑 Stop ⚠️ | review ": {
|
|
1256
|
+
"environment": {
|
|
1257
|
+
"action": "stop",
|
|
1258
|
+
"name": "review/some-commit/api",
|
|
1259
|
+
"url": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1260
|
+
},
|
|
1261
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
1262
|
+
"interruptible": true,
|
|
1263
|
+
"needs": [],
|
|
1264
|
+
"retry": {
|
|
1265
|
+
"max": 2,
|
|
1266
|
+
"when": [
|
|
1267
|
+
"runner_system_failure",
|
|
1268
|
+
"stuck_or_timeout_failure",
|
|
1269
|
+
],
|
|
1270
|
+
},
|
|
1271
|
+
"rules": [
|
|
1272
|
+
{
|
|
1273
|
+
"allow_failure": true,
|
|
1274
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1275
|
+
"when": "on_success",
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"allow_failure": true,
|
|
1279
|
+
"when": "manual",
|
|
1280
|
+
},
|
|
1281
|
+
],
|
|
1282
|
+
"script": [
|
|
1283
|
+
"echo $CL_review_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1284
|
+
",
|
|
1285
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1286
|
+
"gcloud run services delete pan-test-app-review-mr1234-api --project google-project-id --region=europe-west6",
|
|
1287
|
+
"set +e",
|
|
1288
|
+
"gcloud scheduler jobs delete pan-test-app-review-mr1234-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
1289
|
+
"set -e",
|
|
1290
|
+
"gcloud beta run jobs delete pan-test-app-review-mr1234-api-migration --project google-project-id --region=europe-west6",
|
|
1291
|
+
"gcloud beta run jobs delete pan-test-app-review-mr1234-api-send-reminders --project google-project-id --region=europe-west6",
|
|
1292
|
+
"echo "deleting database pan-test-app-review-mr1234-api..."",
|
|
1293
|
+
"echo "👆 this can take multiple attemps (3-5min), because google cloud run may still have a connection to the database after the cloud run service is shut down"",
|
|
1294
|
+
"
|
|
1295
|
+
until gcloud sql databases delete pan-test-app-review-mr1234-api --instance=instancename --project projectId &> /dev/null
|
|
1296
|
+
do
|
|
1297
|
+
echo "Trying again."
|
|
1298
|
+
sleep 10
|
|
1299
|
+
done
|
|
1300
|
+
",
|
|
1301
|
+
],
|
|
1302
|
+
"stage": "stop review",
|
|
1303
|
+
"variables": {
|
|
1304
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1305
|
+
"GIT_STRATEGY": "none",
|
|
1306
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1307
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1308
|
+
"KUBERNETES_MEMORY_LIMIT": "500Mi",
|
|
1309
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1310
|
+
},
|
|
1311
|
+
},
|
|
1312
|
+
"api 🛡 audit": {
|
|
1313
|
+
"allow_failure": true,
|
|
1314
|
+
"cache": undefined,
|
|
1315
|
+
"environment": undefined,
|
|
1316
|
+
"interruptible": true,
|
|
1317
|
+
"needs": [],
|
|
1318
|
+
"retry": {
|
|
1319
|
+
"max": 2,
|
|
1320
|
+
"when": [
|
|
1321
|
+
"runner_system_failure",
|
|
1322
|
+
"stuck_or_timeout_failure",
|
|
1323
|
+
],
|
|
1324
|
+
},
|
|
1325
|
+
"script": [
|
|
1326
|
+
"cd api",
|
|
1327
|
+
"yarn npm audit --environment production",
|
|
1328
|
+
],
|
|
1329
|
+
"stage": "test",
|
|
1330
|
+
"variables": {
|
|
1331
|
+
"APP_PATH": "api",
|
|
1332
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1333
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1334
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1335
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1336
|
+
},
|
|
1337
|
+
},
|
|
1338
|
+
"api 🧪 test": {
|
|
1339
|
+
"cache": [
|
|
1340
|
+
{
|
|
1341
|
+
"key": "api-yarn",
|
|
1342
|
+
"paths": [
|
|
1343
|
+
"api/.yarn",
|
|
1344
|
+
],
|
|
1345
|
+
"policy": "pull-push",
|
|
1346
|
+
},
|
|
1347
|
+
{
|
|
1348
|
+
"key": "api-node-modules",
|
|
1349
|
+
"paths": [
|
|
1350
|
+
"api/node_modules",
|
|
1351
|
+
],
|
|
1352
|
+
"policy": "pull-push",
|
|
1353
|
+
},
|
|
1354
|
+
],
|
|
1355
|
+
"environment": undefined,
|
|
1356
|
+
"image": "path/to/docker/jobs-testing-chrome:the-version",
|
|
1357
|
+
"interruptible": true,
|
|
1358
|
+
"needs": [],
|
|
1359
|
+
"retry": {
|
|
1360
|
+
"max": 2,
|
|
1361
|
+
"when": [
|
|
1362
|
+
"runner_system_failure",
|
|
1363
|
+
"stuck_or_timeout_failure",
|
|
1364
|
+
],
|
|
1365
|
+
},
|
|
1366
|
+
"script": [
|
|
1367
|
+
"cd api",
|
|
1368
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1369
|
+
"yarn install --immutable",
|
|
1370
|
+
"yarn test",
|
|
1371
|
+
],
|
|
1372
|
+
"stage": "test",
|
|
1373
|
+
"variables": {
|
|
1374
|
+
"APP_PATH": "api",
|
|
1375
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1376
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1377
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1378
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1379
|
+
},
|
|
1380
|
+
},
|
|
1381
|
+
"www 👮 lint": {
|
|
1382
|
+
"cache": [
|
|
1383
|
+
{
|
|
1384
|
+
"key": "www-yarn",
|
|
1385
|
+
"paths": [
|
|
1386
|
+
"www/.yarn",
|
|
1387
|
+
],
|
|
1388
|
+
"policy": "pull-push",
|
|
1389
|
+
},
|
|
1390
|
+
{
|
|
1391
|
+
"key": "www-node-modules",
|
|
1392
|
+
"paths": [
|
|
1393
|
+
"www/node_modules",
|
|
1394
|
+
],
|
|
1395
|
+
"policy": "pull-push",
|
|
1396
|
+
},
|
|
1397
|
+
],
|
|
1398
|
+
"environment": undefined,
|
|
1399
|
+
"interruptible": true,
|
|
1400
|
+
"needs": [],
|
|
1401
|
+
"retry": {
|
|
1402
|
+
"max": 2,
|
|
1403
|
+
"when": [
|
|
1404
|
+
"runner_system_failure",
|
|
1405
|
+
"stuck_or_timeout_failure",
|
|
1406
|
+
],
|
|
1407
|
+
},
|
|
1408
|
+
"script": [
|
|
1409
|
+
"cd www",
|
|
1410
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1411
|
+
"yarn install --immutable",
|
|
1412
|
+
"yarn lint",
|
|
1413
|
+
],
|
|
1414
|
+
"stage": "test",
|
|
1415
|
+
"variables": {
|
|
1416
|
+
"APP_PATH": "www",
|
|
1417
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1418
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1419
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1420
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1421
|
+
},
|
|
1422
|
+
},
|
|
1423
|
+
"www 🔨 app | review ": {
|
|
1424
|
+
"artifacts": {
|
|
1425
|
+
"paths": [
|
|
1426
|
+
"www/__build_info.json",
|
|
1427
|
+
"www/dist",
|
|
1428
|
+
"www/.next",
|
|
1429
|
+
],
|
|
1430
|
+
"reports": {
|
|
1431
|
+
"junit": undefined,
|
|
1432
|
+
},
|
|
1433
|
+
},
|
|
1434
|
+
"cache": [
|
|
1435
|
+
{
|
|
1436
|
+
"key": "www-yarn",
|
|
1437
|
+
"paths": [
|
|
1438
|
+
"www/.yarn",
|
|
1439
|
+
],
|
|
1440
|
+
"policy": "pull-push",
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"key": "www-node-modules",
|
|
1444
|
+
"paths": [
|
|
1445
|
+
"www/node_modules",
|
|
1446
|
+
],
|
|
1447
|
+
"policy": "pull-push",
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
"key": "www-next-cache",
|
|
1451
|
+
"paths": [
|
|
1452
|
+
"www/.next/cache/",
|
|
1453
|
+
],
|
|
1454
|
+
"policy": "pull-push",
|
|
1455
|
+
},
|
|
1456
|
+
],
|
|
1457
|
+
"environment": undefined,
|
|
1458
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
1459
|
+
"interruptible": true,
|
|
1460
|
+
"needs": [],
|
|
1461
|
+
"retry": {
|
|
1462
|
+
"max": 2,
|
|
1463
|
+
"when": [
|
|
1464
|
+
"runner_system_failure",
|
|
1465
|
+
"stuck_or_timeout_failure",
|
|
1466
|
+
],
|
|
1467
|
+
},
|
|
1468
|
+
"script": [
|
|
1469
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
|
|
1470
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1471
|
+
"cd www",
|
|
1472
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1473
|
+
"yarn install --immutable",
|
|
1474
|
+
"yarn build",
|
|
1475
|
+
],
|
|
1476
|
+
"stage": "build",
|
|
1477
|
+
"variables": {
|
|
1478
|
+
"API_URL": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1479
|
+
"APP_DIR": "www",
|
|
1480
|
+
"ENV_SHORT": "review",
|
|
1481
|
+
"ENV_TYPE": "review",
|
|
1482
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
|
|
1483
|
+
"HOST": "pan-test-app-review-mr1234-www-undefined",
|
|
1484
|
+
"HOST_CANONICAL": "pan-test-app-review-mr1234-www-undefined",
|
|
1485
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1486
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1487
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1488
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1489
|
+
"ROOT_URL": "https://pan-test-app-review-mr1234-www-undefined",
|
|
1490
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1491
|
+
},
|
|
1492
|
+
},
|
|
1493
|
+
"www 🔨 docker | review ": {
|
|
1494
|
+
"cache": [
|
|
1495
|
+
{
|
|
1496
|
+
"key": "www-yarn",
|
|
1497
|
+
"paths": [
|
|
1498
|
+
"www/.yarn",
|
|
1499
|
+
],
|
|
1500
|
+
"policy": "pull",
|
|
1501
|
+
},
|
|
1502
|
+
],
|
|
1503
|
+
"environment": undefined,
|
|
1504
|
+
"image": "path/to/docker/docker-build:the-version",
|
|
1505
|
+
"interruptible": true,
|
|
1506
|
+
"needs": [
|
|
1507
|
+
"www 🔨 app | review ",
|
|
1508
|
+
],
|
|
1509
|
+
"retry": {
|
|
1510
|
+
"max": 2,
|
|
1511
|
+
"when": [
|
|
1512
|
+
"runner_system_failure",
|
|
1513
|
+
"stuck_or_timeout_failure",
|
|
1514
|
+
],
|
|
1515
|
+
},
|
|
1516
|
+
"script": [
|
|
1517
|
+
"ensureNodeDockerfile",
|
|
1518
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
1519
|
+
"docker version",
|
|
1520
|
+
"docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
|
|
1521
|
+
"docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
1522
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
|
|
1523
|
+
"docker push $DOCKER_CACHE_IMAGE",
|
|
1524
|
+
],
|
|
1525
|
+
"services": [
|
|
1526
|
+
{
|
|
1527
|
+
"command": [
|
|
1528
|
+
"--tls=false",
|
|
1529
|
+
],
|
|
1530
|
+
"name": "docker:20-dind",
|
|
1531
|
+
},
|
|
1532
|
+
],
|
|
1533
|
+
"stage": "build",
|
|
1534
|
+
"variables": {
|
|
1535
|
+
"APP_DIR": "www",
|
|
1536
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
1537
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1538
|
+
"DOCKER_BUILDKIT": "1",
|
|
1539
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
1540
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node www/package.json /app/www/package.json
|
|
1541
|
+
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock",
|
|
1542
|
+
"DOCKER_DIR": ".",
|
|
1543
|
+
"DOCKER_DRIVER": "overlay2",
|
|
1544
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1545
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1546
|
+
"DOCKER_IMAGE_NAME": "review/www",
|
|
1547
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1548
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1549
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
1550
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
1551
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1552
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1553
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1554
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1555
|
+
"YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1556
|
+
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1557
|
+
},
|
|
1558
|
+
},
|
|
1559
|
+
"www 🚀 Deploy | review ": {
|
|
1560
|
+
"allow_failure": false,
|
|
1561
|
+
"artifacts": {
|
|
1562
|
+
"paths": [
|
|
1563
|
+
"____envvars.yaml",
|
|
1564
|
+
],
|
|
1565
|
+
},
|
|
1566
|
+
"environment": {
|
|
1567
|
+
"auto_stop_in": "2 week",
|
|
1568
|
+
"name": "review/some-commit/www",
|
|
1569
|
+
"on_stop": "www 🛑 Stop ⚠️ | review ",
|
|
1570
|
+
"url": "https://pan-test-app-review-mr1234-www-undefined",
|
|
1571
|
+
},
|
|
1572
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
1573
|
+
"interruptible": true,
|
|
1574
|
+
"needs": [
|
|
1575
|
+
{
|
|
1576
|
+
"artifacts": false,
|
|
1577
|
+
"job": "www 👮 lint",
|
|
1578
|
+
},
|
|
1579
|
+
{
|
|
1580
|
+
"artifacts": false,
|
|
1581
|
+
"job": "www 🔨 app | review ",
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"artifacts": false,
|
|
1585
|
+
"job": "www 🔨 docker | review ",
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"artifacts": false,
|
|
1589
|
+
"job": "www 🧪 test",
|
|
1590
|
+
},
|
|
1591
|
+
{
|
|
1592
|
+
"artifacts": false,
|
|
1593
|
+
"job": "www 🛡 audit",
|
|
1594
|
+
},
|
|
1595
|
+
],
|
|
1596
|
+
"retry": {
|
|
1597
|
+
"max": 2,
|
|
1598
|
+
"when": [
|
|
1599
|
+
"runner_system_failure",
|
|
1600
|
+
"stuck_or_timeout_failure",
|
|
1601
|
+
],
|
|
1602
|
+
},
|
|
1603
|
+
"rules": [
|
|
1604
|
+
{
|
|
1605
|
+
"when": "on_success",
|
|
1606
|
+
},
|
|
1607
|
+
],
|
|
1608
|
+
"script": [
|
|
1609
|
+
"echo $CL_review_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1610
|
+
",
|
|
1611
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1612
|
+
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1613
|
+
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1614
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
1615
|
+
"gcloud auth configure-docker europe-west6-docker.pkg.dev",
|
|
1616
|
+
"docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
1617
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1618
|
+
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1619
|
+
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1620
|
+
"gcloud run deploy pan-test-app-review-mr1234-www --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated",
|
|
1621
|
+
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1622
|
+
],
|
|
1623
|
+
"services": [
|
|
1624
|
+
{
|
|
1625
|
+
"command": [
|
|
1626
|
+
"--tls=false",
|
|
1627
|
+
],
|
|
1628
|
+
"name": "docker:20-dind",
|
|
1629
|
+
},
|
|
1630
|
+
],
|
|
1631
|
+
"stage": "deploy review",
|
|
1632
|
+
"variables": {
|
|
1633
|
+
"API_URL": "https://pan-test-app-review-mr1234-api-undefined",
|
|
1634
|
+
"APP_DIR": "www",
|
|
1635
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1636
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
1637
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1638
|
+
"DOCKER_BUILDKIT": "1",
|
|
1639
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
1640
|
+
"DOCKER_DIR": ".",
|
|
1641
|
+
"DOCKER_DRIVER": "overlay2",
|
|
1642
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1643
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1644
|
+
"DOCKER_IMAGE_NAME": "review/www",
|
|
1645
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1646
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1647
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
1648
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
1649
|
+
"ENV_SHORT": "review",
|
|
1650
|
+
"ENV_TYPE": "review",
|
|
1651
|
+
"ENV_VARS": "ENV_SHORT: 'review'
|
|
1652
|
+
APP_DIR: 'www'
|
|
1653
|
+
ENV_TYPE: 'review'
|
|
1654
|
+
HOST: 'pan-test-app-review-mr1234-www-undefined'
|
|
1655
|
+
ROOT_URL: 'https://pan-test-app-review-mr1234-www-undefined'
|
|
1656
|
+
HOST_CANONICAL: 'pan-test-app-review-mr1234-www-undefined'
|
|
1657
|
+
API_URL: 'https://pan-test-app-review-mr1234-api-undefined'
|
|
1658
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]'
|
|
1659
|
+
",
|
|
1660
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
|
|
1661
|
+
"HOST": "pan-test-app-review-mr1234-www-undefined",
|
|
1662
|
+
"HOST_CANONICAL": "pan-test-app-review-mr1234-www-undefined",
|
|
1663
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1664
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1665
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1666
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1667
|
+
"ROOT_URL": "https://pan-test-app-review-mr1234-www-undefined",
|
|
1668
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1669
|
+
},
|
|
1670
|
+
},
|
|
1671
|
+
"www 🛑 Stop ⚠️ | review ": {
|
|
1672
|
+
"environment": {
|
|
1673
|
+
"action": "stop",
|
|
1674
|
+
"name": "review/some-commit/www",
|
|
1675
|
+
"url": "https://pan-test-app-review-mr1234-www-undefined",
|
|
1676
|
+
},
|
|
1677
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
1678
|
+
"interruptible": true,
|
|
1679
|
+
"needs": [],
|
|
1680
|
+
"retry": {
|
|
1681
|
+
"max": 2,
|
|
1682
|
+
"when": [
|
|
1683
|
+
"runner_system_failure",
|
|
1684
|
+
"stuck_or_timeout_failure",
|
|
1685
|
+
],
|
|
1686
|
+
},
|
|
1687
|
+
"rules": [
|
|
1688
|
+
{
|
|
1689
|
+
"allow_failure": true,
|
|
1690
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1691
|
+
"when": "on_success",
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"allow_failure": true,
|
|
1695
|
+
"when": "manual",
|
|
1696
|
+
},
|
|
1697
|
+
],
|
|
1698
|
+
"script": [
|
|
1699
|
+
"echo $CL_review_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1700
|
+
",
|
|
1701
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1702
|
+
"gcloud run services delete pan-test-app-review-mr1234-www --project google-project-id --region=europe-west6",
|
|
1703
|
+
],
|
|
1704
|
+
"stage": "stop review",
|
|
1705
|
+
"variables": {
|
|
1706
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1707
|
+
"GIT_STRATEGY": "none",
|
|
1708
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
1709
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1710
|
+
"KUBERNETES_MEMORY_LIMIT": "500Mi",
|
|
1711
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1712
|
+
},
|
|
1713
|
+
},
|
|
1714
|
+
"www 🛡 audit": {
|
|
1715
|
+
"allow_failure": true,
|
|
1716
|
+
"cache": undefined,
|
|
1717
|
+
"environment": undefined,
|
|
1718
|
+
"interruptible": true,
|
|
1719
|
+
"needs": [],
|
|
1720
|
+
"retry": {
|
|
1721
|
+
"max": 2,
|
|
1722
|
+
"when": [
|
|
1723
|
+
"runner_system_failure",
|
|
1724
|
+
"stuck_or_timeout_failure",
|
|
1725
|
+
],
|
|
1726
|
+
},
|
|
1727
|
+
"script": [
|
|
1728
|
+
"cd www",
|
|
1729
|
+
"yarn npm audit --environment production",
|
|
1730
|
+
],
|
|
1731
|
+
"stage": "test",
|
|
1732
|
+
"variables": {
|
|
1733
|
+
"APP_PATH": "www",
|
|
1734
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1735
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1736
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1737
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1738
|
+
},
|
|
1739
|
+
},
|
|
1740
|
+
"www 🧪 test": {
|
|
1741
|
+
"cache": [
|
|
1742
|
+
{
|
|
1743
|
+
"key": "www-yarn",
|
|
1744
|
+
"paths": [
|
|
1745
|
+
"www/.yarn",
|
|
1746
|
+
],
|
|
1747
|
+
"policy": "pull-push",
|
|
1748
|
+
},
|
|
1749
|
+
{
|
|
1750
|
+
"key": "www-node-modules",
|
|
1751
|
+
"paths": [
|
|
1752
|
+
"www/node_modules",
|
|
1753
|
+
],
|
|
1754
|
+
"policy": "pull-push",
|
|
1755
|
+
},
|
|
1756
|
+
],
|
|
1757
|
+
"environment": undefined,
|
|
1758
|
+
"image": "path/to/docker/jobs-testing-chrome:the-version",
|
|
1759
|
+
"interruptible": true,
|
|
1760
|
+
"needs": [],
|
|
1761
|
+
"retry": {
|
|
1762
|
+
"max": 2,
|
|
1763
|
+
"when": [
|
|
1764
|
+
"runner_system_failure",
|
|
1765
|
+
"stuck_or_timeout_failure",
|
|
1766
|
+
],
|
|
1767
|
+
},
|
|
1768
|
+
"script": [
|
|
1769
|
+
"cd www",
|
|
1770
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1771
|
+
"yarn install --immutable",
|
|
1772
|
+
"yarn test",
|
|
1773
|
+
],
|
|
1774
|
+
"stage": "test",
|
|
1775
|
+
"variables": {
|
|
1776
|
+
"APP_PATH": "www",
|
|
1777
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1778
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1779
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1780
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1781
|
+
},
|
|
1782
|
+
},
|
|
1783
|
+
},
|
|
1784
|
+
"stages": [
|
|
1785
|
+
"setup",
|
|
1786
|
+
"setup dev",
|
|
1787
|
+
"setup review",
|
|
1788
|
+
"setup stage",
|
|
1789
|
+
"setup prod",
|
|
1790
|
+
"setup local",
|
|
1791
|
+
"test",
|
|
1792
|
+
"test dev",
|
|
1793
|
+
"test review",
|
|
1794
|
+
"test stage",
|
|
1795
|
+
"test prod",
|
|
1796
|
+
"test local",
|
|
1797
|
+
"build",
|
|
1798
|
+
"build dev",
|
|
1799
|
+
"build review",
|
|
1800
|
+
"build stage",
|
|
1801
|
+
"build prod",
|
|
1802
|
+
"build local",
|
|
1803
|
+
"deploy",
|
|
1804
|
+
"deploy dev",
|
|
1805
|
+
"deploy review",
|
|
1806
|
+
"deploy stage",
|
|
1807
|
+
"deploy prod",
|
|
1808
|
+
"deploy local",
|
|
1809
|
+
"verify",
|
|
1810
|
+
"verify dev",
|
|
1811
|
+
"verify review",
|
|
1812
|
+
"verify stage",
|
|
1813
|
+
"verify prod",
|
|
1814
|
+
"verify local",
|
|
1815
|
+
"rollback",
|
|
1816
|
+
"rollback dev",
|
|
1817
|
+
"rollback review",
|
|
1818
|
+
"rollback stage",
|
|
1819
|
+
"rollback prod",
|
|
1820
|
+
"rollback local",
|
|
1821
|
+
"stop",
|
|
1822
|
+
"stop dev",
|
|
1823
|
+
"stop review",
|
|
1824
|
+
"stop stage",
|
|
1825
|
+
"stop prod",
|
|
1826
|
+
"stop local",
|
|
1827
|
+
],
|
|
1828
|
+
"variables": {
|
|
1829
|
+
"FF_USE_FASTZIP": "true",
|
|
1830
|
+
},
|
|
1831
|
+
"workflow": {
|
|
1832
|
+
"rules": [
|
|
1833
|
+
{
|
|
1834
|
+
"if": "$CI_COMMIT_TAG",
|
|
1835
|
+
},
|
|
1836
|
+
{
|
|
1837
|
+
"if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
1838
|
+
"when": "never",
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
"if": "$CI_MERGE_REQUEST_ID",
|
|
1848
|
+
},
|
|
1849
|
+
],
|
|
1850
|
+
},
|
|
1851
|
+
},
|
|
1852
|
+
"taggedRelease": {
|
|
1853
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
1854
|
+
"jobs": {
|
|
1855
|
+
"api 🔨 app | prod ": {
|
|
1856
|
+
"artifacts": {
|
|
1857
|
+
"paths": [
|
|
1858
|
+
"api/__build_info.json",
|
|
1859
|
+
"api/dist",
|
|
1860
|
+
"api/.next",
|
|
1861
|
+
],
|
|
1862
|
+
"reports": {
|
|
1863
|
+
"junit": undefined,
|
|
1864
|
+
},
|
|
1865
|
+
},
|
|
1866
|
+
"cache": [
|
|
1867
|
+
{
|
|
1868
|
+
"key": "api-yarn",
|
|
1869
|
+
"paths": [
|
|
1870
|
+
"api/.yarn",
|
|
1871
|
+
],
|
|
1872
|
+
"policy": "pull-push",
|
|
1873
|
+
},
|
|
1874
|
+
{
|
|
1875
|
+
"key": "api-node-modules",
|
|
1876
|
+
"paths": [
|
|
1877
|
+
"api/node_modules",
|
|
1878
|
+
],
|
|
1879
|
+
"policy": "pull-push",
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
"key": "api-next-cache",
|
|
1883
|
+
"paths": [
|
|
1884
|
+
"api/.next/cache/",
|
|
1885
|
+
],
|
|
1886
|
+
"policy": "pull-push",
|
|
1887
|
+
},
|
|
1888
|
+
],
|
|
1889
|
+
"environment": undefined,
|
|
1890
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
1891
|
+
"interruptible": true,
|
|
1892
|
+
"needs": [],
|
|
1893
|
+
"retry": {
|
|
1894
|
+
"max": 2,
|
|
1895
|
+
"when": [
|
|
1896
|
+
"runner_system_failure",
|
|
1897
|
+
"stuck_or_timeout_failure",
|
|
1898
|
+
],
|
|
1899
|
+
},
|
|
1900
|
+
"script": [
|
|
1901
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
|
|
1902
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1903
|
+
"cd api",
|
|
1904
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1905
|
+
"yarn install --immutable",
|
|
1906
|
+
"yarn build",
|
|
1907
|
+
],
|
|
1908
|
+
"stage": "build",
|
|
1909
|
+
"variables": {
|
|
1910
|
+
"APP_DIR": "api",
|
|
1911
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run",
|
|
1912
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run",
|
|
1913
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1914
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1915
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1916
|
+
"DB_NAME": "pan-test-app-prod-api",
|
|
1917
|
+
"DB_PASSWORD": "$CL_prod_api_DB_PASSWORD",
|
|
1918
|
+
"DB_USER": "my-user",
|
|
1919
|
+
"ENV_SHORT": "prod",
|
|
1920
|
+
"ENV_TYPE": "prod",
|
|
1921
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1922
|
+
"HOST": "pan-test-app-prod-api-undefined",
|
|
1923
|
+
"HOST_CANONICAL": "pan-test-app-prod-api-undefined",
|
|
1924
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
1925
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1926
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1927
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1928
|
+
"ROOT_URL": "https://pan-test-app-prod-api-undefined",
|
|
1929
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
1930
|
+
},
|
|
1931
|
+
},
|
|
1932
|
+
"api 🔨 app | stage ": {
|
|
1933
|
+
"artifacts": {
|
|
1934
|
+
"paths": [
|
|
1935
|
+
"api/__build_info.json",
|
|
1936
|
+
"api/dist",
|
|
1937
|
+
"api/.next",
|
|
1938
|
+
],
|
|
1939
|
+
"reports": {
|
|
1940
|
+
"junit": undefined,
|
|
1941
|
+
},
|
|
1942
|
+
},
|
|
1943
|
+
"cache": [
|
|
1944
|
+
{
|
|
1945
|
+
"key": "api-yarn",
|
|
1946
|
+
"paths": [
|
|
1947
|
+
"api/.yarn",
|
|
1948
|
+
],
|
|
1949
|
+
"policy": "pull-push",
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
"key": "api-node-modules",
|
|
1953
|
+
"paths": [
|
|
1954
|
+
"api/node_modules",
|
|
1955
|
+
],
|
|
1956
|
+
"policy": "pull-push",
|
|
1957
|
+
},
|
|
1958
|
+
{
|
|
1959
|
+
"key": "api-next-cache",
|
|
1960
|
+
"paths": [
|
|
1961
|
+
"api/.next/cache/",
|
|
1962
|
+
],
|
|
1963
|
+
"policy": "pull-push",
|
|
1964
|
+
},
|
|
1965
|
+
],
|
|
1966
|
+
"environment": undefined,
|
|
1967
|
+
"image": "path/to/docker/jobs-default:the-version",
|
|
1968
|
+
"interruptible": true,
|
|
1969
|
+
"needs": [],
|
|
1970
|
+
"retry": {
|
|
1971
|
+
"max": 2,
|
|
1972
|
+
"when": [
|
|
1973
|
+
"runner_system_failure",
|
|
1974
|
+
"stuck_or_timeout_failure",
|
|
1975
|
+
],
|
|
1976
|
+
},
|
|
1977
|
+
"script": [
|
|
1978
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
|
|
1979
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1980
|
+
"cd api",
|
|
1981
|
+
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1982
|
+
"yarn install --immutable",
|
|
1983
|
+
"yarn build",
|
|
1984
|
+
],
|
|
1985
|
+
"stage": "build",
|
|
1986
|
+
"variables": {
|
|
1987
|
+
"APP_DIR": "api",
|
|
1988
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run",
|
|
1989
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run",
|
|
1990
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1991
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1992
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1993
|
+
"DB_NAME": "pan-test-app-stage-api",
|
|
1994
|
+
"DB_PASSWORD": "$CL_stage_api_DB_PASSWORD",
|
|
1995
|
+
"DB_USER": "my-user",
|
|
1996
|
+
"ENV_SHORT": "stage",
|
|
1997
|
+
"ENV_TYPE": "stage",
|
|
1998
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1999
|
+
"HOST": "pan-test-app-stage-api-undefined",
|
|
2000
|
+
"HOST_CANONICAL": "pan-test-app-stage-api-undefined",
|
|
2001
|
+
"KUBERNETES_CPU_LIMIT": "2",
|
|
2002
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2003
|
+
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
2004
|
+
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
2005
|
+
"ROOT_URL": "https://pan-test-app-stage-api-undefined",
|
|
2006
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
2007
|
+
},
|
|
2008
|
+
},
|
|
2009
|
+
"api 🔨 docker | prod ": {
|
|
2010
|
+
"cache": [
|
|
2011
|
+
{
|
|
2012
|
+
"key": "api-yarn",
|
|
2013
|
+
"paths": [
|
|
2014
|
+
"api/.yarn",
|
|
2015
|
+
],
|
|
2016
|
+
"policy": "pull",
|
|
2017
|
+
},
|
|
2018
|
+
],
|
|
2019
|
+
"environment": undefined,
|
|
2020
|
+
"image": "path/to/docker/docker-build:the-version",
|
|
2021
|
+
"interruptible": true,
|
|
2022
|
+
"needs": [
|
|
2023
|
+
"api 🔨 app | prod ",
|
|
2024
|
+
],
|
|
2025
|
+
"retry": {
|
|
2026
|
+
"max": 2,
|
|
2027
|
+
"when": [
|
|
2028
|
+
"runner_system_failure",
|
|
2029
|
+
"stuck_or_timeout_failure",
|
|
2030
|
+
],
|
|
2031
|
+
},
|
|
2032
|
+
"script": [
|
|
2033
|
+
"ensureNodeDockerfile",
|
|
2034
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
2035
|
+
"docker version",
|
|
2036
|
+
"docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
|
|
2037
|
+
"docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
2038
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
|
|
2039
|
+
"docker push $DOCKER_CACHE_IMAGE",
|
|
2040
|
+
],
|
|
2041
|
+
"services": [
|
|
2042
|
+
{
|
|
2043
|
+
"command": [
|
|
2044
|
+
"--tls=false",
|
|
2045
|
+
],
|
|
2046
|
+
"name": "docker:20-dind",
|
|
2047
|
+
},
|
|
2048
|
+
],
|
|
2049
|
+
"stage": "build",
|
|
2050
|
+
"variables": {
|
|
2051
|
+
"APP_DIR": "api",
|
|
2052
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
2053
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2054
|
+
"DOCKER_BUILDKIT": "1",
|
|
2055
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
2056
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
2057
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
2058
|
+
"DOCKER_DIR": ".",
|
|
2059
|
+
"DOCKER_DRIVER": "overlay2",
|
|
2060
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2061
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
2062
|
+
"DOCKER_IMAGE_NAME": "prod/api",
|
|
2063
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2064
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2065
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
2066
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
2067
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2068
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2069
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
2070
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
2071
|
+
"YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
2072
|
+
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
2073
|
+
},
|
|
2074
|
+
},
|
|
2075
|
+
"api 🔨 docker | stage ": {
|
|
2076
|
+
"cache": [
|
|
2077
|
+
{
|
|
2078
|
+
"key": "api-yarn",
|
|
2079
|
+
"paths": [
|
|
2080
|
+
"api/.yarn",
|
|
2081
|
+
],
|
|
2082
|
+
"policy": "pull",
|
|
2083
|
+
},
|
|
2084
|
+
],
|
|
2085
|
+
"environment": undefined,
|
|
2086
|
+
"image": "path/to/docker/docker-build:the-version",
|
|
2087
|
+
"interruptible": true,
|
|
2088
|
+
"needs": [
|
|
2089
|
+
"api 🔨 app | stage ",
|
|
2090
|
+
],
|
|
2091
|
+
"retry": {
|
|
2092
|
+
"max": 2,
|
|
2093
|
+
"when": [
|
|
2094
|
+
"runner_system_failure",
|
|
2095
|
+
"stuck_or_timeout_failure",
|
|
2096
|
+
],
|
|
2097
|
+
},
|
|
2098
|
+
"script": [
|
|
2099
|
+
"ensureNodeDockerfile",
|
|
2100
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
2101
|
+
"docker version",
|
|
2102
|
+
"docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
|
|
2103
|
+
"docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
2104
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
|
|
2105
|
+
"docker push $DOCKER_CACHE_IMAGE",
|
|
2106
|
+
],
|
|
2107
|
+
"services": [
|
|
2108
|
+
{
|
|
2109
|
+
"command": [
|
|
2110
|
+
"--tls=false",
|
|
2111
|
+
],
|
|
2112
|
+
"name": "docker:20-dind",
|
|
2113
|
+
},
|
|
2114
|
+
],
|
|
2115
|
+
"stage": "build",
|
|
2116
|
+
"variables": {
|
|
2117
|
+
"APP_DIR": "api",
|
|
2118
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
2119
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2120
|
+
"DOCKER_BUILDKIT": "1",
|
|
2121
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
2122
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
2123
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
2124
|
+
"DOCKER_DIR": ".",
|
|
2125
|
+
"DOCKER_DRIVER": "overlay2",
|
|
2126
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2127
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
2128
|
+
"DOCKER_IMAGE_NAME": "stage/api",
|
|
2129
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2130
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2131
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
2132
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
2133
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2134
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2135
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
2136
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
2137
|
+
"YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
2138
|
+
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
2139
|
+
},
|
|
2140
|
+
},
|
|
2141
|
+
"api 🚀 Deploy | prod ": {
|
|
2142
|
+
"allow_failure": true,
|
|
2143
|
+
"artifacts": {
|
|
2144
|
+
"paths": [
|
|
2145
|
+
"____envvars.yaml",
|
|
2146
|
+
],
|
|
2147
|
+
},
|
|
2148
|
+
"environment": {
|
|
2149
|
+
"auto_stop_in": undefined,
|
|
2150
|
+
"name": "prod/api",
|
|
2151
|
+
"on_stop": "api 🛑 Stop ⚠️ | prod ",
|
|
2152
|
+
"url": "https://pan-test-app-prod-api-undefined",
|
|
2153
|
+
},
|
|
2154
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
2155
|
+
"interruptible": true,
|
|
2156
|
+
"needs": [
|
|
2157
|
+
{
|
|
2158
|
+
"artifacts": false,
|
|
2159
|
+
"job": "api 🔨 app | prod ",
|
|
2160
|
+
},
|
|
2161
|
+
{
|
|
2162
|
+
"artifacts": false,
|
|
2163
|
+
"job": "api 🔨 docker | prod ",
|
|
2164
|
+
},
|
|
2165
|
+
],
|
|
2166
|
+
"retry": {
|
|
2167
|
+
"max": 2,
|
|
2168
|
+
"when": [
|
|
2169
|
+
"runner_system_failure",
|
|
2170
|
+
"stuck_or_timeout_failure",
|
|
2171
|
+
],
|
|
2172
|
+
},
|
|
2173
|
+
"rules": [
|
|
2174
|
+
{
|
|
2175
|
+
"when": "manual",
|
|
2176
|
+
},
|
|
2177
|
+
],
|
|
2178
|
+
"script": [
|
|
2179
|
+
"echo $CL_prod_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
2180
|
+
",
|
|
2181
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
2182
|
+
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
2183
|
+
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
2184
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
2185
|
+
"gcloud auth configure-docker europe-west6-docker.pkg.dev",
|
|
2186
|
+
"docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
2187
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2188
|
+
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2189
|
+
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
2190
|
+
"set +e",
|
|
2191
|
+
"echo "ensuring Database..."",
|
|
2192
|
+
"gcloud sql databases create pan-test-app-prod-api --instance=instancename --project projectId",
|
|
2193
|
+
"set -e",
|
|
2194
|
+
"set +e",
|
|
2195
|
+
"gcloud scheduler jobs create http pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2196
|
+
"set -e",
|
|
2197
|
+
"gcloud scheduler jobs update http pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2198
|
+
"set +e",
|
|
2199
|
+
"gcloud beta run jobs create pan-test-app-prod-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi",
|
|
2200
|
+
"set -e",
|
|
2201
|
+
"gcloud beta run jobs update pan-test-app-prod-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
2202
|
+
"set +e",
|
|
2203
|
+
"gcloud beta run jobs create pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi",
|
|
2204
|
+
"set -e",
|
|
2205
|
+
"gcloud beta run jobs update pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
2206
|
+
"gcloud run deploy pan-test-app-prod-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
2207
|
+
"gcloud beta run jobs execute pan-test-app-prod-api-migration --project google-project-id --region=europe-west6",
|
|
2208
|
+
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2209
|
+
],
|
|
2210
|
+
"services": [
|
|
2211
|
+
{
|
|
2212
|
+
"command": [
|
|
2213
|
+
"--tls=false",
|
|
2214
|
+
],
|
|
2215
|
+
"name": "docker:20-dind",
|
|
2216
|
+
},
|
|
2217
|
+
],
|
|
2218
|
+
"stage": "deploy prod",
|
|
2219
|
+
"variables": {
|
|
2220
|
+
"APP_DIR": "api",
|
|
2221
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
2222
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run",
|
|
2223
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run",
|
|
2224
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
2225
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
2226
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
2227
|
+
"DB_NAME": "pan-test-app-prod-api",
|
|
2228
|
+
"DB_PASSWORD": "$CL_prod_api_DB_PASSWORD",
|
|
2229
|
+
"DB_USER": "my-user",
|
|
2230
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
2231
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2232
|
+
"DOCKER_BUILDKIT": "1",
|
|
2233
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
2234
|
+
"DOCKER_DIR": ".",
|
|
2235
|
+
"DOCKER_DRIVER": "overlay2",
|
|
2236
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2237
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
2238
|
+
"DOCKER_IMAGE_NAME": "prod/api",
|
|
2239
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2240
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2241
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
2242
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
2243
|
+
"ENV_SHORT": "prod",
|
|
2244
|
+
"ENV_TYPE": "prod",
|
|
2245
|
+
"ENV_VARS": "ENV_SHORT: 'prod'
|
|
2246
|
+
APP_DIR: 'api'
|
|
2247
|
+
ENV_TYPE: 'prod'
|
|
2248
|
+
HOST: 'pan-test-app-prod-api-undefined'
|
|
2249
|
+
ROOT_URL: 'https://pan-test-app-prod-api-undefined'
|
|
2250
|
+
HOST_CANONICAL: 'pan-test-app-prod-api-undefined'
|
|
2251
|
+
CLOUD_SQL_INSTANCE_CONNECTION_NAME: 'projectId:region:instancename'
|
|
2252
|
+
DB_NAME: 'pan-test-app-prod-api'
|
|
2253
|
+
DB_USER: 'my-user'
|
|
2254
|
+
DB_PASSWORD: '$CL_prod_api_DB_PASSWORD'
|
|
2255
|
+
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
2256
|
+
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
2257
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run'
|
|
2258
|
+
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run'
|
|
2259
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
2260
|
+
",
|
|
2261
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
2262
|
+
"HOST": "pan-test-app-prod-api-undefined",
|
|
2263
|
+
"HOST_CANONICAL": "pan-test-app-prod-api-undefined",
|
|
2264
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2265
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2266
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
2267
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
2268
|
+
"ROOT_URL": "https://pan-test-app-prod-api-undefined",
|
|
2269
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
2270
|
+
},
|
|
2271
|
+
},
|
|
2272
|
+
"api 🚀 Deploy | stage ": {
|
|
2273
|
+
"allow_failure": false,
|
|
2274
|
+
"artifacts": {
|
|
2275
|
+
"paths": [
|
|
2276
|
+
"____envvars.yaml",
|
|
2277
|
+
],
|
|
2278
|
+
},
|
|
2279
|
+
"environment": {
|
|
2280
|
+
"auto_stop_in": undefined,
|
|
2281
|
+
"name": "stage/api",
|
|
2282
|
+
"on_stop": "api 🛑 Stop ⚠️ | stage ",
|
|
2283
|
+
"url": "https://pan-test-app-stage-api-undefined",
|
|
2284
|
+
},
|
|
2285
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
2286
|
+
"interruptible": true,
|
|
2287
|
+
"needs": [
|
|
2288
|
+
{
|
|
2289
|
+
"artifacts": false,
|
|
2290
|
+
"job": "api 🔨 app | stage ",
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
"artifacts": false,
|
|
2294
|
+
"job": "api 🔨 docker | stage ",
|
|
2295
|
+
},
|
|
2296
|
+
],
|
|
2297
|
+
"retry": {
|
|
2298
|
+
"max": 2,
|
|
2299
|
+
"when": [
|
|
2300
|
+
"runner_system_failure",
|
|
2301
|
+
"stuck_or_timeout_failure",
|
|
2302
|
+
],
|
|
2303
|
+
},
|
|
2304
|
+
"rules": [
|
|
2305
|
+
{
|
|
2306
|
+
"when": "on_success",
|
|
2307
|
+
},
|
|
2308
|
+
],
|
|
2309
|
+
"script": [
|
|
2310
|
+
"echo $CL_stage_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
2311
|
+
",
|
|
2312
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
2313
|
+
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
2314
|
+
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
2315
|
+
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
2316
|
+
"gcloud auth configure-docker europe-west6-docker.pkg.dev",
|
|
2317
|
+
"docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
|
|
2318
|
+
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2319
|
+
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2320
|
+
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
2321
|
+
"set +e",
|
|
2322
|
+
"echo "ensuring Database..."",
|
|
2323
|
+
"gcloud sql databases create pan-test-app-stage-api --instance=instancename --project projectId",
|
|
2324
|
+
"set -e",
|
|
2325
|
+
"set +e",
|
|
2326
|
+
"gcloud scheduler jobs create http pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2327
|
+
"set -e",
|
|
2328
|
+
"gcloud scheduler jobs update http pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
2329
|
+
"set +e",
|
|
2330
|
+
"gcloud beta run jobs create pan-test-app-stage-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi",
|
|
2331
|
+
"set -e",
|
|
2332
|
+
"gcloud beta run jobs update pan-test-app-stage-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
2333
|
+
"set +e",
|
|
2334
|
+
"gcloud beta run jobs create pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi",
|
|
2335
|
+
"set -e",
|
|
2336
|
+
"gcloud beta run jobs update pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
2337
|
+
"gcloud run deploy pan-test-app-stage-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
2338
|
+
"gcloud beta run jobs execute pan-test-app-stage-api-migration --project google-project-id --region=europe-west6",
|
|
2339
|
+
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
2340
|
+
],
|
|
2341
|
+
"services": [
|
|
2342
|
+
{
|
|
2343
|
+
"command": [
|
|
2344
|
+
"--tls=false",
|
|
2345
|
+
],
|
|
2346
|
+
"name": "docker:20-dind",
|
|
2347
|
+
},
|
|
2348
|
+
],
|
|
2349
|
+
"stage": "deploy stage",
|
|
2350
|
+
"variables": {
|
|
2351
|
+
"APP_DIR": "api",
|
|
2352
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
2353
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run",
|
|
2354
|
+
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run",
|
|
2355
|
+
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
2356
|
+
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
2357
|
+
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
2358
|
+
"DB_NAME": "pan-test-app-stage-api",
|
|
2359
|
+
"DB_PASSWORD": "$CL_stage_api_DB_PASSWORD",
|
|
2360
|
+
"DB_USER": "my-user",
|
|
2361
|
+
"DOCKERFILE_ADDITIONS": undefined,
|
|
2362
|
+
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2363
|
+
"DOCKER_BUILDKIT": "1",
|
|
2364
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
|
|
2365
|
+
"DOCKER_DIR": ".",
|
|
2366
|
+
"DOCKER_DRIVER": "overlay2",
|
|
2367
|
+
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2368
|
+
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
2369
|
+
"DOCKER_IMAGE_NAME": "stage/api",
|
|
2370
|
+
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2371
|
+
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2372
|
+
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
2373
|
+
"DOCKER_TLS_CERTDIR": "",
|
|
2374
|
+
"ENV_SHORT": "stage",
|
|
2375
|
+
"ENV_TYPE": "stage",
|
|
2376
|
+
"ENV_VARS": "ENV_SHORT: 'stage'
|
|
2377
|
+
APP_DIR: 'api'
|
|
2378
|
+
ENV_TYPE: 'stage'
|
|
2379
|
+
HOST: 'pan-test-app-stage-api-undefined'
|
|
2380
|
+
ROOT_URL: 'https://pan-test-app-stage-api-undefined'
|
|
2381
|
+
HOST_CANONICAL: 'pan-test-app-stage-api-undefined'
|
|
2382
|
+
CLOUD_SQL_INSTANCE_CONNECTION_NAME: 'projectId:region:instancename'
|
|
2383
|
+
DB_NAME: 'pan-test-app-stage-api'
|
|
2384
|
+
DB_USER: 'my-user'
|
|
2385
|
+
DB_PASSWORD: '$CL_stage_api_DB_PASSWORD'
|
|
2386
|
+
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
2387
|
+
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
2388
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run'
|
|
2389
|
+
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run'
|
|
2390
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
2391
|
+
",
|
|
2392
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
2393
|
+
"HOST": "pan-test-app-stage-api-undefined",
|
|
2394
|
+
"HOST_CANONICAL": "pan-test-app-stage-api-undefined",
|
|
2395
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2396
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2397
|
+
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
2398
|
+
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
2399
|
+
"ROOT_URL": "https://pan-test-app-stage-api-undefined",
|
|
2400
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]",
|
|
2401
|
+
},
|
|
2402
|
+
},
|
|
2403
|
+
"api 🛑 Stop ⚠️ | prod ": {
|
|
2404
|
+
"environment": {
|
|
2405
|
+
"action": "stop",
|
|
2406
|
+
"name": "prod/api",
|
|
2407
|
+
"url": "https://pan-test-app-prod-api-undefined",
|
|
2408
|
+
},
|
|
2409
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
2410
|
+
"interruptible": true,
|
|
2411
|
+
"needs": [],
|
|
2412
|
+
"retry": {
|
|
2413
|
+
"max": 2,
|
|
2414
|
+
"when": [
|
|
2415
|
+
"runner_system_failure",
|
|
2416
|
+
"stuck_or_timeout_failure",
|
|
2417
|
+
],
|
|
2418
|
+
},
|
|
2419
|
+
"rules": [
|
|
2420
|
+
{
|
|
2421
|
+
"allow_failure": true,
|
|
2422
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2423
|
+
"when": "on_success",
|
|
2424
|
+
},
|
|
2425
|
+
{
|
|
2426
|
+
"allow_failure": true,
|
|
2427
|
+
"when": "manual",
|
|
2428
|
+
},
|
|
2429
|
+
],
|
|
2430
|
+
"script": [
|
|
2431
|
+
"echo $CL_prod_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
2432
|
+
",
|
|
2433
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
2434
|
+
"gcloud run services delete pan-test-app-prod-api --project google-project-id --region=europe-west6",
|
|
2435
|
+
"set +e",
|
|
2436
|
+
"gcloud scheduler jobs delete pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
2437
|
+
"set -e",
|
|
2438
|
+
"gcloud beta run jobs delete pan-test-app-prod-api-migration --project google-project-id --region=europe-west6",
|
|
2439
|
+
"gcloud beta run jobs delete pan-test-app-prod-api-send-reminders --project google-project-id --region=europe-west6",
|
|
2440
|
+
],
|
|
2441
|
+
"stage": "stop prod",
|
|
2442
|
+
"variables": {
|
|
2443
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
2444
|
+
"GIT_STRATEGY": "none",
|
|
2445
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2446
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2447
|
+
"KUBERNETES_MEMORY_LIMIT": "500Mi",
|
|
2448
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2449
|
+
},
|
|
2450
|
+
},
|
|
2451
|
+
"api 🛑 Stop ⚠️ | stage ": {
|
|
2452
|
+
"environment": {
|
|
2453
|
+
"action": "stop",
|
|
2454
|
+
"name": "stage/api",
|
|
2455
|
+
"url": "https://pan-test-app-stage-api-undefined",
|
|
1038
2456
|
},
|
|
1039
|
-
|
|
1040
|
-
|
|
2457
|
+
"image": "path/to/docker/gcloud:the-version",
|
|
2458
|
+
"interruptible": true,
|
|
2459
|
+
"needs": [],
|
|
2460
|
+
"retry": {
|
|
2461
|
+
"max": 2,
|
|
2462
|
+
"when": [
|
|
2463
|
+
"runner_system_failure",
|
|
2464
|
+
"stuck_or_timeout_failure",
|
|
2465
|
+
],
|
|
1041
2466
|
},
|
|
1042
|
-
|
|
1043
|
-
|
|
2467
|
+
"rules": [
|
|
2468
|
+
{
|
|
2469
|
+
"allow_failure": true,
|
|
2470
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2471
|
+
"when": "on_success",
|
|
2472
|
+
},
|
|
2473
|
+
{
|
|
2474
|
+
"allow_failure": true,
|
|
2475
|
+
"when": "manual",
|
|
2476
|
+
},
|
|
2477
|
+
],
|
|
2478
|
+
"script": [
|
|
2479
|
+
"echo $CL_stage_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
2480
|
+
",
|
|
2481
|
+
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
2482
|
+
"gcloud run services delete pan-test-app-stage-api --project google-project-id --region=europe-west6",
|
|
2483
|
+
"set +e",
|
|
2484
|
+
"gcloud scheduler jobs delete pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
2485
|
+
"set -e",
|
|
2486
|
+
"gcloud beta run jobs delete pan-test-app-stage-api-migration --project google-project-id --region=europe-west6",
|
|
2487
|
+
"gcloud beta run jobs delete pan-test-app-stage-api-send-reminders --project google-project-id --region=europe-west6",
|
|
2488
|
+
],
|
|
2489
|
+
"stage": "stop stage",
|
|
2490
|
+
"variables": {
|
|
2491
|
+
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
2492
|
+
"GIT_STRATEGY": "none",
|
|
2493
|
+
"KUBERNETES_CPU_LIMIT": "1",
|
|
2494
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2495
|
+
"KUBERNETES_MEMORY_LIMIT": "500Mi",
|
|
2496
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1044
2497
|
},
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
},
|
|
1048
|
-
"taggedRelease": {
|
|
1049
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1050
|
-
"jobs": {
|
|
1051
|
-
"api 🔨 app | prod ": {
|
|
2498
|
+
},
|
|
2499
|
+
"www 🔨 app | prod ": {
|
|
1052
2500
|
"artifacts": {
|
|
1053
2501
|
"paths": [
|
|
1054
|
-
"
|
|
1055
|
-
"
|
|
1056
|
-
"
|
|
2502
|
+
"www/__build_info.json",
|
|
2503
|
+
"www/dist",
|
|
2504
|
+
"www/.next",
|
|
1057
2505
|
],
|
|
1058
2506
|
"reports": {
|
|
1059
2507
|
"junit": undefined,
|
|
@@ -1061,23 +2509,23 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1061
2509
|
},
|
|
1062
2510
|
"cache": [
|
|
1063
2511
|
{
|
|
1064
|
-
"key": "
|
|
2512
|
+
"key": "www-yarn",
|
|
1065
2513
|
"paths": [
|
|
1066
|
-
"
|
|
2514
|
+
"www/.yarn",
|
|
1067
2515
|
],
|
|
1068
2516
|
"policy": "pull-push",
|
|
1069
2517
|
},
|
|
1070
2518
|
{
|
|
1071
|
-
"key": "
|
|
2519
|
+
"key": "www-node-modules",
|
|
1072
2520
|
"paths": [
|
|
1073
|
-
"
|
|
2521
|
+
"www/node_modules",
|
|
1074
2522
|
],
|
|
1075
2523
|
"policy": "pull-push",
|
|
1076
2524
|
},
|
|
1077
2525
|
{
|
|
1078
|
-
"key": "
|
|
2526
|
+
"key": "www-next-cache",
|
|
1079
2527
|
"paths": [
|
|
1080
|
-
"
|
|
2528
|
+
"www/.next/cache/",
|
|
1081
2529
|
],
|
|
1082
2530
|
"policy": "pull-push",
|
|
1083
2531
|
},
|
|
@@ -1094,43 +2542,36 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1094
2542
|
],
|
|
1095
2543
|
},
|
|
1096
2544
|
"script": [
|
|
1097
|
-
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' >
|
|
2545
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
|
|
1098
2546
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1099
|
-
"cd
|
|
2547
|
+
"cd www",
|
|
1100
2548
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1101
2549
|
"yarn install --immutable",
|
|
1102
2550
|
"yarn build",
|
|
1103
2551
|
],
|
|
1104
2552
|
"stage": "build",
|
|
1105
2553
|
"variables": {
|
|
1106
|
-
"
|
|
1107
|
-
"
|
|
1108
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run",
|
|
1109
|
-
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1110
|
-
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1111
|
-
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1112
|
-
"DB_NAME": "pan-test-app-prod-api",
|
|
1113
|
-
"DB_PASSWORD": "$CL_prod_api_DB_PASSWORD",
|
|
1114
|
-
"DB_USER": "my-user",
|
|
2554
|
+
"API_URL": "https://pan-test-app-prod-api-undefined",
|
|
2555
|
+
"APP_DIR": "www",
|
|
1115
2556
|
"ENV_SHORT": "prod",
|
|
1116
2557
|
"ENV_TYPE": "prod",
|
|
1117
|
-
"GCLOUD_DEPLOY_credentialsKey": "$
|
|
1118
|
-
"HOST": "pan-test-app-prod-
|
|
1119
|
-
"HOST_CANONICAL": "pan-test-app-prod-
|
|
2558
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
|
|
2559
|
+
"HOST": "pan-test-app-prod-www-undefined",
|
|
2560
|
+
"HOST_CANONICAL": "pan-test-app-prod-www-undefined",
|
|
1120
2561
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
1121
2562
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1122
2563
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1123
2564
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1124
|
-
"ROOT_URL": "https://pan-test-app-prod-
|
|
1125
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
2565
|
+
"ROOT_URL": "https://pan-test-app-prod-www-undefined",
|
|
2566
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1126
2567
|
},
|
|
1127
2568
|
},
|
|
1128
|
-
"
|
|
2569
|
+
"www 🔨 app | stage ": {
|
|
1129
2570
|
"artifacts": {
|
|
1130
2571
|
"paths": [
|
|
1131
|
-
"
|
|
1132
|
-
"
|
|
1133
|
-
"
|
|
2572
|
+
"www/__build_info.json",
|
|
2573
|
+
"www/dist",
|
|
2574
|
+
"www/.next",
|
|
1134
2575
|
],
|
|
1135
2576
|
"reports": {
|
|
1136
2577
|
"junit": undefined,
|
|
@@ -1138,23 +2579,23 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1138
2579
|
},
|
|
1139
2580
|
"cache": [
|
|
1140
2581
|
{
|
|
1141
|
-
"key": "
|
|
2582
|
+
"key": "www-yarn",
|
|
1142
2583
|
"paths": [
|
|
1143
|
-
"
|
|
2584
|
+
"www/.yarn",
|
|
1144
2585
|
],
|
|
1145
2586
|
"policy": "pull-push",
|
|
1146
2587
|
},
|
|
1147
2588
|
{
|
|
1148
|
-
"key": "
|
|
2589
|
+
"key": "www-node-modules",
|
|
1149
2590
|
"paths": [
|
|
1150
|
-
"
|
|
2591
|
+
"www/node_modules",
|
|
1151
2592
|
],
|
|
1152
2593
|
"policy": "pull-push",
|
|
1153
2594
|
},
|
|
1154
2595
|
{
|
|
1155
|
-
"key": "
|
|
2596
|
+
"key": "www-next-cache",
|
|
1156
2597
|
"paths": [
|
|
1157
|
-
"
|
|
2598
|
+
"www/.next/cache/",
|
|
1158
2599
|
],
|
|
1159
2600
|
"policy": "pull-push",
|
|
1160
2601
|
},
|
|
@@ -1171,43 +2612,36 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1171
2612
|
],
|
|
1172
2613
|
},
|
|
1173
2614
|
"script": [
|
|
1174
|
-
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' >
|
|
2615
|
+
"echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
|
|
1175
2616
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1176
|
-
"cd
|
|
2617
|
+
"cd www",
|
|
1177
2618
|
"if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
|
|
1178
2619
|
"yarn install --immutable",
|
|
1179
2620
|
"yarn build",
|
|
1180
2621
|
],
|
|
1181
2622
|
"stage": "build",
|
|
1182
2623
|
"variables": {
|
|
1183
|
-
"
|
|
1184
|
-
"
|
|
1185
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run",
|
|
1186
|
-
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1187
|
-
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1188
|
-
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1189
|
-
"DB_NAME": "pan-test-app-stage-api",
|
|
1190
|
-
"DB_PASSWORD": "$CL_stage_api_DB_PASSWORD",
|
|
1191
|
-
"DB_USER": "my-user",
|
|
2624
|
+
"API_URL": "https://pan-test-app-stage-api-undefined",
|
|
2625
|
+
"APP_DIR": "www",
|
|
1192
2626
|
"ENV_SHORT": "stage",
|
|
1193
2627
|
"ENV_TYPE": "stage",
|
|
1194
|
-
"GCLOUD_DEPLOY_credentialsKey": "$
|
|
1195
|
-
"HOST": "pan-test-app-stage-
|
|
1196
|
-
"HOST_CANONICAL": "pan-test-app-stage-
|
|
2628
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
|
|
2629
|
+
"HOST": "pan-test-app-stage-www-undefined",
|
|
2630
|
+
"HOST_CANONICAL": "pan-test-app-stage-www-undefined",
|
|
1197
2631
|
"KUBERNETES_CPU_LIMIT": "2",
|
|
1198
2632
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1199
2633
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1200
2634
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1201
|
-
"ROOT_URL": "https://pan-test-app-stage-
|
|
1202
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
2635
|
+
"ROOT_URL": "https://pan-test-app-stage-www-undefined",
|
|
2636
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1203
2637
|
},
|
|
1204
2638
|
},
|
|
1205
|
-
"
|
|
2639
|
+
"www 🔨 docker | prod ": {
|
|
1206
2640
|
"cache": [
|
|
1207
2641
|
{
|
|
1208
|
-
"key": "
|
|
2642
|
+
"key": "www-yarn",
|
|
1209
2643
|
"paths": [
|
|
1210
|
-
"
|
|
2644
|
+
"www/.yarn",
|
|
1211
2645
|
],
|
|
1212
2646
|
"policy": "pull",
|
|
1213
2647
|
},
|
|
@@ -1216,7 +2650,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1216
2650
|
"image": "path/to/docker/docker-build:the-version",
|
|
1217
2651
|
"interruptible": true,
|
|
1218
2652
|
"needs": [
|
|
1219
|
-
"
|
|
2653
|
+
"www 🔨 app | prod ",
|
|
1220
2654
|
],
|
|
1221
2655
|
"retry": {
|
|
1222
2656
|
"max": 2,
|
|
@@ -1244,18 +2678,18 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1244
2678
|
],
|
|
1245
2679
|
"stage": "build",
|
|
1246
2680
|
"variables": {
|
|
1247
|
-
"APP_DIR": "
|
|
2681
|
+
"APP_DIR": "www",
|
|
1248
2682
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
1249
2683
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1250
2684
|
"DOCKER_BUILDKIT": "1",
|
|
1251
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
1252
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node
|
|
1253
|
-
COPY --chown=node:node
|
|
2685
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
2686
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node www/package.json /app/www/package.json
|
|
2687
|
+
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock",
|
|
1254
2688
|
"DOCKER_DIR": ".",
|
|
1255
2689
|
"DOCKER_DRIVER": "overlay2",
|
|
1256
2690
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1257
2691
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1258
|
-
"DOCKER_IMAGE_NAME": "prod/
|
|
2692
|
+
"DOCKER_IMAGE_NAME": "prod/www",
|
|
1259
2693
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1260
2694
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1261
2695
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
@@ -1268,12 +2702,12 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1268
2702
|
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1269
2703
|
},
|
|
1270
2704
|
},
|
|
1271
|
-
"
|
|
2705
|
+
"www 🔨 docker | stage ": {
|
|
1272
2706
|
"cache": [
|
|
1273
2707
|
{
|
|
1274
|
-
"key": "
|
|
2708
|
+
"key": "www-yarn",
|
|
1275
2709
|
"paths": [
|
|
1276
|
-
"
|
|
2710
|
+
"www/.yarn",
|
|
1277
2711
|
],
|
|
1278
2712
|
"policy": "pull",
|
|
1279
2713
|
},
|
|
@@ -1282,7 +2716,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1282
2716
|
"image": "path/to/docker/docker-build:the-version",
|
|
1283
2717
|
"interruptible": true,
|
|
1284
2718
|
"needs": [
|
|
1285
|
-
"
|
|
2719
|
+
"www 🔨 app | stage ",
|
|
1286
2720
|
],
|
|
1287
2721
|
"retry": {
|
|
1288
2722
|
"max": 2,
|
|
@@ -1310,18 +2744,18 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1310
2744
|
],
|
|
1311
2745
|
"stage": "build",
|
|
1312
2746
|
"variables": {
|
|
1313
|
-
"APP_DIR": "
|
|
2747
|
+
"APP_DIR": "www",
|
|
1314
2748
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
1315
2749
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1316
2750
|
"DOCKER_BUILDKIT": "1",
|
|
1317
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
1318
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node
|
|
1319
|
-
COPY --chown=node:node
|
|
2751
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
2752
|
+
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node www/package.json /app/www/package.json
|
|
2753
|
+
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock",
|
|
1320
2754
|
"DOCKER_DIR": ".",
|
|
1321
2755
|
"DOCKER_DRIVER": "overlay2",
|
|
1322
2756
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1323
2757
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1324
|
-
"DOCKER_IMAGE_NAME": "stage/
|
|
2758
|
+
"DOCKER_IMAGE_NAME": "stage/www",
|
|
1325
2759
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1326
2760
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1327
2761
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
@@ -1334,7 +2768,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1334
2768
|
"YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
|
|
1335
2769
|
},
|
|
1336
2770
|
},
|
|
1337
|
-
"
|
|
2771
|
+
"www 🚀 Deploy | prod ": {
|
|
1338
2772
|
"allow_failure": true,
|
|
1339
2773
|
"artifacts": {
|
|
1340
2774
|
"paths": [
|
|
@@ -1343,20 +2777,20 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1343
2777
|
},
|
|
1344
2778
|
"environment": {
|
|
1345
2779
|
"auto_stop_in": undefined,
|
|
1346
|
-
"name": "prod/
|
|
1347
|
-
"on_stop": "
|
|
1348
|
-
"url": "https://pan-test-app-prod-
|
|
2780
|
+
"name": "prod/www",
|
|
2781
|
+
"on_stop": "www 🛑 Stop ⚠️ | prod ",
|
|
2782
|
+
"url": "https://pan-test-app-prod-www-undefined",
|
|
1349
2783
|
},
|
|
1350
2784
|
"image": "path/to/docker/gcloud:the-version",
|
|
1351
2785
|
"interruptible": true,
|
|
1352
2786
|
"needs": [
|
|
1353
2787
|
{
|
|
1354
2788
|
"artifacts": false,
|
|
1355
|
-
"job": "
|
|
2789
|
+
"job": "www 🔨 app | prod ",
|
|
1356
2790
|
},
|
|
1357
2791
|
{
|
|
1358
2792
|
"artifacts": false,
|
|
1359
|
-
"job": "
|
|
2793
|
+
"job": "www 🔨 docker | prod ",
|
|
1360
2794
|
},
|
|
1361
2795
|
],
|
|
1362
2796
|
"retry": {
|
|
@@ -1372,7 +2806,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1372
2806
|
},
|
|
1373
2807
|
],
|
|
1374
2808
|
"script": [
|
|
1375
|
-
"echo $
|
|
2809
|
+
"echo $CL_prod_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1376
2810
|
",
|
|
1377
2811
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1378
2812
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
@@ -1383,24 +2817,7 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1383
2817
|
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1384
2818
|
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1385
2819
|
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1386
|
-
"
|
|
1387
|
-
"echo "ensuring Database..."",
|
|
1388
|
-
"gcloud sql databases create pan-test-app-prod-api --instance=instancename --project projectId",
|
|
1389
|
-
"set -e",
|
|
1390
|
-
"set +e",
|
|
1391
|
-
"gcloud scheduler jobs create http pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1392
|
-
"set -e",
|
|
1393
|
-
"gcloud scheduler jobs update http pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1394
|
-
"set +e",
|
|
1395
|
-
"gcloud beta run jobs create pan-test-app-prod-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi",
|
|
1396
|
-
"set -e",
|
|
1397
|
-
"gcloud beta run jobs update pan-test-app-prod-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1398
|
-
"set +e",
|
|
1399
|
-
"gcloud beta run jobs create pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi",
|
|
1400
|
-
"set -e",
|
|
1401
|
-
"gcloud beta run jobs update pan-test-app-prod-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1402
|
-
"gcloud run deploy pan-test-app-prod-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
1403
|
-
"gcloud beta run jobs execute pan-test-app-prod-api-migration --project google-project-id --region=europe-west6",
|
|
2820
|
+
"gcloud run deploy pan-test-app-prod-www --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated",
|
|
1404
2821
|
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1405
2822
|
],
|
|
1406
2823
|
"services": [
|
|
@@ -1413,25 +2830,18 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1413
2830
|
],
|
|
1414
2831
|
"stage": "deploy prod",
|
|
1415
2832
|
"variables": {
|
|
1416
|
-
"
|
|
2833
|
+
"API_URL": "https://pan-test-app-prod-api-undefined",
|
|
2834
|
+
"APP_DIR": "www",
|
|
1417
2835
|
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1418
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run",
|
|
1419
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run",
|
|
1420
|
-
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1421
|
-
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1422
|
-
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1423
|
-
"DB_NAME": "pan-test-app-prod-api",
|
|
1424
|
-
"DB_PASSWORD": "$CL_prod_api_DB_PASSWORD",
|
|
1425
|
-
"DB_USER": "my-user",
|
|
1426
2836
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
1427
2837
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1428
2838
|
"DOCKER_BUILDKIT": "1",
|
|
1429
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
2839
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
1430
2840
|
"DOCKER_DIR": ".",
|
|
1431
2841
|
"DOCKER_DRIVER": "overlay2",
|
|
1432
2842
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1433
2843
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1434
|
-
"DOCKER_IMAGE_NAME": "prod/
|
|
2844
|
+
"DOCKER_IMAGE_NAME": "prod/www",
|
|
1435
2845
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1436
2846
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1437
2847
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
@@ -1439,33 +2849,26 @@ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
|
|
|
1439
2849
|
"ENV_SHORT": "prod",
|
|
1440
2850
|
"ENV_TYPE": "prod",
|
|
1441
2851
|
"ENV_VARS": "ENV_SHORT: 'prod'
|
|
1442
|
-
APP_DIR: '
|
|
2852
|
+
APP_DIR: 'www'
|
|
1443
2853
|
ENV_TYPE: 'prod'
|
|
1444
|
-
HOST: 'pan-test-app-prod-
|
|
1445
|
-
ROOT_URL: 'https://pan-test-app-prod-
|
|
1446
|
-
HOST_CANONICAL: 'pan-test-app-prod-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
DB_USER: 'my-user'
|
|
1450
|
-
DB_PASSWORD: '$CL_prod_api_DB_PASSWORD'
|
|
1451
|
-
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
1452
|
-
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
1453
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migration:run'
|
|
1454
|
-
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-send-reminders:run'
|
|
1455
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
2854
|
+
HOST: 'pan-test-app-prod-www-undefined'
|
|
2855
|
+
ROOT_URL: 'https://pan-test-app-prod-www-undefined'
|
|
2856
|
+
HOST_CANONICAL: 'pan-test-app-prod-www-undefined'
|
|
2857
|
+
API_URL: 'https://pan-test-app-prod-api-undefined'
|
|
2858
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]'
|
|
1456
2859
|
",
|
|
1457
|
-
"GCLOUD_DEPLOY_credentialsKey": "$
|
|
1458
|
-
"HOST": "pan-test-app-prod-
|
|
1459
|
-
"HOST_CANONICAL": "pan-test-app-prod-
|
|
2860
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
|
|
2861
|
+
"HOST": "pan-test-app-prod-www-undefined",
|
|
2862
|
+
"HOST_CANONICAL": "pan-test-app-prod-www-undefined",
|
|
1460
2863
|
"KUBERNETES_CPU_LIMIT": "1",
|
|
1461
2864
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1462
2865
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1463
2866
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1464
|
-
"ROOT_URL": "https://pan-test-app-prod-
|
|
1465
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
2867
|
+
"ROOT_URL": "https://pan-test-app-prod-www-undefined",
|
|
2868
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1466
2869
|
},
|
|
1467
2870
|
},
|
|
1468
|
-
"
|
|
2871
|
+
"www 🚀 Deploy | stage ": {
|
|
1469
2872
|
"allow_failure": false,
|
|
1470
2873
|
"artifacts": {
|
|
1471
2874
|
"paths": [
|
|
@@ -1474,20 +2877,20 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1474
2877
|
},
|
|
1475
2878
|
"environment": {
|
|
1476
2879
|
"auto_stop_in": undefined,
|
|
1477
|
-
"name": "stage/
|
|
1478
|
-
"on_stop": "
|
|
1479
|
-
"url": "https://pan-test-app-stage-
|
|
2880
|
+
"name": "stage/www",
|
|
2881
|
+
"on_stop": "www 🛑 Stop ⚠️ | stage ",
|
|
2882
|
+
"url": "https://pan-test-app-stage-www-undefined",
|
|
1480
2883
|
},
|
|
1481
2884
|
"image": "path/to/docker/gcloud:the-version",
|
|
1482
2885
|
"interruptible": true,
|
|
1483
2886
|
"needs": [
|
|
1484
2887
|
{
|
|
1485
2888
|
"artifacts": false,
|
|
1486
|
-
"job": "
|
|
2889
|
+
"job": "www 🔨 app | stage ",
|
|
1487
2890
|
},
|
|
1488
2891
|
{
|
|
1489
2892
|
"artifacts": false,
|
|
1490
|
-
"job": "
|
|
2893
|
+
"job": "www 🔨 docker | stage ",
|
|
1491
2894
|
},
|
|
1492
2895
|
],
|
|
1493
2896
|
"retry": {
|
|
@@ -1503,7 +2906,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1503
2906
|
},
|
|
1504
2907
|
],
|
|
1505
2908
|
"script": [
|
|
1506
|
-
"echo $
|
|
2909
|
+
"echo $CL_stage_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1507
2910
|
",
|
|
1508
2911
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1509
2912
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
@@ -1514,24 +2917,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1514
2917
|
"docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1515
2918
|
"docker push europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1516
2919
|
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1517
|
-
"
|
|
1518
|
-
"echo "ensuring Database..."",
|
|
1519
|
-
"gcloud sql databases create pan-test-app-stage-api --instance=instancename --project projectId",
|
|
1520
|
-
"set -e",
|
|
1521
|
-
"set +e",
|
|
1522
|
-
"gcloud scheduler jobs create http pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1523
|
-
"set -e",
|
|
1524
|
-
"gcloud scheduler jobs update http pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6 --schedule="0 * * * *" --uri="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run" --http-method POST --oauth-service-account-email $GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com",
|
|
1525
|
-
"set +e",
|
|
1526
|
-
"gcloud beta run jobs create pan-test-app-stage-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi",
|
|
1527
|
-
"set -e",
|
|
1528
|
-
"gcloud beta run jobs update pan-test-app-stage-api-migration --command="yarn,migrate" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1529
|
-
"set +e",
|
|
1530
|
-
"gcloud beta run jobs create pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi",
|
|
1531
|
-
"set -e",
|
|
1532
|
-
"gcloud beta run jobs update pan-test-app-stage-api-send-reminders --command="yarn,job:send-reminders" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --memory=512Mi --env-vars-file=____envvars.yaml",
|
|
1533
|
-
"gcloud run deploy pan-test-app-stage-api --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --set-cloudsql-instances=projectId:region:instancename --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated --min-instances=0 --max-instances=5",
|
|
1534
|
-
"gcloud beta run jobs execute pan-test-app-stage-api-migration --project google-project-id --region=europe-west6",
|
|
2920
|
+
"gcloud run deploy pan-test-app-stage-www --command="yarn,start" --image europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project google-project-id --region=europe-west6 --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=node --env-vars-file=____envvars.yaml --allow-unauthenticated",
|
|
1535
2921
|
"docker image rm europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
|
|
1536
2922
|
],
|
|
1537
2923
|
"services": [
|
|
@@ -1544,25 +2930,18 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1544
2930
|
],
|
|
1545
2931
|
"stage": "deploy stage",
|
|
1546
2932
|
"variables": {
|
|
1547
|
-
"
|
|
2933
|
+
"API_URL": "https://pan-test-app-stage-api-undefined",
|
|
2934
|
+
"APP_DIR": "www",
|
|
1548
2935
|
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1549
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migration": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run",
|
|
1550
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_send_reminders": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run",
|
|
1551
|
-
"CLOUD_SQL_INSTANCE_CONNECTION_NAME": "projectId:region:instancename",
|
|
1552
|
-
"DATABASE_JDBC_URL": "jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD",
|
|
1553
|
-
"DATABASE_URL": "postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME",
|
|
1554
|
-
"DB_NAME": "pan-test-app-stage-api",
|
|
1555
|
-
"DB_PASSWORD": "$CL_stage_api_DB_PASSWORD",
|
|
1556
|
-
"DB_USER": "my-user",
|
|
1557
2936
|
"DOCKERFILE_ADDITIONS": undefined,
|
|
1558
2937
|
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1559
2938
|
"DOCKER_BUILDKIT": "1",
|
|
1560
|
-
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/
|
|
2939
|
+
"DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
|
|
1561
2940
|
"DOCKER_DIR": ".",
|
|
1562
2941
|
"DOCKER_DRIVER": "overlay2",
|
|
1563
2942
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1564
2943
|
"DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
|
|
1565
|
-
"DOCKER_IMAGE_NAME": "stage/
|
|
2944
|
+
"DOCKER_IMAGE_NAME": "stage/www",
|
|
1566
2945
|
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1567
2946
|
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1568
2947
|
"DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
|
|
@@ -1570,37 +2949,30 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1570
2949
|
"ENV_SHORT": "stage",
|
|
1571
2950
|
"ENV_TYPE": "stage",
|
|
1572
2951
|
"ENV_VARS": "ENV_SHORT: 'stage'
|
|
1573
|
-
APP_DIR: '
|
|
2952
|
+
APP_DIR: 'www'
|
|
1574
2953
|
ENV_TYPE: 'stage'
|
|
1575
|
-
HOST: 'pan-test-app-stage-
|
|
1576
|
-
ROOT_URL: 'https://pan-test-app-stage-
|
|
1577
|
-
HOST_CANONICAL: 'pan-test-app-stage-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
DB_USER: 'my-user'
|
|
1581
|
-
DB_PASSWORD: '$CL_stage_api_DB_PASSWORD'
|
|
1582
|
-
DATABASE_URL: 'postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME'
|
|
1583
|
-
DATABASE_JDBC_URL: 'jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD'
|
|
1584
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migration: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migration:run'
|
|
1585
|
-
CLOUD_RUN_JOB_TRIGGER_URL_send_reminders: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-send-reminders:run'
|
|
1586
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","CLOUD_SQL_INSTANCE_CONNECTION_NAME","DB_NAME","DB_USER","DB_PASSWORD","DATABASE_URL","DATABASE_JDBC_URL","CLOUD_RUN_JOB_TRIGGER_URL_migration","CLOUD_RUN_JOB_TRIGGER_URL_send_reminders","GCLOUD_DEPLOY_credentialsKey"]'
|
|
2954
|
+
HOST: 'pan-test-app-stage-www-undefined'
|
|
2955
|
+
ROOT_URL: 'https://pan-test-app-stage-www-undefined'
|
|
2956
|
+
HOST_CANONICAL: 'pan-test-app-stage-www-undefined'
|
|
2957
|
+
API_URL: 'https://pan-test-app-stage-api-undefined'
|
|
2958
|
+
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]'
|
|
1587
2959
|
",
|
|
1588
|
-
"GCLOUD_DEPLOY_credentialsKey": "$
|
|
1589
|
-
"HOST": "pan-test-app-stage-
|
|
1590
|
-
"HOST_CANONICAL": "pan-test-app-stage-
|
|
2960
|
+
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
|
|
2961
|
+
"HOST": "pan-test-app-stage-www-undefined",
|
|
2962
|
+
"HOST_CANONICAL": "pan-test-app-stage-www-undefined",
|
|
1591
2963
|
"KUBERNETES_CPU_LIMIT": "1",
|
|
1592
2964
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1593
2965
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1594
2966
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1595
|
-
"ROOT_URL": "https://pan-test-app-stage-
|
|
1596
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","
|
|
2967
|
+
"ROOT_URL": "https://pan-test-app-stage-www-undefined",
|
|
2968
|
+
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey","API_URL"]",
|
|
1597
2969
|
},
|
|
1598
2970
|
},
|
|
1599
|
-
"
|
|
2971
|
+
"www 🛑 Stop ⚠️ | prod ": {
|
|
1600
2972
|
"environment": {
|
|
1601
2973
|
"action": "stop",
|
|
1602
|
-
"name": "prod/
|
|
1603
|
-
"url": "https://pan-test-app-prod-
|
|
2974
|
+
"name": "prod/www",
|
|
2975
|
+
"url": "https://pan-test-app-prod-www-undefined",
|
|
1604
2976
|
},
|
|
1605
2977
|
"image": "path/to/docker/gcloud:the-version",
|
|
1606
2978
|
"interruptible": true,
|
|
@@ -1624,15 +2996,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1624
2996
|
},
|
|
1625
2997
|
],
|
|
1626
2998
|
"script": [
|
|
1627
|
-
"echo $
|
|
2999
|
+
"echo $CL_prod_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1628
3000
|
",
|
|
1629
3001
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1630
|
-
"gcloud run services delete pan-test-app-prod-
|
|
1631
|
-
"set +e",
|
|
1632
|
-
"gcloud scheduler jobs delete pan-test-app-prod-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
1633
|
-
"set -e",
|
|
1634
|
-
"gcloud beta run jobs delete pan-test-app-prod-api-migration --project google-project-id --region=europe-west6",
|
|
1635
|
-
"gcloud beta run jobs delete pan-test-app-prod-api-send-reminders --project google-project-id --region=europe-west6",
|
|
3002
|
+
"gcloud run services delete pan-test-app-prod-www --project google-project-id --region=europe-west6",
|
|
1636
3003
|
],
|
|
1637
3004
|
"stage": "stop prod",
|
|
1638
3005
|
"variables": {
|
|
@@ -1644,11 +3011,11 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1644
3011
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1645
3012
|
},
|
|
1646
3013
|
},
|
|
1647
|
-
"
|
|
3014
|
+
"www 🛑 Stop ⚠️ | stage ": {
|
|
1648
3015
|
"environment": {
|
|
1649
3016
|
"action": "stop",
|
|
1650
|
-
"name": "stage/
|
|
1651
|
-
"url": "https://pan-test-app-stage-
|
|
3017
|
+
"name": "stage/www",
|
|
3018
|
+
"url": "https://pan-test-app-stage-www-undefined",
|
|
1652
3019
|
},
|
|
1653
3020
|
"image": "path/to/docker/gcloud:the-version",
|
|
1654
3021
|
"interruptible": true,
|
|
@@ -1672,15 +3039,10 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CA
|
|
|
1672
3039
|
},
|
|
1673
3040
|
],
|
|
1674
3041
|
"script": [
|
|
1675
|
-
"echo $
|
|
3042
|
+
"echo $CL_stage_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
|
|
1676
3043
|
",
|
|
1677
3044
|
"gcloud auth activate-service-account --key-file="./____keyfile.json"",
|
|
1678
|
-
"gcloud run services delete pan-test-app-stage-
|
|
1679
|
-
"set +e",
|
|
1680
|
-
"gcloud scheduler jobs delete pan-test-app-stage-api-send-reminders-scheduler --project=google-project-id --location europe-west6",
|
|
1681
|
-
"set -e",
|
|
1682
|
-
"gcloud beta run jobs delete pan-test-app-stage-api-migration --project google-project-id --region=europe-west6",
|
|
1683
|
-
"gcloud beta run jobs delete pan-test-app-stage-api-send-reminders --project google-project-id --region=europe-west6",
|
|
3045
|
+
"gcloud run services delete pan-test-app-stage-www --project google-project-id --region=europe-west6",
|
|
1684
3046
|
],
|
|
1685
3047
|
"stage": "stop stage",
|
|
1686
3048
|
"variables": {
|