@newskit-render/core 2.26.0 → 2.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ # vim: et sr sw=2 ts=2 smartindent:
3
+ # You must set up a Personal API Key in CircleCi for this to work and place it in your context as CIRCLE_TOKEN_CI_USER
4
+
5
+ set -x
6
+
7
+ REPOSITORY_TYPE=github
8
+
9
+ deploy() {
10
+ WORKFLOW_NAME=$1
11
+ TAG=$2
12
+
13
+ PARAMETERS="\"run_build_workflow\":false, \"run_${WORKFLOW_NAME}\":true"
14
+
15
+ DATA="{ \"tag\": \"${TAG}\", \"parameters\": { ${PARAMETERS} } }"
16
+ echo "Triggering pipeline with data:"
17
+ echo -e " $DATA"
18
+
19
+ URL="https://circleci.com/api/v2/project/${REPOSITORY_TYPE}/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/pipeline"
20
+ HTTP_RESPONSE=$(curl -u "${CIRCLE_TOKEN_CI_USER}:" -o response.txt -w "%{http_code}" --silent --fail --show-error -X POST --header "Content-Type: application/json" -d "$DATA" $URL)
21
+
22
+ if [ $? -eq 0 ]; then
23
+ echo -e "\e[92mReceived status code: ${HTTP_RESPONSE}\e[0m"
24
+ echo "API call succeeded."
25
+ echo "Response:"
26
+ cat response.txt
27
+ else
28
+ echo -e "\e[93mReceived status code: ${HTTP_RESPONSE}\e[0m"
29
+ echo "Response:"
30
+ cat response.txt
31
+ exit 1
32
+ fi
33
+ }
34
+
35
+ (
36
+ deploy $1 $2
37
+ )
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.26.0](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.26.0-alpha.0...@newskit-render/core@2.26.0) (2022-11-29)
7
+
8
+ **Note:** Version bump only for package @newskit-render/core
9
+
10
+
11
+
12
+
13
+
6
14
  ## [2.25.1](https://github.com/newscorp-ghfb/ncu-newskit-render/compare/@newskit-render/core@2.25.1-alpha.0...@newskit-render/core@2.25.1) (2022-11-28)
7
15
 
8
16
  **Note:** Version bump only for package @newskit-render/core
@@ -1,5 +1,19 @@
1
1
  version: 2.1
2
2
 
3
+ parameters:
4
+ run_build_workflow:
5
+ type: boolean
6
+ default: true
7
+ run_deploy_to_dev_workflow:
8
+ type: boolean
9
+ default: false
10
+ run_deploy_to_staging_workflow:
11
+ type: boolean
12
+ default: false
13
+ run_deploy_to_prod_workflow:
14
+ type: boolean
15
+ default: false
16
+
3
17
  orbs:
4
18
  slack: circleci/slack@3.4.2
5
19
  browser-tools: circleci/browser-tools@1.3.0
@@ -654,65 +668,6 @@ jobs:
654
668
  APP_ID=$(curl -s -X GET "https://api.newrelic.com/v2/applications.json" -H "X-Api-Key:${TF_VAR_newrelic_api_key}" -G -d "filter[name]=<% PROJECT_PREFIX >:<% PROJECT_NAME >:<< parameters.environment >>" | jq -r '.applications[]' | jq -r '.id')
655
669
  curl -X POST "https://api.newrelic.com/v2/applications/$APP_ID/deployments.json" -H "Api-Key:${TF_VAR_newrelic_api_key}" -i -H "Content-Type: application/json" -d '{ "deployment": { "revision": "'$CURRENT_VERSION'" } }'
656
670
 
657
- create_release:
658
- executor: helm
659
- working_directory: ~/project
660
- steps:
661
- - run:
662
- name: Install ssh client and npm
663
- command: apk add openssh-client npm
664
- - add_ssh_keys:
665
- fingerprints:
666
- - '<% SSH_KEY >'
667
- - checkout
668
- - attach_workspace:
669
- at: ~/project
670
- - aws_assume_role:
671
- aws_access_key_id: ${RELEASE_AWS_ACCESS_KEY_ID}
672
- aws_secret_key: ${RELEASE_AWS_SECRET_ACCESS_KEY}
673
- aws_assume_role_arn: ${BOOK_RELEASE_ROLE_ARN}
674
- job_type: release
675
- - run:
676
- name: Create release request
677
- command: |
678
- source $BASH_ENV
679
- CURRENT_VERSION=$(jq -r .version ./package.json)
680
-
681
- npm install --no-save release-documentation-cli@5.2.4
682
-
683
- # If your tags are prefixed (i.e. lerna) check the --tagFilter parameter
684
- echo "Creating a release request for $CURRENT_VERSION to be deployed to production."
685
- # Instead of booking real releases in the production google sheet and RoD, post rows to the debug google sheet (found next to the the production sheet)
686
- # Useful when first setting up booking releases
687
- # Remove when all config is validated
688
- $(npm bin)/release new --isDebug --productOwner "$PRODUCT_OWNER" --runOnCi --bookRelease
689
-
690
- promote_release:
691
- executor: node
692
- working_directory: ~/project
693
- steps:
694
- - add_ssh_keys:
695
- fingerprints:
696
- - '<% SSH_KEY >'
697
- - checkout
698
- - attach_workspace:
699
- at: ~/project
700
- - run:
701
- name: Promote release
702
- command: |
703
- export CURRENT_VERSION=$(jq -r .version ./package.json)
704
- echo "export CURRENT_VERSION=$CURRENT_VERSION" >> $BASH_ENV
705
-
706
- npm install --no-save release-documentation-cli@5.2.4
707
-
708
- # If your tags are prefixed (i.e. lerna) check the --tagFilter parameter
709
- $(npm bin)/release promote
710
- echo "$CURRENT_VERSION published to npm"
711
- - slack/notify:
712
- color: '#42e2f4'
713
- message: "Hi all, \n <% PROJECT_NAME > version <% GIT_REPO >/releases/tag/${CURRENT_VERSION} has been released."
714
- webhook: ${SLACK_RELEASES_WEBHOOK}
715
-
716
671
  bump_version:
717
672
  executor: node
718
673
  working_directory: ~/project
@@ -756,6 +711,69 @@ jobs:
756
711
  "body": "This PR has been automatically deployed [here]('https://pr-${PR_NUMBER}-<% PROJECT_NAME >.ceng-dev.newsuk.tech')."
757
712
  }'
758
713
 
714
+ slack_deploy_approval:
715
+ parameters:
716
+ approval:
717
+ type: boolean
718
+ default: false
719
+ version:
720
+ type: string
721
+ default: ${CIRCLE_TAG}
722
+ package_name:
723
+ type: string
724
+ default: <% PROJECT_NAME >
725
+ environment:
726
+ type: string
727
+ executor: node
728
+ steps:
729
+ - checkout
730
+ - attach_workspace:
731
+ at: ~/project
732
+ - when:
733
+ condition: << parameters.approval >>
734
+ steps:
735
+ - slack/approval:
736
+ message: 'Deployment of << parameters.package_name >>@<< parameters.version >> to << parameters.environment >> requires approval'
737
+ webhook: ${SLACK_CIRCLECI_DEPLOYMENTS_WEBHOOK}
738
+ color: '#32a852'
739
+ - unless:
740
+ condition: << parameters.approval >>
741
+ steps:
742
+ - slack/approval:
743
+ message: '<< parameters.package_name >>@<< parameters.version >> is being deployed to << parameters.environment >>'
744
+ webhook: ${SLACK_CIRCLECI_DEPLOYMENTS_WEBHOOK}
745
+ color: '#32a852'
746
+
747
+ trigger_workflow_by_workspace:
748
+ parameters:
749
+ workflow:
750
+ type: string
751
+ executor: node
752
+ steps:
753
+ - checkout
754
+ - attach_workspace:
755
+ at: ~/project
756
+ - run:
757
+ command: cat package.json | jq -r .version
758
+ - run:
759
+ name: Trigger << parameters.workflow >>
760
+ command: |
761
+ set -x
762
+ VERSION=v$(cat package.json | jq -r .version)
763
+ .ci/trigger-circleci-workflow.sh << parameters.workflow >> $VERSION
764
+
765
+ trigger_workflow_by_circle_tag:
766
+ parameters:
767
+ workflow:
768
+ type: string
769
+ executor: node
770
+ steps:
771
+ - checkout
772
+ - run:
773
+ name: Trigger << parameters.workflow >>
774
+ command: |
775
+ .ci/trigger-circleci-workflow.sh << parameters.workflow >> $CIRCLE_TAG
776
+
759
777
  # Optional filters assuming trunk based development
760
778
  ## For PR workflow
761
779
  only_on_pr_branch: &only_on_pr_branch
@@ -776,6 +794,11 @@ only_on_master_branch: &only_on_master_branch
776
794
  - master
777
795
  - main
778
796
 
797
+ only_on_tags: &only_on_tags
798
+ filters:
799
+ tags:
800
+ only: /^v.*/
801
+
779
802
  workflows:
780
803
  pull_request:
781
804
  jobs:
@@ -860,8 +883,10 @@ workflows:
860
883
 
861
884
  build_and_deploy:
862
885
  when:
863
- not:
864
- equal: [scheduled_pipeline, << pipeline.trigger_source >>]
886
+ and:
887
+ - equal: [ true, << pipeline.parameters.run_build_workflow >> ]
888
+ - not:
889
+ equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
865
890
  jobs:
866
891
  - install_deps:
867
892
  name: install_deps
@@ -916,18 +941,59 @@ workflows:
916
941
  - e2e_test
917
942
  - init_aws
918
943
  - deploy_terraform_ecr
919
- - upgrade_helm:
944
+ - trigger_workflow_by_workspace:
920
945
  <<: *only_on_master_branch
921
946
  context: <% PROJECT_NAME >-dev
947
+ name: trigger_deploy_to_dev_workflow
948
+ workflow: deploy_to_dev_workflow
949
+ requires:
950
+ - publish_docker
951
+
952
+ deploy_to_dev_workflow:
953
+ when:
954
+ and:
955
+ - equal: [ true, << pipeline.parameters.run_deploy_to_dev_workflow >> ]
956
+ - not:
957
+ equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
958
+ jobs:
959
+ - slack_deploy_approval:
960
+ <<: *only_on_tags
961
+ context: <% PROJECT_NAME >-dev
962
+ approval: false
963
+ environment: DEV
964
+ - install_deps:
965
+ name: install_deps
966
+ context: <% PROJECT_NAME >-dev
967
+ <<: *only_on_tags
968
+ - init_aws:
969
+ <<: *only_on_tags
970
+ context: <% PROJECT_NAME >-dev
971
+ name: init_aws_eks_dev
972
+ job_type: 'eks_dev'
973
+ requires:
974
+ - install_deps
975
+ - init_aws:
976
+ <<: *only_on_tags
977
+ context: <% PROJECT_NAME >-dev
978
+ name: init_aws
979
+ aws_access_key_id: ${ECR_AWS_ACCESS_KEY_ID}
980
+ aws_secret_key: ${ECR_AWS_SECRET_ACCESS_KEY}
981
+ aws_assume_role_arn: ${ECR_AWS_ASSUME_ROLE_ARN}
982
+ update_kubeconfig: false
983
+ requires:
984
+ - install_deps
985
+ - upgrade_helm:
986
+ <<: *only_on_tags
987
+ context: <% PROJECT_NAME >-dev
922
988
  name: deploy_to_dev
923
989
  create: true
924
990
  environment: dev
925
991
  node_env: development
926
992
  requires:
993
+ - init_aws
927
994
  - init_aws_eks_dev
928
- - publish_docker
929
995
  - deploy_terraform:
930
- <<: *only_on_master_branch
996
+ <<: *only_on_tags
931
997
  context: <% PROJECT_NAME >-dev
932
998
  name: deploy_terraform_newrelic_dev
933
999
  project: '<% PROJECT_NAME >'
@@ -936,13 +1002,32 @@ workflows:
936
1002
  apply: true
937
1003
  requires:
938
1004
  - deploy_to_dev
1005
+ - trigger_workflow_by_circle_tag:
1006
+ <<: *only_on_tags
1007
+ context: <% PROJECT_NAME >-dev
1008
+ name: trigger_deploy_to_staging_workflow
1009
+ workflow: deploy_to_staging_workflow
1010
+ requires:
1011
+ - deploy_terraform_newrelic_dev
1012
+
1013
+ deploy_to_staging_workflow:
1014
+ when:
1015
+ and:
1016
+ - equal: [ true, << pipeline.parameters.run_deploy_to_staging_workflow >> ]
1017
+ - not:
1018
+ equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
1019
+ jobs:
1020
+ - slack_deploy_approval:
1021
+ <<: *only_on_tags
1022
+ context: <% PROJECT_NAME >-dev
1023
+ name: slack_deploy_approval
1024
+ approval: true
1025
+ environment: STAGING
939
1026
  - approve_deploy_to_staging:
940
- <<: *only_on_master_branch
1027
+ <<: *only_on_tags
941
1028
  type: approval
942
- requires:
943
- - deploy_to_dev
944
1029
  - init_aws:
945
- <<: *only_on_master_branch
1030
+ <<: *only_on_tags
946
1031
  context: <% PROJECT_NAME >-dev
947
1032
  name: init_aws_staging
948
1033
  aws_access_key_id: ${ECR_AWS_ACCESS_KEY_ID}
@@ -952,21 +1037,21 @@ workflows:
952
1037
  requires:
953
1038
  - approve_deploy_to_staging
954
1039
  - init_aws:
955
- <<: *only_on_master_branch
1040
+ <<: *only_on_tags
956
1041
  name: init_aws_eks_staging
957
1042
  context: <% PROJECT_NAME >-stage
958
1043
  job_type: 'eks_staging'
959
1044
  requires:
960
1045
  - init_aws_staging
961
1046
  - upgrade_helm:
962
- <<: *only_on_master_branch
1047
+ <<: *only_on_tags
963
1048
  name: deploy_to_staging
964
1049
  context: <% PROJECT_NAME >-stage
965
1050
  environment: staging
966
1051
  requires:
967
1052
  - init_aws_eks_staging
968
1053
  - deploy_terraform:
969
- <<: *only_on_master_branch
1054
+ <<: *only_on_tags
970
1055
  context: <% PROJECT_NAME >-stage
971
1056
  name: deploy_terraform_newrelic_staging
972
1057
  project: '<% PROJECT_NAME >'
@@ -975,13 +1060,32 @@ workflows:
975
1060
  apply: true
976
1061
  requires:
977
1062
  - deploy_to_staging
978
- - approve_deploy_to_prod:
979
- <<: *only_on_master_branch
980
- type: approval
1063
+ - trigger_workflow_by_circle_tag:
1064
+ <<: *only_on_tags
1065
+ context: <% PROJECT_NAME >-dev
1066
+ name: trigger_deploy_to_prod_workflow
1067
+ workflow: deploy_to_prod_workflow
981
1068
  requires:
982
1069
  - deploy_to_staging
1070
+
1071
+ deploy_to_prod_workflow:
1072
+ when:
1073
+ and:
1074
+ - equal: [ true, << pipeline.parameters.run_deploy_to_prod_workflow >> ]
1075
+ - not:
1076
+ equal: [ scheduled_pipeline, << pipeline.trigger_source >> ]
1077
+ jobs:
1078
+ - slack_deploy_approval:
1079
+ <<: *only_on_tags
1080
+ context: <% PROJECT_NAME >-dev
1081
+ name: slack_deploy_approval
1082
+ approval: true
1083
+ environment: PROD
1084
+ - approve_deploy_to_prod:
1085
+ <<: *only_on_tags
1086
+ type: approval
983
1087
  - init_aws:
984
- <<: *only_on_master_branch
1088
+ <<: *only_on_tags
985
1089
  context: <% PROJECT_NAME >-dev
986
1090
  name: init_aws_prod
987
1091
  aws_access_key_id: ${ECR_AWS_ACCESS_KEY_ID}
@@ -990,29 +1094,22 @@ workflows:
990
1094
  update_kubeconfig: false
991
1095
  requires:
992
1096
  - approve_deploy_to_prod
993
- - create_release:
994
- <<: *only_on_master_branch
995
- name: create_release
996
- context: <% PROJECT_NAME >-prod
997
- requires:
998
- - bump_version
999
- - approve_deploy_to_prod
1000
1097
  - init_aws:
1001
- <<: *only_on_master_branch
1098
+ <<: *only_on_tags
1002
1099
  name: init_aws_eks_prod
1003
1100
  context: <% PROJECT_NAME >-prod
1004
1101
  job_type: 'eks_prod'
1005
1102
  requires:
1006
1103
  - init_aws_prod
1007
1104
  - upgrade_helm:
1008
- <<: *only_on_master_branch
1105
+ <<: *only_on_tags
1009
1106
  name: deploy_to_prod
1010
1107
  context: <% PROJECT_NAME >-prod
1011
1108
  environment: prod
1012
1109
  requires:
1013
1110
  - init_aws_eks_prod
1014
1111
  - deploy_terraform:
1015
- <<: *only_on_master_branch
1112
+ <<: *only_on_tags
1016
1113
  context: <% PROJECT_NAME >-prod
1017
1114
  name: deploy_terraform_newrelic_prod
1018
1115
  project: '<% PROJECT_NAME >'
@@ -1021,12 +1118,6 @@ workflows:
1021
1118
  apply: true
1022
1119
  requires:
1023
1120
  - deploy_to_prod
1024
- - promote_release:
1025
- <<: *only_on_master_branch
1026
- name: promote_release
1027
- context: <% PROJECT_NAME >-prod
1028
- requires:
1029
- - deploy_to_prod
1030
1121
 
1031
1122
  # You must go to project setting > triggers and add a trigger call remove_old_environments
1032
1123
  # in CircleCi. This should be set to be triggered at midnight or around that time.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newskit-render/core",
3
- "version": "2.26.0",
3
+ "version": "2.27.0",
4
4
  "description": "Newskit Render - Core package",
5
5
  "author": "",
6
6
  "license": "UNLICENSED",