@newskit-render/core 0.0.0-d55b7d88
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.
- package/.ci/trigger-circleci-workflow.sh +37 -0
- package/.eslintignore +23 -0
- package/.eslintrc +74 -0
- package/.prettierignore +19 -0
- package/.prettierrc +7 -0
- package/CHANGELOG.md +7638 -0
- package/Dockerfile +14 -0
- package/Dockerfile.withNewRelic +15 -0
- package/README.md +274 -0
- package/__tests__/pages/__snapshots__/brightcove.test.tsx.snap +20 -0
- package/__tests__/pages/__snapshots__/home.test.tsx.snap +1195 -0
- package/__tests__/pages/brightcove.test.tsx +34 -0
- package/__tests__/pages/empty.test.tsx +10 -0
- package/__tests__/pages/home.test.tsx +16 -0
- package/app-context/InstrumentationContextProvider.tsx +36 -0
- package/assets/fontFamily.ts +416 -0
- package/assets/fonts/Graphik-Black-App.ttf +0 -0
- package/assets/fonts/Graphik-BlackItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Bold-App.ttf +0 -0
- package/assets/fonts/Graphik-BoldItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Extralight-App.ttf +0 -0
- package/assets/fonts/Graphik-ExtralightItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Light-App.ttf +0 -0
- package/assets/fonts/Graphik-LightItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Medium-App.ttf +0 -0
- package/assets/fonts/Graphik-Medium-Web.woff2 +0 -0
- package/assets/fonts/Graphik-MediumItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Regular-App.ttf +0 -0
- package/assets/fonts/Graphik-Regular-Web.woff2 +0 -0
- package/assets/fonts/Graphik-RegularItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Semibold-App.ttf +0 -0
- package/assets/fonts/Graphik-Semibold-Web.woff2 +0 -0
- package/assets/fonts/Graphik-SemiboldItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Super-App.ttf +0 -0
- package/assets/fonts/Graphik-SuperItalic-App.ttf +0 -0
- package/assets/fonts/Graphik-Thin-App.ttf +0 -0
- package/assets/fonts/Graphik-ThinItalic-App.ttf +0 -0
- package/assets/fonts/Montserrat-Black.ttf +0 -0
- package/assets/fonts/Montserrat-BlackItalic.ttf +0 -0
- package/assets/fonts/Montserrat-Bold.ttf +0 -0
- package/assets/fonts/Montserrat-BoldItalic.ttf +0 -0
- package/assets/fonts/Montserrat-ExtraBold.ttf +0 -0
- package/assets/fonts/Montserrat-ExtraBoldItalic.ttf +0 -0
- package/assets/fonts/Montserrat-ExtraLight.ttf +0 -0
- package/assets/fonts/Montserrat-ExtraLightItalic.ttf +0 -0
- package/assets/fonts/Montserrat-Italic.ttf +0 -0
- package/assets/fonts/Montserrat-Light.ttf +0 -0
- package/assets/fonts/Montserrat-LightItalic.ttf +0 -0
- package/assets/fonts/Montserrat-Medium.ttf +0 -0
- package/assets/fonts/Montserrat-MediumItalic.ttf +0 -0
- package/assets/fonts/Montserrat-Regular.ttf +0 -0
- package/assets/fonts/Montserrat-SemiBold.ttf +0 -0
- package/assets/fonts/Montserrat-SemiBoldItalic.ttf +0 -0
- package/assets/fonts/Montserrat-Thin.ttf +0 -0
- package/assets/fonts/Montserrat-ThinItalic.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Black-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-BlackItalic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Bold-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Bold-Web.woff2 +0 -0
- package/assets/fonts/PublicoHeadline-BoldItalic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Extrabold-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-ExtraboldItalic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Italic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Light-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-LightItalic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Medium-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-MediumItalic-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Roman-App.ttf +0 -0
- package/assets/fonts/PublicoHeadline-Roman-Web.woff2 +0 -0
- package/assets/fonts/PublicoText-Bold-App.ttf +0 -0
- package/assets/fonts/PublicoText-BoldItalic-App.ttf +0 -0
- package/assets/fonts/PublicoText-Italic-App.ttf +0 -0
- package/assets/fonts/PublicoText-Italic-Web.woff2 +0 -0
- package/assets/fonts/PublicoText-Roman-App.ttf +0 -0
- package/assets/fonts/PublicoText-Roman-Web.woff2 +0 -0
- package/assets/fonts/PublicoText-Semibold-App.ttf +0 -0
- package/assets/fonts/PublicoText-SemiboldItalic-App.ttf +0 -0
- package/assets/fonts/Roboto-Bold.ttf +0 -0
- package/assets/fonts/Roboto-Light.ttf +0 -0
- package/assets/fonts/Roboto-Medium.ttf +0 -0
- package/assets/fonts/Roboto-Regular.ttf +0 -0
- package/assets/fonts/TheSun-Bold.ttf +0 -0
- package/assets/fonts/TheSun-BoldItalic.ttf +0 -0
- package/assets/fonts/TheSun-HeavyCondensed.ttf +0 -0
- package/assets/fonts/TheSun-HeavyNarrow.ttf +0 -0
- package/assets/fonts/TheSun-Italic.ttf +0 -0
- package/assets/fonts/TheSun-Medium.ttf +0 -0
- package/assets/fonts/TheSun-MediumItalic.ttf +0 -0
- package/assets/fonts/TheSun-Regular.ttf +0 -0
- package/assets/fonts/TimesDigital-Bold.ttf +0 -0
- package/assets/fonts/TimesDigital-BoldItalic.ttf +0 -0
- package/assets/fonts/TimesDigital-BoldSC.ttf +0 -0
- package/assets/fonts/TimesDigital-Italic.ttf +0 -0
- package/assets/fonts/TimesDigital-Regular.ttf +0 -0
- package/assets/fonts/TimesDigital-RegularSC.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-Bold.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-BoldItalic.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-BoldSC.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-Italic.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-Regular.ttf +0 -0
- package/assets/fonts/TimesDigitalW04-RegularSC.ttf +0 -0
- package/assets/fonts/TimesModern-Regular.otf +0 -0
- package/assets/fonts/attribuitions.mdx +35 -0
- package/assets/fonts/bitter-medium.woff +0 -0
- package/assets/fonts/bitter-medium.woff2 +0 -0
- package/assets/fonts/bitter-mediumitalic.woff +0 -0
- package/assets/fonts/bitter-mediumitalic.woff2 +0 -0
- package/assets/fonts/bitter-regular.woff +0 -0
- package/assets/fonts/bitter-regular.woff2 +0 -0
- package/assets/fonts/bitter-semibold.woff +0 -0
- package/assets/fonts/bitter-semibold.woff2 +0 -0
- package/assets/fonts/dmmono-medium.woff +0 -0
- package/assets/fonts/dmmono-medium.woff2 +0 -0
- package/assets/fonts/dmsans-bold-webfont.woff +0 -0
- package/assets/fonts/dmsans-bold-webfont.woff2 +0 -0
- package/assets/fonts/dmsans-bolditalic-webfont.woff +0 -0
- package/assets/fonts/dmsans-bolditalic-webfont.woff2 +0 -0
- package/assets/fonts/dmsans-italic-webfont.woff +0 -0
- package/assets/fonts/dmsans-italic-webfont.woff2 +0 -0
- package/assets/fonts/dmsans-medium-webfont.woff +0 -0
- package/assets/fonts/dmsans-medium-webfont.woff2 +0 -0
- package/assets/fonts/dmsans-mediumitalic-webfont.woff +0 -0
- package/assets/fonts/dmsans-mediumitalic-webfont.woff2 +0 -0
- package/assets/fonts/dmsans-regular-webfont.woff +0 -0
- package/assets/fonts/dmsans-regular-webfont.woff2 +0 -0
- package/assets/fonts/notosans-bold-webfont.woff +0 -0
- package/assets/fonts/notosans-bold-webfont.woff2 +0 -0
- package/assets/fonts/notosans-italic-webfont.woff +0 -0
- package/assets/fonts/notosans-italic-webfont.woff2 +0 -0
- package/assets/fonts/notosans-medium-webfont.woff +0 -0
- package/assets/fonts/notosans-medium-webfont.woff2 +0 -0
- package/assets/fonts/notosans-regular-webfont.woff +0 -0
- package/assets/fonts/notosans-regular-webfont.woff2 +0 -0
- package/assets/fonts/poppins-bold-webfont.woff +0 -0
- package/assets/fonts/poppins-bold-webfont.woff2 +0 -0
- package/assets/fonts/poppins-bolditalic-webfont.woff +0 -0
- package/assets/fonts/poppins-bolditalic-webfont.woff2 +0 -0
- package/assets/fonts/poppins-extrabold-webfont.woff +0 -0
- package/assets/fonts/poppins-extrabold-webfont.woff2 +0 -0
- package/assets/fonts/poppins-extrabolditalic-webfont.woff +0 -0
- package/assets/fonts/poppins-extrabolditalic-webfont.woff2 +0 -0
- package/assets/fonts/poppins-italic-webfont.woff +0 -0
- package/assets/fonts/poppins-italic-webfont.woff2 +0 -0
- package/assets/fonts/poppins-light-webfont.woff +0 -0
- package/assets/fonts/poppins-light-webfont.woff2 +0 -0
- package/assets/fonts/poppins-lightitalic-webfont.woff +0 -0
- package/assets/fonts/poppins-lightitalic-webfont.woff2 +0 -0
- package/assets/fonts/poppins-medium-webfont.woff +0 -0
- package/assets/fonts/poppins-medium-webfont.woff2 +0 -0
- package/assets/fonts/poppins-mediumitalic-webfont.woff +0 -0
- package/assets/fonts/poppins-mediumitalic-webfont.woff2 +0 -0
- package/assets/fonts/poppins-regular-webfont.woff +0 -0
- package/assets/fonts/poppins-regular-webfont.woff2 +0 -0
- package/assets/fonts/poppins-semibold-webfont.woff +0 -0
- package/assets/fonts/poppins-semibold-webfont.woff2 +0 -0
- package/assets/fonts/poppins-semibolditalic-webfont.woff +0 -0
- package/assets/fonts/poppins-semibolditalic-webfont.woff2 +0 -0
- package/assets/fonts/source-serif-pro-600.woff +0 -0
- package/assets/fonts/source-serif-pro-600.woff2 +0 -0
- package/assets/fonts/source-serif-pro-600italic.woff +0 -0
- package/assets/fonts/source-serif-pro-600italic.woff2 +0 -0
- package/assets/fonts/source-serif-pro-700.woff +0 -0
- package/assets/fonts/source-serif-pro-700.woff2 +0 -0
- package/assets/fonts/source-serif-pro-700italic.woff +0 -0
- package/assets/fonts/source-serif-pro-700italic.woff2 +0 -0
- package/assets/fonts/source-serif-pro-italic.woff +0 -0
- package/assets/fonts/source-serif-pro-italic.woff2 +0 -0
- package/assets/fonts/source-serif-pro-regular.woff +0 -0
- package/assets/fonts/source-serif-pro-regular.woff2 +0 -0
- package/components/AccountDropdown/AccountDropdown.tsx +65 -0
- package/components/AccountDropdown/__tests__/AcountDropdown.test.tsx +83 -0
- package/components/AccountDropdown/accounts.ts +47 -0
- package/components/AccountDropdown/index.tsx +2 -0
- package/components/AccountDropdown/utils.ts +21 -0
- package/components/ErrorPage/ErrorPage.tsx +135 -0
- package/components/ad/index.tsx +35 -0
- package/components/article/Highlights.tsx +77 -0
- package/components/article/MetaBox.tsx +50 -0
- package/components/article/RelatedArticles.tsx +53 -0
- package/components/article/RelatedTopics.tsx +59 -0
- package/components/article/ShareBarComponent.tsx +53 -0
- package/components/article/__tests__/__snapshots__/index.test.tsx.snap +1568 -0
- package/components/article/__tests__/index.test.tsx +171 -0
- package/components/article/__tests__/mocks.ts +105 -0
- package/components/article/index.tsx +320 -0
- package/components/common/BackToHomepage.tsx +37 -0
- package/components/common/NavLink.tsx +26 -0
- package/components/common/NewskitLogo.tsx +52 -0
- package/components/common/NewskitLogoShort.tsx +48 -0
- package/components/common/SectionTitleBar.tsx +57 -0
- package/components/common/ShareButton.tsx +18 -0
- package/components/common/ViewMoreButton.tsx +20 -0
- package/components/common/iconNavLink/IconNavLink.tsx +70 -0
- package/components/common/iconNavLink/__tests__/IconNavLink.test.tsx +35 -0
- package/components/common/iconNavLink/index.ts +3 -0
- package/components/common/iconNavLink/types.ts +24 -0
- package/components/common/icons/IconAccount.tsx +13 -0
- package/components/common/icons/IconFilledTwitter.tsx +14 -0
- package/components/common/icons/StyledIconFilledChevronRight.tsx +12 -0
- package/components/footer/__snapshots__/index.test.tsx.snap +192 -0
- package/components/footer/index.test.tsx +13 -0
- package/components/footer/index.tsx +151 -0
- package/components/header/banner-messages.ts +39 -0
- package/components/header/index.tsx +52 -0
- package/components/header/navigation-links.ts +20 -0
- package/components/layout/Gutter.tsx +11 -0
- package/components/layout/LayoutTemplate.tsx +26 -0
- package/components/layout/MainGrid.tsx +66 -0
- package/components/layout/index.tsx +3 -0
- package/components/layout/layoutTypes.ts +13 -0
- package/components/section/ArticleSlice.tsx +35 -0
- package/components/section/CollectionBlock.tsx +54 -0
- package/components/section/SectionContext.tsx +9 -0
- package/components/section/__tests__/ArticleSlice.test.tsx +128 -0
- package/components/section/__tests__/CollectionBlock.test.tsx +83 -0
- package/components/section/__tests__/pageBlock.test.tsx +24 -0
- package/components/section/__tests__/sectionUtils.test.ts +94 -0
- package/components/section/index.tsx +39 -0
- package/components/section/layouts/Block.tsx +79 -0
- package/components/section/layouts/FallBack.tsx +24 -0
- package/components/section/layouts/Lead.tsx +43 -0
- package/components/section/layouts/Rows.tsx +82 -0
- package/components/section/layouts/SectionTitle.tsx +57 -0
- package/components/section/layouts/__tests__/Lead.test.tsx +37 -0
- package/components/section/layouts/__tests__/Rows.test.tsx +40 -0
- package/components/section/layouts/__tests__/SectionTitle.test.tsx +37 -0
- package/components/section/layouts/__tests__/__snapshots__/Lead.test.tsx.snap +180 -0
- package/components/section/layouts/__tests__/__snapshots__/SectionTitle.test.tsx.snap +354 -0
- package/components/section/layouts/gridUtils.ts +21 -0
- package/components/section/layouts/index.tsx +4 -0
- package/components/section/layouts/types.ts +13 -0
- package/components/section/pageBlock.tsx +23 -0
- package/components/section/sectionUtils.ts +61 -0
- package/components/teaser/index.test.tsx +50 -0
- package/components/teaser/index.tsx +64 -0
- package/components/teaser/teaserVariants.ts +33 -0
- package/components/teaser/variant-types.ts +49 -0
- package/components/teaser/variants/featureVariant.ts +42 -0
- package/components/teaser/variants/horizontal.ts +14 -0
- package/components/teaser/variants/titleTeaserVariant.ts +32 -0
- package/components/teaser/variants/titleVertical.ts +24 -0
- package/components/utils/index.test.ts +12 -0
- package/components/utils/index.ts +6 -0
- package/config/__tests__/index.test.ts +54 -0
- package/config/environment.ts +80 -0
- package/config/index.ts +2 -0
- package/config/multiTenancy.ts +11 -0
- package/constants/index.ts +2 -0
- package/context/app-context/AppContext.test.tsx +56 -0
- package/context/app-context/holidayStopListContextOverrides.ts +18 -0
- package/context/app-context/index.tsx +34 -0
- package/context/app-context/paymentMethodContext.tsx +70 -0
- package/context/index.tsx +2 -0
- package/context/multi-tenancy/MultiTenancy.test.tsx +48 -0
- package/context/multi-tenancy/index.tsx +32 -0
- package/css/index.ts +15 -0
- package/cypress/axe/terminal-log.js +19 -0
- package/cypress/config/visual.config.ts +11 -0
- package/cypress/config/visual.skip.config.ts +10 -0
- package/cypress/e2e/account/accessibility.cy.js +88 -0
- package/cypress/e2e/account/banners.cy.js +169 -0
- package/cypress/e2e/account/cancellation.cy.js +219 -0
- package/cypress/e2e/account/holiday-stops.cy.js +109 -0
- package/cypress/e2e/account/main-api.cy.js +102 -0
- package/cypress/e2e/account/newsletters-and-alerts.cy.js +149 -0
- package/cypress/e2e/account/newsletters-page.cy.js +69 -0
- package/cypress/e2e/account/payment-page.cy.js +98 -0
- package/cypress/e2e/account/personal-details.cy.js +1161 -0
- package/cypress/e2e/account/subscription-and-billing.cy.js +434 -0
- package/cypress/e2e/checkout/account-creation.cy.js +8 -0
- package/cypress/e2e/checkout/payment-details.cy.js +19 -0
- package/cypress/e2e/core/home-page.cy.js +6 -0
- package/cypress/e2e/help-hub/accessibility.cy.js +35 -0
- package/cypress/e2e/help-hub/article-page.cy.js +115 -0
- package/cypress/e2e/help-hub/landing-page.cy.js +94 -0
- package/cypress/e2e/help-hub/result-page.cy.js +117 -0
- package/cypress/fixtures/empty.html +10 -0
- package/cypress/fixtures/example.json +5 -0
- package/cypress/fixtures/holiday-stops.json +40 -0
- package/cypress/fixtures/paymentFailure.js +24 -0
- package/cypress/fixtures/testDates.js +26 -0
- package/cypress/support/commands.js +125 -0
- package/cypress/support/consentValues.js +5839 -0
- package/cypress/support/e2e.js +22 -0
- package/cypress/support/users.js +58 -0
- package/cypress/visual/account/print-visual-regression.cy.js +9 -0
- package/cypress/visual/account/visual-regression.cy.js +40 -0
- package/cypress/visual/empty/empty.cy.js +5 -0
- package/cypress.config.ts +38 -0
- package/helpers/__tests__/getUser.test.ts +45 -0
- package/helpers/__tests__/logger.test.ts +62 -0
- package/helpers/__tests__/useThemeDropdownObject.test.ts +49 -0
- package/helpers/a11y.ts +7 -0
- package/helpers/addCacheHeaders.ts +8 -0
- package/helpers/getUser.ts +37 -0
- package/helpers/getYear.ts +1 -0
- package/helpers/global-types.ts +186 -0
- package/helpers/logger/getWinstonLogger.ts +19 -0
- package/helpers/logger/index.ts +20 -0
- package/helpers/logger/replaceConsoleWithLogger.ts +14 -0
- package/helpers/mocks/articleMock.ts +50 -0
- package/helpers/mocks/getPageMock.ts +369 -0
- package/helpers/mocks/getRadioPostMock.ts +71 -0
- package/helpers/mocks/getRadioPostsMock.ts +26 -0
- package/helpers/mocks/getRecommendationsMock.ts +20 -0
- package/helpers/mocks/index.ts +7 -0
- package/helpers/multiTenancy.ts +19 -0
- package/helpers/setupTests.ts +5 -0
- package/helpers/test-utils.tsx +33 -0
- package/helpers/useThemeDropdownObject.tsx +73 -0
- package/infrastructure/.circleci/config.yml +1187 -0
- package/infrastructure/INFRASTRUCTURE.md +142 -0
- package/infrastructure/build_and_deploy.png +0 -0
- package/infrastructure/helm/Chart.yaml +21 -0
- package/infrastructure/helm/templates/_helpers.tpl +87 -0
- package/infrastructure/helm/templates/deployment.yaml +45 -0
- package/infrastructure/helm/templates/horizontalpodautoscaler.yaml +21 -0
- package/infrastructure/helm/templates/ingress.yaml +31 -0
- package/infrastructure/helm/templates/networkpolicy.yaml +26 -0
- package/infrastructure/helm/templates/secret.yaml +12 -0
- package/infrastructure/helm/templates/service.yaml +15 -0
- package/infrastructure/helm/values-dev.yaml +39 -0
- package/infrastructure/helm/values-local.yaml +30 -0
- package/infrastructure/helm/values-pr.yaml +40 -0
- package/infrastructure/helm/values-prod.yaml +39 -0
- package/infrastructure/helm/values-staging.yaml +39 -0
- package/infrastructure/helm/values.yaml +44 -0
- package/infrastructure/pull_request.png +0 -0
- package/infrastructure/release-documentation-cli.config.json +18 -0
- package/infrastructure/remove_pr.png +0 -0
- package/infrastructure/terraform-ecr/dev.tfvars +3 -0
- package/infrastructure/terraform-ecr/ecr.tf +69 -0
- package/infrastructure/terraform-ecr/main.tf +3 -0
- package/infrastructure/terraform-ecr/variables.tf +19 -0
- package/infrastructure/terraform-ecr/versions.tf +12 -0
- package/infrastructure/terraform-newrelic/alerts.tf +290 -0
- package/infrastructure/terraform-newrelic/dashboards.tf +347 -0
- package/infrastructure/terraform-newrelic/dev.tfvars +3 -0
- package/infrastructure/terraform-newrelic/lighthouse-script-dev.js +53 -0
- package/infrastructure/terraform-newrelic/lighthouse-script-prod.js +54 -0
- package/infrastructure/terraform-newrelic/lighthouse-script-stage.js +54 -0
- package/infrastructure/terraform-newrelic/main.tf +11 -0
- package/infrastructure/terraform-newrelic/monitors.tf +11 -0
- package/infrastructure/terraform-newrelic/prod.tfvars +3 -0
- package/infrastructure/terraform-newrelic/staging.tfvars +3 -0
- package/infrastructure/terraform-newrelic/variables.tf +33 -0
- package/infrastructure/terraform-newrelic/versions.tf +18 -0
- package/jest.config.js +40 -0
- package/jest.config.pact.js +18 -0
- package/newrelic.js +86 -0
- package/next-env.d.ts +5 -0
- package/next.config.js +95 -0
- package/package.json +127 -0
- package/pages/_app.tsx +117 -0
- package/pages/_document.tsx +112 -0
- package/pages/_error.tsx +68 -0
- package/pages/account/add/[field].tsx +34 -0
- package/pages/account/cancellation/index.tsx +22 -0
- package/pages/account/delete/confirm/index.tsx +16 -0
- package/pages/account/delete/error/index.tsx +16 -0
- package/pages/account/delete/index.tsx +16 -0
- package/pages/account/delete/success/index.tsx +16 -0
- package/pages/account/dream-team/index.tsx +19 -0
- package/pages/account/edit/[field].tsx +45 -0
- package/pages/account/family/index.tsx +19 -0
- package/pages/account/holiday-stop/index.tsx +19 -0
- package/pages/account/holiday-stop/previous-holiday-stops.tsx +19 -0
- package/pages/account/holiday-stop/upcoming-holiday-stops.tsx +19 -0
- package/pages/account/index.tsx +33 -0
- package/pages/account/newsletters/index.tsx +19 -0
- package/pages/account/newsletters-and-alerts/index.tsx +24 -0
- package/pages/account/payment/[paymentMethod].tsx +37 -0
- package/pages/account/payment/index.tsx +23 -0
- package/pages/account/payment-methods/index.tsx +21 -0
- package/pages/account/subscription-and-billing/index.tsx +29 -0
- package/pages/api/account/get-session/index.ts +33 -0
- package/pages/api/account/invoice/index.ts +35 -0
- package/pages/api/account/mutate/index.ts +8 -0
- package/pages/api/account/query/index.ts +7 -0
- package/pages/api/auth/[...nextauth].ts +11 -0
- package/pages/api/competitions-sitemap.ts +19 -0
- package/pages/api/feed.ts +23 -0
- package/pages/api/health-check.ts +7 -0
- package/pages/api/news-sitemap.ts +18 -0
- package/pages/api/pages-sitemap.ts +27 -0
- package/pages/api/robots.ts +19 -0
- package/pages/api/sitemap.ts +24 -0
- package/pages/checkout/account-creation/index.tsx +13 -0
- package/pages/checkout/payment-details/index.tsx +10 -0
- package/pages/empty.tsx +6 -0
- package/pages/help-hub/article/[title]/index.tsx +25 -0
- package/pages/help-hub/error.tsx +23 -0
- package/pages/help-hub/index.tsx +51 -0
- package/pages/help-hub/results.tsx +25 -0
- package/pages/index.tsx +19 -0
- package/pages/player/brightcove.tsx +19 -0
- package/pages/rss/create/index.tsx +18 -0
- package/pages/rss/feed/[feedId]/index.tsx +21 -0
- package/pages/rss/index.tsx +18 -0
- package/public/ads.min.js +8175 -0
- package/public/assets/display-base-header.svg +25 -0
- package/public/assets/display-personalDetails-header-sun.svg +55 -0
- package/public/assets/display-personalDetails-header-times.svg +90 -0
- package/public/assets/display-personalDetails-header-vr.svg +46 -0
- package/public/assets/dream-team.svg +10 -0
- package/public/assets/navigationPrimary-brandMark-sun.svg +9 -0
- package/public/assets/navigationPrimary-brandMark-times.svg +18 -0
- package/public/assets/navigationPrimary-brandMark-vr.svg +10 -0
- package/public/assets/newsletters/bestoftimes-101.png +0 -0
- package/public/assets/newsletters/books-115.png +0 -0
- package/public/assets/newsletters/environment-140.png +0 -0
- package/public/assets/newsletters/fashion-108.png +0 -0
- package/public/assets/newsletters/food-106.png +0 -0
- package/public/assets/newsletters/football-111.png +0 -0
- package/public/assets/newsletters/ireland-152.png +0 -0
- package/public/assets/newsletters/law-121.png +0 -0
- package/public/assets/newsletters/money-107.png +0 -0
- package/public/assets/newsletters/moneymentor-150.png +0 -0
- package/public/assets/newsletters/placeholder.png +0 -0
- package/public/assets/newsletters/politics-119.png +0 -0
- package/public/assets/newsletters/property-113.png +0 -0
- package/public/assets/newsletters/puzzles-125.png +0 -0
- package/public/assets/newsletters/scotland-134.png +0 -0
- package/public/assets/newsletters/theatre-127.png +0 -0
- package/public/assets/newsletters/travel-149.png +0 -0
- package/public/assets/newsletters/tv-133.png +0 -0
- package/public/assets/newsletters/us-153.png +0 -0
- package/public/assets/no-subscription.svg +15 -0
- package/public/assets/pending-activation.svg +16 -0
- package/public/assets/personal-details-header.svg +91 -0
- package/public/assets/plchldr150x100.png +0 -0
- package/public/assets/previous-subscription.svg +15 -0
- package/public/assets/primary-navigation-logo-white.svg +6 -0
- package/public/assets/primary-navigation-logo.svg +6 -0
- package/public/assets/tls-logo-white.svg +3 -0
- package/public/favicon.ico +0 -0
- package/public/icon.png +0 -0
- package/public/prebid.min.js +1 -0
- package/queries/getPage.ts +100 -0
- package/queries/getRadioPost.ts +61 -0
- package/queries/getRadioPosts.ts +16 -0
- package/queries/getUserSubscription.ts +9 -0
- package/queries/index.ts +3 -0
- package/scripts/k8s-local.sh +137 -0
- package/scripts/nr-exports.sh +7 -0
- package/temp/_app.tsx +15 -0
- package/temp/_document.tsx +61 -0
- package/temp/app-context-test.tsx +51 -0
- package/temp/app-context.tsx +25 -0
- package/temp/config-index.ts +1 -0
- package/temp/context-index.tsx +1 -0
- package/temp/header.tsx +45 -0
- package/temp/next.config.js +56 -0
- package/tsconfig.json +51 -0
- package/tsconfig.test.json +6 -0
- package/validation/index.tsx +24 -0
|
@@ -0,0 +1,1187 @@
|
|
|
1
|
+
version: 2.1
|
|
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
|
+
|
|
17
|
+
orbs:
|
|
18
|
+
slack: circleci/slack@3.4.2
|
|
19
|
+
browser-tools: circleci/browser-tools@1.3.0
|
|
20
|
+
release-api: nukengprod/release-api@0.5.8
|
|
21
|
+
aws-cli: circleci/aws-cli@3.1
|
|
22
|
+
|
|
23
|
+
executors:
|
|
24
|
+
helm:
|
|
25
|
+
docker:
|
|
26
|
+
- image: nukengprodservice/helm:0.1.181
|
|
27
|
+
auth:
|
|
28
|
+
username: ${DOCKER_USERNAME}
|
|
29
|
+
password: ${DOCKER_PASSWORD}
|
|
30
|
+
resource_class: xlarge
|
|
31
|
+
|
|
32
|
+
node:
|
|
33
|
+
docker:
|
|
34
|
+
- image: cimg/node:18.17.0-browsers
|
|
35
|
+
auth:
|
|
36
|
+
username: ${DOCKER_USERNAME}
|
|
37
|
+
password: ${DOCKER_PASSWORD}
|
|
38
|
+
resource_class: xlarge
|
|
39
|
+
|
|
40
|
+
terraform:
|
|
41
|
+
docker:
|
|
42
|
+
- image: hashicorp/terraform:1.3.9
|
|
43
|
+
auth:
|
|
44
|
+
username: ${DOCKER_USERNAME}
|
|
45
|
+
password: ${DOCKER_PASSWORD}
|
|
46
|
+
resource_class: xlarge
|
|
47
|
+
|
|
48
|
+
commands:
|
|
49
|
+
aws_assume_role:
|
|
50
|
+
description: Assume AWS role
|
|
51
|
+
parameters:
|
|
52
|
+
aws_access_key_id:
|
|
53
|
+
description: AWS Access Key Id
|
|
54
|
+
type: string
|
|
55
|
+
default: '${AWS_ACCESS_KEY_ID}'
|
|
56
|
+
aws_secret_key:
|
|
57
|
+
description: AWS Secret Key
|
|
58
|
+
type: string
|
|
59
|
+
default: '${AWS_SECRET_ACCESS_KEY}'
|
|
60
|
+
aws_assume_role_arn:
|
|
61
|
+
description: AWS ARN For Assume Role
|
|
62
|
+
type: string
|
|
63
|
+
default: '${AWS_ASSUME_ROLE_ARN}'
|
|
64
|
+
aws_region:
|
|
65
|
+
description: AWS region
|
|
66
|
+
type: string
|
|
67
|
+
default: 'eu-west-1'
|
|
68
|
+
job_type:
|
|
69
|
+
description: The job type to be used
|
|
70
|
+
type: string
|
|
71
|
+
default: 'default'
|
|
72
|
+
eks_cluster:
|
|
73
|
+
description: EKS cluster for kubeconfig
|
|
74
|
+
type: string
|
|
75
|
+
default: '${AWS_EKS_CLUSTER}'
|
|
76
|
+
update_kubeconfig:
|
|
77
|
+
description: Whether to create a kubeconfig
|
|
78
|
+
type: boolean
|
|
79
|
+
default: false
|
|
80
|
+
steps:
|
|
81
|
+
- run:
|
|
82
|
+
name: Assume AWS role
|
|
83
|
+
command: |
|
|
84
|
+
export AWS_ACCESS_KEY_ID=<< parameters.aws_access_key_id >>
|
|
85
|
+
export AWS_SECRET_ACCESS_KEY=<< parameters.aws_secret_key >>
|
|
86
|
+
export temp_role=$(aws sts assume-role \
|
|
87
|
+
--role-arn "<< parameters.aws_assume_role_arn >>" \
|
|
88
|
+
--role-session-name "circle-ci-assume")
|
|
89
|
+
export AWS_ACCESS_KEY_ID_TEMP=$(echo $temp_role | jq .Credentials.AccessKeyId | xargs)
|
|
90
|
+
export AWS_SECRET_ACCESS_KEY_TEMP=$(echo $temp_role | jq .Credentials.SecretAccessKey | xargs)
|
|
91
|
+
export AWS_SESSION_TOKEN_TEMP=$(echo $temp_role | jq .Credentials.SessionToken | xargs)
|
|
92
|
+
echo "export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_TEMP" >> $BASH_ENV
|
|
93
|
+
echo "export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_TEMP" >> $BASH_ENV
|
|
94
|
+
echo "export AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN_TEMP" >> $BASH_ENV
|
|
95
|
+
source $BASH_ENV
|
|
96
|
+
cat $BASH_ENV | grep AWS_ACCESS_KEY_ID >> assume_role_creds_<< parameters.job_type >>.txt
|
|
97
|
+
cat $BASH_ENV | grep AWS_SECRET_ACCESS_KEY >> assume_role_creds_<< parameters.job_type >>.txt
|
|
98
|
+
cat $BASH_ENV | grep AWS_SESSION_TOKEN >> assume_role_creds_<< parameters.job_type >>.txt
|
|
99
|
+
- when:
|
|
100
|
+
condition: << parameters.update_kubeconfig >>
|
|
101
|
+
steps:
|
|
102
|
+
- run:
|
|
103
|
+
name: Update kubeconfig clustername
|
|
104
|
+
command: aws --region << parameters.aws_region >> eks update-kubeconfig --name << parameters.eks_cluster >>
|
|
105
|
+
- run:
|
|
106
|
+
name: Update kubectl credentials
|
|
107
|
+
command: cp ~/.kube/config kube_<< parameters.job_type >>.config
|
|
108
|
+
- persist_to_workspace:
|
|
109
|
+
root: ./
|
|
110
|
+
paths:
|
|
111
|
+
- assume_role_creds_<< parameters.job_type >>.txt
|
|
112
|
+
- kube_<< parameters.job_type >>.config
|
|
113
|
+
|
|
114
|
+
aws_assume_role_file:
|
|
115
|
+
description: Assume AWS role from the workspace file
|
|
116
|
+
parameters:
|
|
117
|
+
job_type:
|
|
118
|
+
description: The job type to be used
|
|
119
|
+
type: string
|
|
120
|
+
default: 'default'
|
|
121
|
+
steps:
|
|
122
|
+
- run:
|
|
123
|
+
name: Assume role from file
|
|
124
|
+
command: |
|
|
125
|
+
cat assume_role_creds_<< parameters.job_type >>.txt >> $BASH_ENV
|
|
126
|
+
source $BASH_ENV
|
|
127
|
+
|
|
128
|
+
terraform_init:
|
|
129
|
+
description: Run Terraform Init
|
|
130
|
+
parameters:
|
|
131
|
+
path:
|
|
132
|
+
type: string
|
|
133
|
+
terraform_arg:
|
|
134
|
+
description: provide terraform arguments
|
|
135
|
+
type: string
|
|
136
|
+
default: ''
|
|
137
|
+
steps:
|
|
138
|
+
- run:
|
|
139
|
+
name: Terraform init
|
|
140
|
+
command: |
|
|
141
|
+
source $BASH_ENV
|
|
142
|
+
cd << parameters.path >>
|
|
143
|
+
terraform init << parameters.terraform_arg >>
|
|
144
|
+
|
|
145
|
+
terraform_plan:
|
|
146
|
+
description: Run Terraform Plan
|
|
147
|
+
parameters:
|
|
148
|
+
path:
|
|
149
|
+
type: string
|
|
150
|
+
terraform_arg:
|
|
151
|
+
description: provide terraform arguments
|
|
152
|
+
type: string
|
|
153
|
+
default: ''
|
|
154
|
+
steps:
|
|
155
|
+
- run:
|
|
156
|
+
name: Terraform plan
|
|
157
|
+
command: |
|
|
158
|
+
source $BASH_ENV
|
|
159
|
+
cd << parameters.path >>
|
|
160
|
+
terraform plan -out=tfplan -input=false << parameters.terraform_arg >>
|
|
161
|
+
|
|
162
|
+
terraform_apply:
|
|
163
|
+
description: Run Terraform Apply
|
|
164
|
+
parameters:
|
|
165
|
+
path:
|
|
166
|
+
type: string
|
|
167
|
+
steps:
|
|
168
|
+
- run:
|
|
169
|
+
name: Terraform apply
|
|
170
|
+
command: |
|
|
171
|
+
source $BASH_ENV
|
|
172
|
+
cd << parameters.path >>
|
|
173
|
+
terraform apply -input=false tfplan
|
|
174
|
+
|
|
175
|
+
terraform_force_apply:
|
|
176
|
+
description: Run Terraform Apply
|
|
177
|
+
parameters:
|
|
178
|
+
path:
|
|
179
|
+
type: string
|
|
180
|
+
steps:
|
|
181
|
+
- run:
|
|
182
|
+
name: Terraform forced apply
|
|
183
|
+
command: |
|
|
184
|
+
source $BASH_ENV
|
|
185
|
+
cd << parameters.path >>
|
|
186
|
+
terraform apply -auto-approve
|
|
187
|
+
|
|
188
|
+
git_config_user:
|
|
189
|
+
description: Configure git user
|
|
190
|
+
parameters:
|
|
191
|
+
user:
|
|
192
|
+
type: string
|
|
193
|
+
default: ${GIT_USERNAME}
|
|
194
|
+
email:
|
|
195
|
+
type: string
|
|
196
|
+
default: '${GIT_EMAIL}'
|
|
197
|
+
steps:
|
|
198
|
+
- run:
|
|
199
|
+
name: Configure git user
|
|
200
|
+
command: |
|
|
201
|
+
git config --global user.email "<< parameters.email >>"
|
|
202
|
+
git config --global user.name "<< parameters.user >>"
|
|
203
|
+
|
|
204
|
+
# This job relies on working with Pull Requests
|
|
205
|
+
set_helm_environment:
|
|
206
|
+
description: 'Set environment variables for helm'
|
|
207
|
+
parameters:
|
|
208
|
+
environment:
|
|
209
|
+
type: string
|
|
210
|
+
release:
|
|
211
|
+
description: Helm release name i.e ncu-newskit-render
|
|
212
|
+
type: string
|
|
213
|
+
default: <% HELM_RELEASE_NAME >
|
|
214
|
+
namespace:
|
|
215
|
+
description: Kubernetes namespace
|
|
216
|
+
type: string
|
|
217
|
+
node_env:
|
|
218
|
+
description: Node environment name
|
|
219
|
+
type: string
|
|
220
|
+
default: production
|
|
221
|
+
steps:
|
|
222
|
+
- run:
|
|
223
|
+
name: 'Set environment variables for helm'
|
|
224
|
+
command: |
|
|
225
|
+
export PKG_VERSION=$(jq -r .version package.json)
|
|
226
|
+
echo "export PKG_VERSION=$PKG_VERSION" >> $BASH_ENV
|
|
227
|
+
echo 'export KUBECONFIG=$(pwd)/kube_eks_<< parameters.environment >>.config' >> $BASH_ENV
|
|
228
|
+
echo 'export HELM_OPT_NAMESPACE="-n << parameters.namespace >>"' >> $BASH_ENV
|
|
229
|
+
echo 'export HELM_VAL_ENV=<< parameters.environment >>' >> $BASH_ENV
|
|
230
|
+
echo 'export NODE_ENV=<< parameters.node_env >>' >> $BASH_ENV
|
|
231
|
+
if [ -n "$CIRCLE_PULL_REQUEST" ]; then
|
|
232
|
+
export PR_NUMBER=$(echo ${CIRCLE_PULL_REQUEST} |rev | cut -d "/" -f1 |rev)
|
|
233
|
+
echo "export PR_NUMBER=$PR_NUMBER" >> $BASH_ENV
|
|
234
|
+
echo 'export HELM_OPT_SET="--set alb.prSuffix=pr-$PR_NUMBER"' >> $BASH_ENV
|
|
235
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set image.tag=PR-$PR_NUMBER "' >> $BASH_ENV
|
|
236
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.NEWSKIT_API_X_API_KEY=${NEWSKIT_API_X_API_KEY}"' >> $BASH_ENV
|
|
237
|
+
echo 'export HELM_NAME="<< parameters.release >>-pr$PR_NUMBER"' >> $BASH_ENV
|
|
238
|
+
else
|
|
239
|
+
export PR_NUMBER=$(git log --format=%B -n 1 HEAD | grep -oE -m 1 '\(#[0-9]+\)' | grep -oE '[0-9]+')
|
|
240
|
+
echo "export PR_NUMBER=$PR_NUMBER" >> $BASH_ENV
|
|
241
|
+
echo 'export HELM_OPT_SET="--set image.tag=$PKG_VERSION "' >> $BASH_ENV
|
|
242
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.NEWSKIT_API_X_API_KEY=${NEWSKIT_API_X_API_KEY}"' >> $BASH_ENV
|
|
243
|
+
if [ "<< parameters.environment >>" = pr ]; then
|
|
244
|
+
echo 'export HELM_NAME="<< parameters.release >>-pr$PR_NUMBER"' >> $BASH_ENV
|
|
245
|
+
else
|
|
246
|
+
echo 'export HELM_NAME="<< parameters.release >>"' >> $BASH_ENV
|
|
247
|
+
fi
|
|
248
|
+
fi
|
|
249
|
+
|
|
250
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.SOURCEPOINT_ACCOUNT_ID=${SOURCEPOINT_ACCOUNT_ID}"' >> $BASH_ENV
|
|
251
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.SOURCEPOINT_PROPERTY_HREF=${SOURCEPOINT_PROPERTY_HREF}"' >> $BASH_ENV
|
|
252
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.SOURCEPOINT_PROPERTY_ID=${SOURCEPOINT_PROPERTY_ID}"' >> $BASH_ENV
|
|
253
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.EXPERIMENTATION_WEB=${EXPERIMENTATION_WEB}"' >> $BASH_ENV
|
|
254
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.TEALIUM_ACCOUNT_ID=${TEALIUM_ACCOUNT_ID}"' >> $BASH_ENV
|
|
255
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.TEALIUM_PROFILE_ID=${TEALIUM_PROFILE_ID}"' >> $BASH_ENV
|
|
256
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set envs.TEALIUM_ENV=${TEALIUM_ENV}"' >> $BASH_ENV
|
|
257
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.NEW_RELIC_LICENSE_KEY=${NEW_RELIC_LICENSE_KEY}"' >> $BASH_ENV
|
|
258
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ACCOUNT_PROVIDER_GRAPHQL_URL=${ACCOUNT_PROVIDER_GRAPHQL_URL}"' >> $BASH_ENV
|
|
259
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ACCOUNT_PROVIDER_INTERNAL_AUTH0_DOMAIN=${ACCOUNT_PROVIDER_INTERNAL_AUTH0_DOMAIN}"' >> $BASH_ENV
|
|
260
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ACCOUNT_PROVIDER_INTERNAL_CONNECTION=${ACCOUNT_PROVIDER_INTERNAL_CONNECTION}"' >> $BASH_ENV
|
|
261
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ACCOUNT_PROVIDER_INTERNAL_CLIENT_ID=${ACCOUNT_PROVIDER_INTERNAL_CLIENT_ID}"' >> $BASH_ENV
|
|
262
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.STRIPE_KEY=${STRIPE_KEY}"' >> $BASH_ENV
|
|
263
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.LOQACCOUNT_KEY=${LOQACCOUNT_KEY}"' >> $BASH_ENV
|
|
264
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.OKTA_CLIENT_ID=${OKTA_CLIENT_ID}"' >> $BASH_ENV
|
|
265
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.OKTA_CLIENT_SECRET=${OKTA_CLIENT_SECRET}"' >> $BASH_ENV
|
|
266
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.OKTA_DOMAIN=${OKTA_DOMAIN}"' >> $BASH_ENV
|
|
267
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.NEXTAUTH_URL=${NEXTAUTH_URL}"' >> $BASH_ENV
|
|
268
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.NEXTAUTH_SECRET=${NEXTAUTH_SECRET}"' >> $BASH_ENV
|
|
269
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.SN_PASSWORD=${SN_PASSWORD}"' >> $BASH_ENV
|
|
270
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.SN_USERNAME=${SN_USERNAME}"' >> $BASH_ENV
|
|
271
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.SN_ENVIRONMENT=${SN_ENVIRONMENT}"' >> $BASH_ENV
|
|
272
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ZUORA_PAGE_ID=${ZUORA_PAGE_ID}"' >> $BASH_ENV
|
|
273
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.ZUORA_RSA_SIGNATURE_URI=${ZUORA_RSA_SIGNATURE_URI}"' >> $BASH_ENV
|
|
274
|
+
echo 'export HELM_OPT_SET="$HELM_OPT_SET --set secret.items.OPTIMIZELY_SDK_KEY=${OPTIMIZELY_SDK_KEY}"' >> $BASH_ENV
|
|
275
|
+
echo 'export HELM_PATH="helm"' >> $BASH_ENV
|
|
276
|
+
echo 'export HELM_VALUES="--values $HELM_PATH/values-$HELM_VAL_ENV.yaml"' >> $BASH_ENV
|
|
277
|
+
echo 'export HELM_INSTALL="helm install --atomic $HELM_VALUES $HELM_OPT_SET $HELM_OPT_NAMESPACE"' >> $BASH_ENV
|
|
278
|
+
echo 'export HELM_UNINSTALL="helm uninstall $HELM_OPT_NAMESPACE"' >> $BASH_ENV
|
|
279
|
+
echo 'export HELM_LIST="helm list $HELM_OPT_NAMESPACE"' >> $BASH_ENV
|
|
280
|
+
echo 'export HELM_LIST_ALL="$HELM_LIST --all --short"' >> $BASH_ENV
|
|
281
|
+
echo 'export HELM_UPGRADE="helm upgrade --atomic $HELM_VALUES $HELM_OPT_SET $HELM_OPT_NAMESPACE"' >> $BASH_ENV
|
|
282
|
+
|
|
283
|
+
jobs:
|
|
284
|
+
init_aws:
|
|
285
|
+
parameters:
|
|
286
|
+
aws_access_key_id:
|
|
287
|
+
description: AWS Access Key Id
|
|
288
|
+
type: string
|
|
289
|
+
default: '${AWS_ACCESS_KEY_ID}'
|
|
290
|
+
aws_secret_key:
|
|
291
|
+
description: AWS Secret Key
|
|
292
|
+
type: string
|
|
293
|
+
default: '${AWS_SECRET_ACCESS_KEY}'
|
|
294
|
+
aws_assume_role_arn:
|
|
295
|
+
description: AWS ARN For Assume Role
|
|
296
|
+
type: string
|
|
297
|
+
default: '${AWS_ASSUME_ROLE_ARN}'
|
|
298
|
+
job_type:
|
|
299
|
+
type: string
|
|
300
|
+
default: 'default'
|
|
301
|
+
update_kubeconfig:
|
|
302
|
+
type: boolean
|
|
303
|
+
default: true
|
|
304
|
+
working_directory: ~/project
|
|
305
|
+
executor: helm
|
|
306
|
+
steps:
|
|
307
|
+
- run:
|
|
308
|
+
name: Install openssh client
|
|
309
|
+
command: apk add openssh-client
|
|
310
|
+
- checkout
|
|
311
|
+
- aws_assume_role:
|
|
312
|
+
aws_access_key_id: << parameters.aws_access_key_id >>
|
|
313
|
+
aws_secret_key: << parameters.aws_secret_key >>
|
|
314
|
+
aws_assume_role_arn: << parameters.aws_assume_role_arn >>
|
|
315
|
+
job_type: << parameters.job_type >>
|
|
316
|
+
update_kubeconfig: << parameters.update_kubeconfig >>
|
|
317
|
+
init_aws_oidc:
|
|
318
|
+
parameters:
|
|
319
|
+
aws_oidc_role_arn:
|
|
320
|
+
description: AWS Access Key Id
|
|
321
|
+
type: string
|
|
322
|
+
default: ${AWS_OIDC_ROLE_ARN_ECR}
|
|
323
|
+
job_type:
|
|
324
|
+
type: string
|
|
325
|
+
default: 'default'
|
|
326
|
+
executor: aws-cli/default
|
|
327
|
+
working_directory: ~/project
|
|
328
|
+
steps:
|
|
329
|
+
- checkout
|
|
330
|
+
- aws-cli/setup:
|
|
331
|
+
profile-name: cci-ecr
|
|
332
|
+
role-arn: << parameters.aws_oidc_role_arn >>
|
|
333
|
+
role-session-name: cci-ecr-session
|
|
334
|
+
- run:
|
|
335
|
+
name: save to file
|
|
336
|
+
command: |
|
|
337
|
+
source $BASH_ENV
|
|
338
|
+
cat $BASH_ENV | grep AWS_ACCESS_KEY_ID >> assume_role_creds_<< parameters.job_type >>.txt
|
|
339
|
+
cat $BASH_ENV | grep AWS_SECRET_ACCESS_KEY >> assume_role_creds_<< parameters.job_type >>.txt
|
|
340
|
+
cat $BASH_ENV | grep AWS_SESSION_TOKEN >> assume_role_creds_<< parameters.job_type >>.txt
|
|
341
|
+
- persist_to_workspace:
|
|
342
|
+
root: ./
|
|
343
|
+
paths:
|
|
344
|
+
- assume_role_creds_<< parameters.job_type >>.txt
|
|
345
|
+
|
|
346
|
+
deploy_terraform:
|
|
347
|
+
parameters:
|
|
348
|
+
team:
|
|
349
|
+
description: Used to generate the S3 bucket key i.e. product-platforms
|
|
350
|
+
type: string
|
|
351
|
+
default: <% TEAM >
|
|
352
|
+
project:
|
|
353
|
+
description: Used to generate the S3 bucket key i.e. ncu-newskit-render
|
|
354
|
+
type: string
|
|
355
|
+
folder:
|
|
356
|
+
description: Used to generate the S3 bucket key and navigate to terraform folder i.e. infrastructure-ecr
|
|
357
|
+
type: string
|
|
358
|
+
environment:
|
|
359
|
+
type: string
|
|
360
|
+
default: dev
|
|
361
|
+
apply:
|
|
362
|
+
type: boolean
|
|
363
|
+
default: false
|
|
364
|
+
working_directory: ~/project
|
|
365
|
+
executor: terraform
|
|
366
|
+
steps:
|
|
367
|
+
- checkout
|
|
368
|
+
- attach_workspace:
|
|
369
|
+
at: ~/project
|
|
370
|
+
- aws_assume_role_file
|
|
371
|
+
- terraform_init:
|
|
372
|
+
path: << parameters.folder >>
|
|
373
|
+
terraform_arg: -backend-config="key=<<parameters.team >>/<< parameters.project >>/<< parameters.folder >>/<< parameters.environment >>/terraform.tfstate"
|
|
374
|
+
- terraform_plan:
|
|
375
|
+
path: << parameters.folder >>
|
|
376
|
+
terraform_arg: -var-file=<< parameters.environment >>.tfvars
|
|
377
|
+
- when:
|
|
378
|
+
condition: << parameters.apply >>
|
|
379
|
+
steps:
|
|
380
|
+
- terraform_apply:
|
|
381
|
+
path: << parameters.folder >>
|
|
382
|
+
|
|
383
|
+
install_deps:
|
|
384
|
+
working_directory: ~/project
|
|
385
|
+
executor: node
|
|
386
|
+
steps:
|
|
387
|
+
- checkout
|
|
388
|
+
- restore_cache:
|
|
389
|
+
keys:
|
|
390
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
391
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-
|
|
392
|
+
- restore_cache:
|
|
393
|
+
keys:
|
|
394
|
+
- cypress-{{ .Environment.CYPRESS_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
395
|
+
- run:
|
|
396
|
+
name: 'Install dependencies'
|
|
397
|
+
command: <% PACKAGE_INSTALL >
|
|
398
|
+
- run:
|
|
399
|
+
name: 'Build the project'
|
|
400
|
+
command: <% PACKAGE_RUN > build
|
|
401
|
+
- save_cache:
|
|
402
|
+
key: <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
403
|
+
paths:
|
|
404
|
+
- ~/.cache/yarn
|
|
405
|
+
- ~/.npm
|
|
406
|
+
- node_modules
|
|
407
|
+
- .next/cache
|
|
408
|
+
- save_cache:
|
|
409
|
+
key: cypress-{{ .Environment.CYPRESS_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
410
|
+
paths:
|
|
411
|
+
- ~/.cache/Cypress
|
|
412
|
+
- persist_to_workspace:
|
|
413
|
+
root: ./
|
|
414
|
+
paths: .next
|
|
415
|
+
|
|
416
|
+
lint:
|
|
417
|
+
executor: node
|
|
418
|
+
steps:
|
|
419
|
+
- checkout
|
|
420
|
+
- attach_workspace:
|
|
421
|
+
at: ~/project
|
|
422
|
+
- restore_cache:
|
|
423
|
+
keys:
|
|
424
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
425
|
+
- run:
|
|
426
|
+
name: 'Run lint'
|
|
427
|
+
command: <% PACKAGE_RUN > lint
|
|
428
|
+
|
|
429
|
+
test_unit:
|
|
430
|
+
executor: node
|
|
431
|
+
steps:
|
|
432
|
+
- checkout
|
|
433
|
+
- attach_workspace:
|
|
434
|
+
at: ~/project
|
|
435
|
+
- restore_cache:
|
|
436
|
+
keys:
|
|
437
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
438
|
+
- run:
|
|
439
|
+
name: 'Run tests'
|
|
440
|
+
command: |
|
|
441
|
+
mkdir tests
|
|
442
|
+
<% PACKAGE_RUN > test:unit:ci
|
|
443
|
+
environment:
|
|
444
|
+
JEST_JUNIT_OUTPUT_DIR: /home/circleci/project/tests
|
|
445
|
+
- store_test_results:
|
|
446
|
+
path: tests
|
|
447
|
+
- store_artifacts:
|
|
448
|
+
path: tests
|
|
449
|
+
destination: tests
|
|
450
|
+
|
|
451
|
+
e2e_test:
|
|
452
|
+
executor: node
|
|
453
|
+
steps:
|
|
454
|
+
- checkout
|
|
455
|
+
- attach_workspace:
|
|
456
|
+
at: ~/project
|
|
457
|
+
- restore_cache:
|
|
458
|
+
keys:
|
|
459
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
460
|
+
- restore_cache:
|
|
461
|
+
keys:
|
|
462
|
+
- cypress-{{ .Environment.CYPRESS_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
463
|
+
- run:
|
|
464
|
+
name: 'Export Newskit API variables'
|
|
465
|
+
command: |
|
|
466
|
+
echo "export NEWSKIT_API_X_API_KEY=$NEWSKIT_API_X_API_KEY" >> $BASH_ENV
|
|
467
|
+
echo "export NEWSKIT_API_ENV_URL=$NEWSKIT_API_ENV_URL" >> $BASH_ENV
|
|
468
|
+
- run:
|
|
469
|
+
name: 'install cypress dependencies'
|
|
470
|
+
command: |
|
|
471
|
+
sudo apt-get update
|
|
472
|
+
sudo apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
|
|
473
|
+
- browser-tools/install-chrome
|
|
474
|
+
- browser-tools/install-chromedriver
|
|
475
|
+
- run:
|
|
476
|
+
name: Check chrome install
|
|
477
|
+
command: |
|
|
478
|
+
google-chrome --version
|
|
479
|
+
chromedriver --version
|
|
480
|
+
- run:
|
|
481
|
+
name: 'start server'
|
|
482
|
+
command: |
|
|
483
|
+
yarn start:test:server
|
|
484
|
+
background: true
|
|
485
|
+
- run:
|
|
486
|
+
name: 'Wait test server'
|
|
487
|
+
command: |
|
|
488
|
+
yarn wait:server
|
|
489
|
+
- run:
|
|
490
|
+
name: 'Run e2e tests'
|
|
491
|
+
command: |
|
|
492
|
+
<% PACKAGE_RUN > test:e2e
|
|
493
|
+
- store_artifacts:
|
|
494
|
+
path: cypress/screenshots
|
|
495
|
+
- store_artifacts:
|
|
496
|
+
path: cypress/videos
|
|
497
|
+
|
|
498
|
+
publish_docker:
|
|
499
|
+
parameters:
|
|
500
|
+
project:
|
|
501
|
+
description: Project name that will be used to tag docker images i.e ncu-newskit-render
|
|
502
|
+
type: string
|
|
503
|
+
default: <% PROJECT_NAME >
|
|
504
|
+
dockerfile:
|
|
505
|
+
type: string
|
|
506
|
+
default: "Dockerfile.withNewRelic"
|
|
507
|
+
working_directory: ~/project
|
|
508
|
+
executor: node
|
|
509
|
+
steps:
|
|
510
|
+
- checkout
|
|
511
|
+
- attach_workspace:
|
|
512
|
+
at: ~/project
|
|
513
|
+
- restore_cache:
|
|
514
|
+
keys:
|
|
515
|
+
- <% PACKAGE_MANAGER >-build-{{ .Environment.BUILD_CACHE_VERSION }}-{{ checksum "<% PACKAGE_MANAGER_LOCK_FILE >" }}
|
|
516
|
+
- setup_remote_docker
|
|
517
|
+
- run:
|
|
518
|
+
name: Install aws cli
|
|
519
|
+
command: |
|
|
520
|
+
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4EB27DB2A3B88B8B
|
|
521
|
+
sudo apt-get update
|
|
522
|
+
sudo apt-get install python-is-python3 python3-pip
|
|
523
|
+
sudo pip install awscli
|
|
524
|
+
- aws_assume_role_file
|
|
525
|
+
- run:
|
|
526
|
+
name: Publish Docker containers to AWS ECR
|
|
527
|
+
command: |
|
|
528
|
+
if [ -n "$CIRCLE_PULL_REQUEST" ]; then
|
|
529
|
+
export PR_NUMBER=$(echo ${CIRCLE_PULL_REQUEST} |rev | cut -d "/" -f1 |rev)
|
|
530
|
+
TAGS="PR-$PR_NUMBER"
|
|
531
|
+
else
|
|
532
|
+
TAG_VERSION=$(jq -r .version package.json)
|
|
533
|
+
TAGS="$TAG_VERSION latest"
|
|
534
|
+
fi
|
|
535
|
+
DOCKER_REGISTRY_URL="$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com"
|
|
536
|
+
|
|
537
|
+
<% PACKAGE_DOCKER_BUILD >
|
|
538
|
+
|
|
539
|
+
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
|
|
540
|
+
docker build -f << parameters.dockerfile >> -t << parameters.project >> .
|
|
541
|
+
$(aws ecr get-login --no-include-email)
|
|
542
|
+
for tag in $TAGS; do
|
|
543
|
+
docker tag << parameters.project >> $DOCKER_REGISTRY_URL/<< parameters.project >>:$tag;
|
|
544
|
+
docker push $DOCKER_REGISTRY_URL/<< parameters.project >>:$tag;
|
|
545
|
+
done
|
|
546
|
+
|
|
547
|
+
uninstall_helm:
|
|
548
|
+
parameters:
|
|
549
|
+
environment:
|
|
550
|
+
description: Environment name
|
|
551
|
+
type: string
|
|
552
|
+
release:
|
|
553
|
+
description: Helm release name i.e ncu-newskit-render
|
|
554
|
+
type: string
|
|
555
|
+
default: <% HELM_RELEASE_NAME >
|
|
556
|
+
namespace:
|
|
557
|
+
description: Kubernetes namespace without environment suffix
|
|
558
|
+
type: string
|
|
559
|
+
default: <% K8S_NAMESPACE >
|
|
560
|
+
working_directory: ~/project
|
|
561
|
+
executor: helm
|
|
562
|
+
steps:
|
|
563
|
+
- run:
|
|
564
|
+
name: Install ssh client
|
|
565
|
+
command: apk add openssh-client
|
|
566
|
+
- checkout
|
|
567
|
+
- attach_workspace:
|
|
568
|
+
at: ~/project
|
|
569
|
+
- aws_assume_role_file:
|
|
570
|
+
job_type: eks_<< parameters.environment >>
|
|
571
|
+
- set_helm_environment:
|
|
572
|
+
environment: << parameters.environment >>
|
|
573
|
+
release: << parameters.release >>
|
|
574
|
+
namespace: << parameters.namespace>>-<< parameters.environment >>
|
|
575
|
+
- run:
|
|
576
|
+
name: Helm uninstall
|
|
577
|
+
command: |
|
|
578
|
+
source $BASH_ENV
|
|
579
|
+
if $HELM_LIST | grep -q $HELM_NAME; then $HELM_UNINSTALL $HELM_NAME; fi
|
|
580
|
+
|
|
581
|
+
remove_all_pr_environments:
|
|
582
|
+
parameters:
|
|
583
|
+
namespace:
|
|
584
|
+
description: Kubernetes namespace without environment suffix
|
|
585
|
+
type: string
|
|
586
|
+
default: <% K8S_NAMESPACE >
|
|
587
|
+
working_directory: ~/project
|
|
588
|
+
executor: helm
|
|
589
|
+
steps:
|
|
590
|
+
- run:
|
|
591
|
+
name: Install ssh client
|
|
592
|
+
command: apk add openssh-client
|
|
593
|
+
- checkout
|
|
594
|
+
- attach_workspace:
|
|
595
|
+
at: ~/project
|
|
596
|
+
- aws_assume_role_file:
|
|
597
|
+
job_type: eks_pr
|
|
598
|
+
- set_helm_environment:
|
|
599
|
+
environment: pr
|
|
600
|
+
namespace: << parameters.namespace>>-pr
|
|
601
|
+
- run:
|
|
602
|
+
name: Remove all PR environments
|
|
603
|
+
command: |
|
|
604
|
+
source $BASH_ENV
|
|
605
|
+
if [ -n "$($HELM_LIST_ALL)" ]; then $HELM_LIST_ALL | xargs $HELM_UNINSTALL; fi
|
|
606
|
+
|
|
607
|
+
upgrade_helm:
|
|
608
|
+
parameters:
|
|
609
|
+
environment:
|
|
610
|
+
description: Environment name
|
|
611
|
+
type: string
|
|
612
|
+
node_env:
|
|
613
|
+
description: Node environment name
|
|
614
|
+
type: string
|
|
615
|
+
default: production
|
|
616
|
+
create:
|
|
617
|
+
description: Whether to create a new Helm package
|
|
618
|
+
type: boolean
|
|
619
|
+
default: false
|
|
620
|
+
release:
|
|
621
|
+
description: Helm release name i.e ncu-newskit-render
|
|
622
|
+
type: string
|
|
623
|
+
default: <% HELM_RELEASE_NAME >
|
|
624
|
+
helm_repo:
|
|
625
|
+
description: Helm S3 repo url
|
|
626
|
+
type: string
|
|
627
|
+
default: s3://<% HELM_BUCKET_NAME >
|
|
628
|
+
namespace:
|
|
629
|
+
description: Kubernetes namespace without environment suffix
|
|
630
|
+
type: string
|
|
631
|
+
default: <% K8S_NAMESPACE >
|
|
632
|
+
working_directory: ~/project
|
|
633
|
+
executor: helm
|
|
634
|
+
steps:
|
|
635
|
+
- run:
|
|
636
|
+
name: Install ssh client
|
|
637
|
+
command: apk add openssh-client
|
|
638
|
+
- checkout
|
|
639
|
+
- attach_workspace:
|
|
640
|
+
at: ~/project
|
|
641
|
+
- set_helm_environment:
|
|
642
|
+
environment: << parameters.environment >>
|
|
643
|
+
node_env: << parameters.node_env >>
|
|
644
|
+
release: << parameters.release >>
|
|
645
|
+
namespace: << parameters.namespace >>-<< parameters.environment >>
|
|
646
|
+
- run:
|
|
647
|
+
name: Install helm s3 plugin
|
|
648
|
+
command: helm plugin install https://github.com/hypnoglow/helm-s3.git
|
|
649
|
+
- aws_assume_role_file
|
|
650
|
+
- when:
|
|
651
|
+
condition: << parameters.create >>
|
|
652
|
+
steps:
|
|
653
|
+
- run:
|
|
654
|
+
name: Helm package and upload
|
|
655
|
+
command: |
|
|
656
|
+
source $BASH_ENV
|
|
657
|
+
export HELM_S3_MODE=3
|
|
658
|
+
if ! aws s3 ls << parameters.helm_repo >>/<< parameters.release >>/ | grep index.yaml; then
|
|
659
|
+
helm s3 init << parameters.helm_repo >>/<< parameters.release >>
|
|
660
|
+
else
|
|
661
|
+
echo "Repo already initialized";
|
|
662
|
+
fi
|
|
663
|
+
helm repo add << parameters.release >> << parameters.helm_repo >>/<< parameters.release >>
|
|
664
|
+
helm package -u --version $PKG_VERSION --app-version $PKG_VERSION $HELM_PATH;
|
|
665
|
+
mv << parameters.release >>-*.tgz << parameters.release >>-$PKG_VERSION.tgz;
|
|
666
|
+
if [ "$HELM_VAL_ENV" != "pr" ]; then
|
|
667
|
+
helm s3 push --force ./<< parameters.release >>-$PKG_VERSION.tgz << parameters.release >>;
|
|
668
|
+
fi
|
|
669
|
+
- unless:
|
|
670
|
+
condition: << parameters.create >>
|
|
671
|
+
steps:
|
|
672
|
+
- run:
|
|
673
|
+
name: Download helm chart
|
|
674
|
+
command: |
|
|
675
|
+
source $BASH_ENV
|
|
676
|
+
helm repo add << parameters.release >> << parameters.helm_repo >>/<< parameters.release >>
|
|
677
|
+
helm pull << parameters.release >>/<< parameters.release >> --version $PKG_VERSION;
|
|
678
|
+
|
|
679
|
+
- aws_assume_role_file:
|
|
680
|
+
job_type: eks_<< parameters.environment >>
|
|
681
|
+
- run:
|
|
682
|
+
name: Helm deploy
|
|
683
|
+
command: |
|
|
684
|
+
source $BASH_ENV
|
|
685
|
+
$HELM_UPGRADE --install $HELM_NAME << parameters.release >>-*.tgz --version $PKG_VERSION
|
|
686
|
+
- when:
|
|
687
|
+
condition:
|
|
688
|
+
and:
|
|
689
|
+
- not:
|
|
690
|
+
equal: [pr, << parameters.environment >>]
|
|
691
|
+
steps:
|
|
692
|
+
- run:
|
|
693
|
+
name: Add Deployment Marker to New Relic
|
|
694
|
+
command: |
|
|
695
|
+
CURRENT_VERSION=$(jq -r .version ./package.json)
|
|
696
|
+
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')
|
|
697
|
+
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'" } }'
|
|
698
|
+
|
|
699
|
+
bump_version:
|
|
700
|
+
executor: node
|
|
701
|
+
working_directory: ~/project
|
|
702
|
+
steps:
|
|
703
|
+
- add_ssh_keys:
|
|
704
|
+
fingerprints:
|
|
705
|
+
- '<% SSH_KEY >'
|
|
706
|
+
- checkout
|
|
707
|
+
- attach_workspace:
|
|
708
|
+
at: ~/project
|
|
709
|
+
- git_config_user
|
|
710
|
+
- run:
|
|
711
|
+
name: Run standard-version
|
|
712
|
+
command: |
|
|
713
|
+
npx standard-version --releaseCommitMessageFormat='chore(release): {{currentTag}} [ci skip]'
|
|
714
|
+
git push --follow-tags origin master
|
|
715
|
+
- persist_to_workspace:
|
|
716
|
+
root: ./
|
|
717
|
+
paths:
|
|
718
|
+
- package.json
|
|
719
|
+
|
|
720
|
+
add_github_comment:
|
|
721
|
+
executor: node
|
|
722
|
+
steps:
|
|
723
|
+
- run:
|
|
724
|
+
name: Post a comment to GitHub
|
|
725
|
+
command: |
|
|
726
|
+
PR_RESPONSE=$(curl --location --request GET "https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls?head=$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH&state=open" \
|
|
727
|
+
-u $GIT_USERNAME:$GIT_ACCESS_TOKEN)
|
|
728
|
+
|
|
729
|
+
if [ $(echo $PR_RESPONSE | jq length) -eq 0 ]; then
|
|
730
|
+
echo "No PR found to update"
|
|
731
|
+
else
|
|
732
|
+
PR_COMMENT_URL=$(echo $PR_RESPONSE | jq -r ".[]._links.comments.href")
|
|
733
|
+
PR_NUMBER=$(echo ${CIRCLE_PULL_REQUEST##*/})
|
|
734
|
+
fi
|
|
735
|
+
curl --location --request POST "$PR_COMMENT_URL" \
|
|
736
|
+
-u $GIT_USERNAME:$GIT_ACCESS_TOKEN \
|
|
737
|
+
--header 'Content-Type: application/json' \
|
|
738
|
+
--data-raw '{
|
|
739
|
+
"body": "This PR has been automatically deployed [here]('https://pr-${PR_NUMBER}-<% PROJECT_NAME >.ceng-dev.newsuk.tech')."
|
|
740
|
+
}'
|
|
741
|
+
|
|
742
|
+
slack_deploy_approval:
|
|
743
|
+
parameters:
|
|
744
|
+
approval:
|
|
745
|
+
type: boolean
|
|
746
|
+
default: false
|
|
747
|
+
version:
|
|
748
|
+
type: string
|
|
749
|
+
default: ${CIRCLE_TAG}
|
|
750
|
+
package_name:
|
|
751
|
+
type: string
|
|
752
|
+
default: <% PROJECT_NAME >
|
|
753
|
+
environment:
|
|
754
|
+
type: string
|
|
755
|
+
executor: node
|
|
756
|
+
steps:
|
|
757
|
+
- checkout
|
|
758
|
+
- attach_workspace:
|
|
759
|
+
at: ~/project
|
|
760
|
+
- when:
|
|
761
|
+
condition: << parameters.approval >>
|
|
762
|
+
steps:
|
|
763
|
+
- slack/approval:
|
|
764
|
+
message: 'Deployment of << parameters.package_name >>@<< parameters.version >> to << parameters.environment >> requires approval'
|
|
765
|
+
webhook: ${SLACK_CIRCLECI_DEPLOYMENTS_WEBHOOK}
|
|
766
|
+
color: '#32a852'
|
|
767
|
+
- unless:
|
|
768
|
+
condition: << parameters.approval >>
|
|
769
|
+
steps:
|
|
770
|
+
- slack/approval:
|
|
771
|
+
message: '<< parameters.package_name >>@<< parameters.version >> is being deployed to << parameters.environment >>'
|
|
772
|
+
webhook: ${SLACK_CIRCLECI_DEPLOYMENTS_WEBHOOK}
|
|
773
|
+
color: '#32a852'
|
|
774
|
+
|
|
775
|
+
trigger_workflow_by_workspace:
|
|
776
|
+
parameters:
|
|
777
|
+
workflow:
|
|
778
|
+
type: string
|
|
779
|
+
executor: node
|
|
780
|
+
steps:
|
|
781
|
+
- checkout
|
|
782
|
+
- attach_workspace:
|
|
783
|
+
at: ~/project
|
|
784
|
+
- run:
|
|
785
|
+
command: cat package.json | jq -r .version
|
|
786
|
+
- run:
|
|
787
|
+
name: Trigger << parameters.workflow >>
|
|
788
|
+
command: |
|
|
789
|
+
set -x
|
|
790
|
+
VERSION=v$(cat package.json | jq -r .version)
|
|
791
|
+
.ci/trigger-circleci-workflow.sh << parameters.workflow >> $VERSION
|
|
792
|
+
|
|
793
|
+
trigger_workflow_by_circle_tag:
|
|
794
|
+
parameters:
|
|
795
|
+
workflow:
|
|
796
|
+
type: string
|
|
797
|
+
executor: node
|
|
798
|
+
steps:
|
|
799
|
+
- checkout
|
|
800
|
+
- run:
|
|
801
|
+
name: Trigger << parameters.workflow >>
|
|
802
|
+
command: |
|
|
803
|
+
.ci/trigger-circleci-workflow.sh << parameters.workflow >> $CIRCLE_TAG
|
|
804
|
+
|
|
805
|
+
# Optional filters assuming trunk based development
|
|
806
|
+
## For PR workflow
|
|
807
|
+
only_on_pr_branch: &only_on_pr_branch
|
|
808
|
+
filters:
|
|
809
|
+
branches:
|
|
810
|
+
ignore:
|
|
811
|
+
- master
|
|
812
|
+
- main
|
|
813
|
+
- develop
|
|
814
|
+
# if you have release branches you might add
|
|
815
|
+
# - /^release.*/
|
|
816
|
+
|
|
817
|
+
## For master workflow
|
|
818
|
+
only_on_master_branch: &only_on_master_branch
|
|
819
|
+
filters:
|
|
820
|
+
branches:
|
|
821
|
+
only:
|
|
822
|
+
- master
|
|
823
|
+
- main
|
|
824
|
+
|
|
825
|
+
only_on_tags: &only_on_tags
|
|
826
|
+
filters:
|
|
827
|
+
tags:
|
|
828
|
+
only: /^v.*/
|
|
829
|
+
|
|
830
|
+
workflows:
|
|
831
|
+
pull_request:
|
|
832
|
+
jobs:
|
|
833
|
+
- install_deps:
|
|
834
|
+
name: install_deps
|
|
835
|
+
context: <% PROJECT_NAME >-dev
|
|
836
|
+
<<: *only_on_pr_branch
|
|
837
|
+
- lint:
|
|
838
|
+
<<: *only_on_pr_branch
|
|
839
|
+
context: <% PROJECT_NAME >-dev
|
|
840
|
+
requires:
|
|
841
|
+
- install_deps
|
|
842
|
+
- test_unit:
|
|
843
|
+
<<: *only_on_pr_branch
|
|
844
|
+
context: <% PROJECT_NAME >-dev
|
|
845
|
+
requires:
|
|
846
|
+
- install_deps
|
|
847
|
+
- e2e_test:
|
|
848
|
+
<<: *only_on_pr_branch
|
|
849
|
+
context: <% PROJECT_NAME >-dev
|
|
850
|
+
name: e2e_test
|
|
851
|
+
requires:
|
|
852
|
+
- install_deps
|
|
853
|
+
- init_aws:
|
|
854
|
+
<<: *only_on_pr_branch
|
|
855
|
+
context: <% PROJECT_NAME >-dev
|
|
856
|
+
name: init_aws_eks_pr
|
|
857
|
+
job_type: 'eks_pr'
|
|
858
|
+
requires:
|
|
859
|
+
- install_deps
|
|
860
|
+
- init_aws_oidc:
|
|
861
|
+
<<: *only_on_pr_branch
|
|
862
|
+
context: <% PROJECT_NAME >-dev
|
|
863
|
+
name: aws_oidc
|
|
864
|
+
requires:
|
|
865
|
+
- install_deps
|
|
866
|
+
- test_unit
|
|
867
|
+
- lint
|
|
868
|
+
- deploy_terraform:
|
|
869
|
+
<<: *only_on_pr_branch
|
|
870
|
+
context: <% PROJECT_NAME >-dev
|
|
871
|
+
name: deploy_terraform__<< matrix.folder >>
|
|
872
|
+
matrix:
|
|
873
|
+
parameters:
|
|
874
|
+
folder: [terraform-ecr, terraform-newrelic]
|
|
875
|
+
project: '<% PROJECT_NAME >'
|
|
876
|
+
apply: false
|
|
877
|
+
requires:
|
|
878
|
+
- aws_oidc
|
|
879
|
+
- publish_docker:
|
|
880
|
+
<<: *only_on_pr_branch
|
|
881
|
+
context: <% PROJECT_NAME >-dev
|
|
882
|
+
name: publish_docker
|
|
883
|
+
dockerfile: "Dockerfile"
|
|
884
|
+
requires:
|
|
885
|
+
- install_deps
|
|
886
|
+
- aws_oidc
|
|
887
|
+
- upgrade_helm:
|
|
888
|
+
<<: *only_on_pr_branch
|
|
889
|
+
context: <% PROJECT_NAME >-dev
|
|
890
|
+
name: deploy_to_pr
|
|
891
|
+
create: true
|
|
892
|
+
environment: pr
|
|
893
|
+
node_env: development
|
|
894
|
+
requires:
|
|
895
|
+
- init_aws_eks_pr
|
|
896
|
+
- publish_docker
|
|
897
|
+
- add_github_comment:
|
|
898
|
+
<<: *only_on_pr_branch
|
|
899
|
+
context: <% PROJECT_NAME >-prod
|
|
900
|
+
requires:
|
|
901
|
+
- deploy_to_pr
|
|
902
|
+
|
|
903
|
+
remove_pr:
|
|
904
|
+
when:
|
|
905
|
+
not:
|
|
906
|
+
equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
907
|
+
jobs:
|
|
908
|
+
- init_aws:
|
|
909
|
+
<<: *only_on_master_branch
|
|
910
|
+
context: <% PROJECT_NAME >-dev
|
|
911
|
+
name: init_aws_eks_pr
|
|
912
|
+
job_type: 'eks_pr'
|
|
913
|
+
- uninstall_helm:
|
|
914
|
+
<<: *only_on_master_branch
|
|
915
|
+
context: <% PROJECT_NAME >-dev
|
|
916
|
+
name: destroy_pr
|
|
917
|
+
environment: pr
|
|
918
|
+
requires:
|
|
919
|
+
- init_aws_eks_pr
|
|
920
|
+
|
|
921
|
+
build_and_deploy:
|
|
922
|
+
when:
|
|
923
|
+
and:
|
|
924
|
+
- equal: [true, << pipeline.parameters.run_build_workflow >>]
|
|
925
|
+
- not:
|
|
926
|
+
equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
927
|
+
jobs:
|
|
928
|
+
- bump_version:
|
|
929
|
+
<<: *only_on_master_branch
|
|
930
|
+
context: <% PROJECT_NAME >-dev
|
|
931
|
+
name: bump_version
|
|
932
|
+
- install_deps:
|
|
933
|
+
name: install_deps
|
|
934
|
+
context: <% PROJECT_NAME >-dev
|
|
935
|
+
<<: *only_on_master_branch
|
|
936
|
+
requires:
|
|
937
|
+
- bump_version
|
|
938
|
+
- e2e_test:
|
|
939
|
+
<<: *only_on_master_branch
|
|
940
|
+
context: <% PROJECT_NAME >-dev
|
|
941
|
+
name: e2e_test
|
|
942
|
+
requires:
|
|
943
|
+
- install_deps
|
|
944
|
+
- init_aws:
|
|
945
|
+
<<: *only_on_master_branch
|
|
946
|
+
context: <% PROJECT_NAME >-dev
|
|
947
|
+
name: init_aws_eks_dev
|
|
948
|
+
job_type: 'eks_dev'
|
|
949
|
+
requires:
|
|
950
|
+
- install_deps
|
|
951
|
+
- init_aws_oidc:
|
|
952
|
+
<<: *only_on_master_branch
|
|
953
|
+
context: <% PROJECT_NAME >-dev
|
|
954
|
+
name: aws_oidc
|
|
955
|
+
requires:
|
|
956
|
+
- install_deps
|
|
957
|
+
- deploy_terraform:
|
|
958
|
+
<<: *only_on_master_branch
|
|
959
|
+
context: <% PROJECT_NAME >-dev
|
|
960
|
+
name: deploy_terraform_ecr
|
|
961
|
+
project: '<% PROJECT_NAME >'
|
|
962
|
+
folder: 'terraform-ecr'
|
|
963
|
+
environment: dev
|
|
964
|
+
apply: true
|
|
965
|
+
requires:
|
|
966
|
+
- aws_oidc
|
|
967
|
+
- publish_docker:
|
|
968
|
+
<<: *only_on_master_branch
|
|
969
|
+
context: <% PROJECT_NAME >-dev
|
|
970
|
+
name: publish_docker
|
|
971
|
+
requires:
|
|
972
|
+
- install_deps
|
|
973
|
+
- e2e_test
|
|
974
|
+
- aws_oidc
|
|
975
|
+
- deploy_terraform_ecr
|
|
976
|
+
- trigger_workflow_by_workspace:
|
|
977
|
+
<<: *only_on_master_branch
|
|
978
|
+
context: <% PROJECT_NAME >-dev
|
|
979
|
+
name: trigger_deploy_to_dev_workflow
|
|
980
|
+
workflow: deploy_to_dev_workflow
|
|
981
|
+
requires:
|
|
982
|
+
- publish_docker
|
|
983
|
+
|
|
984
|
+
deploy_to_dev_workflow:
|
|
985
|
+
when:
|
|
986
|
+
and:
|
|
987
|
+
- equal: [true, << pipeline.parameters.run_deploy_to_dev_workflow >>]
|
|
988
|
+
- not:
|
|
989
|
+
equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
990
|
+
jobs:
|
|
991
|
+
- slack_deploy_approval:
|
|
992
|
+
<<: *only_on_tags
|
|
993
|
+
context: <% PROJECT_NAME >-dev
|
|
994
|
+
approval: false
|
|
995
|
+
environment: DEV
|
|
996
|
+
- install_deps:
|
|
997
|
+
name: install_deps
|
|
998
|
+
context: <% PROJECT_NAME >-dev
|
|
999
|
+
<<: *only_on_tags
|
|
1000
|
+
- init_aws:
|
|
1001
|
+
<<: *only_on_tags
|
|
1002
|
+
context: <% PROJECT_NAME >-dev
|
|
1003
|
+
name: init_aws_eks_dev
|
|
1004
|
+
job_type: 'eks_dev'
|
|
1005
|
+
requires:
|
|
1006
|
+
- install_deps
|
|
1007
|
+
- init_aws_oidc:
|
|
1008
|
+
<<: *only_on_tags
|
|
1009
|
+
context: <% PROJECT_NAME >-dev
|
|
1010
|
+
name: aws_oidc_dev
|
|
1011
|
+
requires:
|
|
1012
|
+
- slack_deploy_approval
|
|
1013
|
+
- upgrade_helm:
|
|
1014
|
+
<<: *only_on_tags
|
|
1015
|
+
context: <% PROJECT_NAME >-dev
|
|
1016
|
+
name: deploy_to_dev
|
|
1017
|
+
create: true
|
|
1018
|
+
environment: dev
|
|
1019
|
+
node_env: development
|
|
1020
|
+
requires:
|
|
1021
|
+
- aws_oidc_dev
|
|
1022
|
+
- init_aws_eks_dev
|
|
1023
|
+
- deploy_terraform:
|
|
1024
|
+
<<: *only_on_tags
|
|
1025
|
+
context: <% PROJECT_NAME >-dev
|
|
1026
|
+
name: deploy_terraform_newrelic_dev
|
|
1027
|
+
project: '<% PROJECT_NAME >'
|
|
1028
|
+
folder: 'terraform-newrelic'
|
|
1029
|
+
environment: dev
|
|
1030
|
+
apply: true
|
|
1031
|
+
requires:
|
|
1032
|
+
- deploy_to_dev
|
|
1033
|
+
- trigger_workflow_by_circle_tag:
|
|
1034
|
+
<<: *only_on_tags
|
|
1035
|
+
context: <% PROJECT_NAME >-dev
|
|
1036
|
+
name: trigger_deploy_to_staging_workflow
|
|
1037
|
+
workflow: deploy_to_staging_workflow
|
|
1038
|
+
requires:
|
|
1039
|
+
- deploy_terraform_newrelic_dev
|
|
1040
|
+
|
|
1041
|
+
deploy_to_staging_workflow:
|
|
1042
|
+
when:
|
|
1043
|
+
and:
|
|
1044
|
+
- equal:
|
|
1045
|
+
[true, << pipeline.parameters.run_deploy_to_staging_workflow >>]
|
|
1046
|
+
- not:
|
|
1047
|
+
equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
1048
|
+
jobs:
|
|
1049
|
+
- slack_deploy_approval:
|
|
1050
|
+
<<: *only_on_tags
|
|
1051
|
+
context: <% PROJECT_NAME >-stage
|
|
1052
|
+
name: slack_deploy_approval
|
|
1053
|
+
approval: true
|
|
1054
|
+
environment: STAGING
|
|
1055
|
+
- approve_deploy_to_staging:
|
|
1056
|
+
<<: *only_on_tags
|
|
1057
|
+
type: approval
|
|
1058
|
+
- init_aws_oidc:
|
|
1059
|
+
<<: *only_on_tags
|
|
1060
|
+
context: <% PROJECT_NAME >-stage
|
|
1061
|
+
name: aws_oidc_staging
|
|
1062
|
+
requires:
|
|
1063
|
+
- approve_deploy_to_staging
|
|
1064
|
+
- init_aws:
|
|
1065
|
+
<<: *only_on_tags
|
|
1066
|
+
name: init_aws_eks_staging
|
|
1067
|
+
context: <% PROJECT_NAME >-stage
|
|
1068
|
+
job_type: 'eks_staging'
|
|
1069
|
+
requires:
|
|
1070
|
+
- aws_oidc_staging
|
|
1071
|
+
- upgrade_helm:
|
|
1072
|
+
<<: *only_on_tags
|
|
1073
|
+
name: deploy_to_staging
|
|
1074
|
+
context: <% PROJECT_NAME >-stage
|
|
1075
|
+
environment: staging
|
|
1076
|
+
requires:
|
|
1077
|
+
- init_aws_eks_staging
|
|
1078
|
+
- deploy_terraform:
|
|
1079
|
+
<<: *only_on_tags
|
|
1080
|
+
context: <% PROJECT_NAME >-stage
|
|
1081
|
+
name: deploy_terraform_newrelic_staging
|
|
1082
|
+
project: '<% PROJECT_NAME >'
|
|
1083
|
+
folder: 'terraform-newrelic'
|
|
1084
|
+
environment: staging
|
|
1085
|
+
apply: true
|
|
1086
|
+
requires:
|
|
1087
|
+
- deploy_to_staging
|
|
1088
|
+
- trigger_workflow_by_circle_tag:
|
|
1089
|
+
<<: *only_on_tags
|
|
1090
|
+
context: <% PROJECT_NAME >-stage
|
|
1091
|
+
name: trigger_deploy_to_prod_workflow
|
|
1092
|
+
workflow: deploy_to_prod_workflow
|
|
1093
|
+
requires:
|
|
1094
|
+
- deploy_to_staging
|
|
1095
|
+
|
|
1096
|
+
deploy_to_prod_workflow:
|
|
1097
|
+
when:
|
|
1098
|
+
and:
|
|
1099
|
+
- equal: [true, << pipeline.parameters.run_deploy_to_prod_workflow >>]
|
|
1100
|
+
- not:
|
|
1101
|
+
equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
1102
|
+
jobs:
|
|
1103
|
+
- slack_deploy_approval:
|
|
1104
|
+
<<: *only_on_tags
|
|
1105
|
+
context: <% PROJECT_NAME >-prod
|
|
1106
|
+
name: slack_deploy_approval
|
|
1107
|
+
approval: true
|
|
1108
|
+
environment: PROD
|
|
1109
|
+
- approve_deploy_to_prod:
|
|
1110
|
+
<<: *only_on_tags
|
|
1111
|
+
type: approval
|
|
1112
|
+
- init_aws_oidc:
|
|
1113
|
+
<<: *only_on_tags
|
|
1114
|
+
context: <% PROJECT_NAME >-prod
|
|
1115
|
+
name: aws_oidc_prod
|
|
1116
|
+
requires:
|
|
1117
|
+
- approve_deploy_to_prod
|
|
1118
|
+
- release-api/prerelease:
|
|
1119
|
+
<<: *only_on_tags
|
|
1120
|
+
context: <% PROJECT_NAME >-prod
|
|
1121
|
+
use_specific_github_creds: false #!Comment!Optional - use it only if your team have GitHub user and API token
|
|
1122
|
+
change_request_app_id: ''
|
|
1123
|
+
change_request_description: ''
|
|
1124
|
+
short_description: ''
|
|
1125
|
+
email_address: ''
|
|
1126
|
+
platform: ''
|
|
1127
|
+
os_type: ''
|
|
1128
|
+
partner: ''
|
|
1129
|
+
product_owner: ''
|
|
1130
|
+
priority: ''
|
|
1131
|
+
business_justification: ''
|
|
1132
|
+
testing_method: ''
|
|
1133
|
+
testing_tools: ''
|
|
1134
|
+
requires:
|
|
1135
|
+
- approve_deploy_to_prod
|
|
1136
|
+
- init_aws:
|
|
1137
|
+
<<: *only_on_tags
|
|
1138
|
+
name: init_aws_eks_prod
|
|
1139
|
+
context: <% PROJECT_NAME >-prod
|
|
1140
|
+
job_type: 'eks_prod'
|
|
1141
|
+
requires:
|
|
1142
|
+
- aws_oidc_prod
|
|
1143
|
+
- upgrade_helm:
|
|
1144
|
+
<<: *only_on_tags
|
|
1145
|
+
name: deploy_to_prod
|
|
1146
|
+
context: <% PROJECT_NAME >-prod
|
|
1147
|
+
environment: prod
|
|
1148
|
+
requires:
|
|
1149
|
+
- init_aws_eks_prod
|
|
1150
|
+
- deploy_terraform:
|
|
1151
|
+
<<: *only_on_tags
|
|
1152
|
+
context: <% PROJECT_NAME >-prod
|
|
1153
|
+
name: deploy_terraform_newrelic_prod
|
|
1154
|
+
project: '<% PROJECT_NAME >'
|
|
1155
|
+
folder: 'terraform-newrelic'
|
|
1156
|
+
environment: prod
|
|
1157
|
+
apply: true
|
|
1158
|
+
requires:
|
|
1159
|
+
- deploy_to_prod
|
|
1160
|
+
- release-api/release:
|
|
1161
|
+
<<: *only_on_tags
|
|
1162
|
+
context: <% PROJECT_NAME >-prod
|
|
1163
|
+
use_specific_github_creds: false #!Comment!Optional - use it only if your team have GitHub user and API token
|
|
1164
|
+
create_newrelic_deployment: false #!Comment! Set this to false, if your application does not have NewRelic App Name
|
|
1165
|
+
requires:
|
|
1166
|
+
- release-api/prerelease
|
|
1167
|
+
- approve_deploy_to_prod
|
|
1168
|
+
- deploy_to_prod
|
|
1169
|
+
|
|
1170
|
+
# You must go to project setting > triggers and add a trigger call remove_old_environments
|
|
1171
|
+
# in CircleCi. This should be set to be triggered at midnight or around that time.
|
|
1172
|
+
remove_old_environments:
|
|
1173
|
+
when:
|
|
1174
|
+
and:
|
|
1175
|
+
- equal: [scheduled_pipeline, << pipeline.trigger_source >>]
|
|
1176
|
+
- equal: ['remove_old_environments', << pipeline.schedule.name >>]
|
|
1177
|
+
jobs:
|
|
1178
|
+
- init_aws:
|
|
1179
|
+
<<: *only_on_master_branch
|
|
1180
|
+
context: <% PROJECT_NAME >-dev
|
|
1181
|
+
name: init_aws_eks_pr
|
|
1182
|
+
job_type: 'eks_pr'
|
|
1183
|
+
- remove_all_pr_environments:
|
|
1184
|
+
<<: *only_on_master_branch
|
|
1185
|
+
context: <% PROJECT_NAME >-dev
|
|
1186
|
+
requires:
|
|
1187
|
+
- init_aws_eks_pr
|