From 0871f740e4b69c5748adad51296ee9aa9db1aeba Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 27 Sep 2023 17:34:02 +0530 Subject: [PATCH 1/8] CSR-1411 Add appointment details & cart to 'confirmation' page --- src/helpers/date-helper.js | 54 ++++++++++ src/layouts/confirmation/confirmation.vue | 122 ++++++++++++++++++++++ 2 files changed, 176 insertions(+) diff --git a/src/helpers/date-helper.js b/src/helpers/date-helper.js index dce497231..48b3122ab 100644 --- a/src/helpers/date-helper.js +++ b/src/helpers/date-helper.js @@ -8,3 +8,57 @@ export function getDateDifferenceInDays(startDate, endDate) { // To calculate the no. of days between two dates return Difference_In_Time / (1000 * 3600 * 24); } + +export function getFullDayName(date) { + if (date instanceof Date !== true) return; + const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; + return days[date.getDay()]; +} +export function getFullMonthName(date) { + if (date instanceof Date !== true) return; + const monthNames = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ]; + return monthNames[date.getMonth()]; +} +export function get12HourTimeFormat(time) { + // Check correct time format and split into components + time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)?$/) || [time]; + + if (time.length > 1) { + // If time format correct + time = time.slice(1); // Remove full string match value + time[5] = +time[0] < 12 ? " AM" : " PM"; // Set AM/PM + time[0] = +time[0] % 12 || 12; // Adjust hours + } + return time.join(""); // return adjusted time or original string +} +export function get12HourTimeMobileFormat(time) { + // Check correct time format and split into components + time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)?$/) || [time]; + + if (time.length > 1) { + // If time format correct + const min = time[3]; + time = time.slice(1); // Remove full string match value + if (Number(min) == 0) { + time = time.slice(0, 1); // Remove minute value + time[1] = +time[0] < 12 ? " AM" : " PM"; // Set AM/PM + } else { + time[5] = +time[0] < 12 ? " AM" : " PM"; // Set AM/PM + } + time[0] = +time[0] % 12 || 12; // Adjust hours + } + return time.join(""); // return adjusted time or original string +} diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 6c4645901..30c38983f 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,6 +5,19 @@
+
+ + +
+
+ +
+
{{ this.getScheduleDate() }}
+
{{ this.getScheduleTime() }}
+
Add to calendar
+
// Components import funnelHeader from "@/fmg-components/funnel-header/funnel-header"; +import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner"; import navbar from "@/fmg-components/nav-bar/nav-bar"; //Supporting files import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; import { settleAllPromises } from "@/helpers/layout-helper"; import store from "@/store"; + +import { + getFullDayName, + getFullMonthName, + get12HourTimeFormat, + get12HourTimeMobileFormat, +} from "@/helpers/date-helper"; export default { name: "confirmation", async beforeRouteEnter(to, from, next) { @@ -47,6 +68,71 @@ export default { vm.setCmsContent(resultMap.cmsContent); }); }, + computed: { + ScheduleConfirmationText() { + return this.getCmsContent("ScheduleConfirmationWidget", "BodyText"); + }, + ScheduleConfirmationImage() { + return this.getCmsContent("ScheduleConfirmationWidget", "Image"); + }, + ScheduleDate() { + return store.getters.order.schedule.date; + }, + AppointmentType() { + return store.getters.order.serviceLocation.appointmentType; + }, + ScheduleStartTime() { + return store.getters.order.schedule.startTime; + }, + ScheduleEndTime() { + return store.getters.order.schedule.endTime; + }, + InShopWordingText() { + return this.getCmsContent("InShopWordingWidget", "BodyText"); + }, + MobileWordingText() { + return this.getCmsContent("MobileWordingWidget", "BodyText"); + }, + DropOffWordingText() { + return this.getCmsContent("DropOffWordingWidget", "BodyText"); + }, + ServiceLocationAddress() { + return store.getters.order.serviceLocation.address; + }, + ServiceLocationAddress2() { + return store.getters.order.serviceLocation.address2; + }, + ServiceLocationCity() { + return store.getters.order.serviceLocation.city; + }, + ServiceLocationState() { + return store.getters.order.serviceLocation.state; + }, + ServiceLocationZipCode() { + return store.getters.order.serviceLocation.zipCode; + }, + ProviderAddress() { + return store.getters.order.serviceLocation.provider.address.streetAddress; + }, + ProviderCity() { + return store.getters.order.serviceLocation.provider.address.city; + }, + ProviderState() { + return store.getters.order.serviceLocation.provider.address.state; + }, + ProviderZipCode() { + return store.getters.order.serviceLocation.provider.address.zipCode; + }, + Year() { + return store.getters.order.vehicle.year; + }, + Make() { + return store.getters.order.vehicle.make; + }, + Model() { + return store.getters.order.vehicle.model; + }, + }, methods: { arePagePrerequisitesValid() { // Service Location @@ -78,10 +164,46 @@ export default { return serviceLocationReqs && scheduleReqs; }, forwardButtonAction() {}, + getScheduleDate() { + const scheduleDate = new Date(this.ScheduleDate); + return `${getFullDayName(scheduleDate)}, ${getFullMonthName( + scheduleDate + )} ${scheduleDate.getDate()}`; + }, + getScheduleTime() { + if (this.AppointmentType == AppointmentTypeStrings.MOBILE) { + return `Between ${get12HourTimeMobileFormat( + this.ScheduleStartTime + )} - ${get12HourTimeMobileFormat(this.ScheduleEndTime)}`; + } else if (this.AppointmentType == AppointmentTypeStrings.DROP_OFF) { + return `Drop off before 9:30 AM`; + } else { + return `at ${get12HourTimeFormat(this.ScheduleStartTime)}`; + } + }, + + getAppointmentWordingText() { + const ymm = `${this.Year} ${this.Make} ${this.Model}`; + if (this.AppointmentType == AppointmentTypeStrings.MOBILE) { + const address = `${ + this.ServiceLocationAddress2 ? this.ServiceLocationAddress2 + "," : "" + } ${this.ServiceLocationAddress},
${this.ServiceLocationCity}, ${ + this.ServiceLocationState + } ${this.ServiceLocationZipCode}`; + return this.MobileWordingText.replace("#ADDRESS", address).replace("#YMM", ymm); + } else if (this.AppointmentType == AppointmentTypeStrings.DROP_OFF) { + const address = `${this.ProviderAddress},
${this.ProviderCity}, ${this.ProviderState} ${this.ProviderZipCode}`; + return this.DropOffWordingText.replace("#ADDRESS", address).replace("#YMM", ymm); + } else { + const address = `${this.ProviderAddress},
${this.ProviderCity}, ${this.ProviderState} ${this.ProviderZipCode}`; + return this.InShopWordingText.replace("#ADDRESS", address).replace("#YMM", ymm); + } + }, }, components: { funnelHeader, navbar, + vehicleBanner, }, }; From c9f602ccab1b3904a46e781cbe0fa7e20bc3cac9 Mon Sep 17 00:00:00 2001 From: sheena Date: Tue, 3 Oct 2023 15:30:27 +0530 Subject: [PATCH 2/8] CSR-1411 ADD UI to the add calendar --- src/assets/img/icons/add-to-calendar.svg | 11 +++ src/layouts/confirmation/confirmation.vue | 103 ++++++++++++++++++++-- 2 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 src/assets/img/icons/add-to-calendar.svg diff --git a/src/assets/img/icons/add-to-calendar.svg b/src/assets/img/icons/add-to-calendar.svg new file mode 100644 index 000000000..fd621c5c5 --- /dev/null +++ b/src/assets/img/icons/add-to-calendar.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 30c38983f..1cb06fa72 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,19 +5,38 @@
-
+
-
- +
+
+ +
+
+

{{ this.getScheduleDate() }}

+

{{ this.getScheduleTime() }}

+
+ +
+
+ +
+
+
-
{{ this.getScheduleDate() }}
-
{{ this.getScheduleTime() }}
-
Add to calendar
-
+ + + From b48e0edc7b1792f31d76201fee7ab126f373c84b Mon Sep 17 00:00:00 2001 From: sheena Date: Tue, 3 Oct 2023 15:49:36 +0530 Subject: [PATCH 3/8] Update confirmation.vue Add color --- src/layouts/confirmation/confirmation.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 1cb06fa72..726a222df 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -289,6 +289,7 @@ export default { font-weight: 400; font-size: 20px; padding: 5px; + color:$black; } } From 9f5612c2f7cfb034a227099b290b7f5d638768d2 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 4 Oct 2023 13:56:11 +0530 Subject: [PATCH 4/8] confirmation email confirmation email placeholder --- src/constants/application-config.js | 1 + src/layouts/confirmation/confirmation.spec.js | 55 ++++++++++++++----- src/layouts/confirmation/confirmation.vue | 40 +++++++++++--- vue.config.js | 1 + vue.release.config.js | 1 + 5 files changed, 78 insertions(+), 20 deletions(-) diff --git a/src/constants/application-config.js b/src/constants/application-config.js index 4c5305783..808acfe0a 100644 --- a/src/constants/application-config.js +++ b/src/constants/application-config.js @@ -10,6 +10,7 @@ const applicationConfig = { PAGE_QUERYSTRING: "fmgPage", SITE_ENTRY_TRIGGER_VALUE: "FixMyGlass", CASH_PARENT_ACCOUNT_NUMBER: 167132, + MY_ACCOUNT: process.env.VUE_APP_MY_ACCOUNT, }; export { applicationConfig }; diff --git a/src/layouts/confirmation/confirmation.spec.js b/src/layouts/confirmation/confirmation.spec.js index 1f71aa033..41795d660 100644 --- a/src/layouts/confirmation/confirmation.spec.js +++ b/src/layouts/confirmation/confirmation.spec.js @@ -6,6 +6,7 @@ import { shallowMount } from "@vue/test-utils"; import { nextTick } from "vue"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import store from "@/store"; +import router from "@/router"; // Mock our module for promises. jest.mock("@/helpers/layout-helper.js", () => ({ @@ -54,6 +55,11 @@ beforeEach(() => { isRepair: false, }, referralNumber: "1234567", + vehicle: { + year: "2004", + make: "Ford", + model: "F Series F250", + }, }, payment: { isInsurance: true, @@ -71,9 +77,19 @@ afterEach(() => { }); describe("confirmation.vue", () => { + const realLocation = window.location; + + beforeAll(() => { + delete window.location; + window.location = { ...realLocation, assign: jest.fn() }; + }); + + afterAll(() => { + window.location = realLocation; + }); test("arePagePrerequisitesValid should be true ", async () => { //Arrange - const { wrapper } = setupMocks(); + const { wrapper } = setupMocks({}); //Act let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); @@ -82,20 +98,33 @@ describe("confirmation.vue", () => { //Assert expect(arePagePrerequisitesValid).toBe(true); }); + test("'Back to safelite.com' button should take user back to safelite.com", async () => { + //Arrange + const { wrapper } = setupMocks({}); + + //Act + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(window.location.assign).toHaveBeenCalled(); + }); }); -function setupMocks() { - const wrapper = shallowMount( - confirmation, - getMountOptions({ - router: { - navigate: jest.fn(), - navigate: jest.fn(), - navigateWithSaving: jest.fn(), - navigateWithoutSaving: jest.fn(), - }, - }) - ); +const wordingText = "wording Text"; +function setupMocks({ customMountOptions }) { + const mountOptions = getMountOptions({ + ...customMountOptions, + }); + mountOptions.mixins = [ + { + methods: { + getCmsContent: jest.fn().mockImplementation(() => { + return wordingText; + }), + }, + }, + ]; + const wrapper = shallowMount(confirmation, mountOptions); return { wrapper }; } diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 726a222df..bdb40dd30 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -36,7 +36,7 @@
- +
"); + }, }, components: { funnelHeader, @@ -228,14 +243,13 @@ export default { diff --git a/vue.config.js b/vue.config.js index 64c83dd9e..9d4e6b0db 100644 --- a/vue.config.js +++ b/vue.config.js @@ -5,6 +5,7 @@ process.env.VUE_APP_HERITAGE_FUNNEL = process.env.VUE_APP_GOOGLE_PLACES_API_KEY = "AIzaSyDptGCkOPgN2uWJOy4ou4M33phRD4MAoJo"; process.env.VUE_APP_CURRENT_ENVIRONMENT = "Localhost"; +process.env.VUE_APP_MY_ACCOUNT = "https://myaccountdev.safelite.com/"; // GA & GTM process.env.VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=amlAYNhxUxuskQo7jmjadg>m_preview=env-38>m_cookies_win=x';f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-M6XCRH');"; diff --git a/vue.release.config.js b/vue.release.config.js index ad2732e41..fc0376780 100644 --- a/vue.release.config.js +++ b/vue.release.config.js @@ -2,6 +2,7 @@ process.env.VUE_APP_CONSUMER_CF_DISTRO = "__VUE_APP_CONSUMER_CF_DISTRO__"; process.env.VUE_APP_GOOGLE_PLACES_API_KEY = "__VUE_APP_GOOGLE_PLACES_API_KEY__"; process.env.VUE_APP_HERITAGE_FUNNEL = "__VUE_APP_HERITAGE_FUNNEL__"; process.env.VUE_APP_CURRENT_ENVIRONMENT = "__VUE_APP_CURRENT_ENVIRONMENT__"; +process.env.VUE_APP_MY_ACCOUNT = "__VUE_APP_MY_ACCOUNT__"; // GA & GTM process.env.VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY = "__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__"; From fc4d5e6cd24036cd2f935c73d0a7214a77f7ac98 Mon Sep 17 00:00:00 2001 From: sheena Date: Wed, 4 Oct 2023 16:14:44 +0530 Subject: [PATCH 5/8] Update confirmation.vue ADDED Padding font-size and color --- src/layouts/confirmation/confirmation.vue | 41 ++++++++++++----------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index bdb40dd30..e9af16564 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -34,9 +34,9 @@
-
+
-
+
From b420688c60481718cfefae8ce914ab3e3448c1b0 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 4 Oct 2023 16:44:15 +0530 Subject: [PATCH 6/8] Update confirmation.spec.js --- src/layouts/confirmation/confirmation.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/layouts/confirmation/confirmation.spec.js b/src/layouts/confirmation/confirmation.spec.js index 41795d660..dd165c686 100644 --- a/src/layouts/confirmation/confirmation.spec.js +++ b/src/layouts/confirmation/confirmation.spec.js @@ -60,6 +60,9 @@ beforeEach(() => { make: "Ford", model: "F Series F250", }, + customer:{ + emailAddress:"test@test.com", + } }, payment: { isInsurance: true, From eecfa64fe9072555be216ffea44ef2eba3be600f Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 4 Oct 2023 16:56:30 +0530 Subject: [PATCH 7/8] formatting code formatting code --- src/layouts/confirmation/confirmation.spec.js | 6 +-- src/layouts/confirmation/confirmation.vue | 25 ++++++----- vue.config.js | 42 +++++++++---------- vue.release.config.js | 23 +++++----- 4 files changed, 49 insertions(+), 47 deletions(-) diff --git a/src/layouts/confirmation/confirmation.spec.js b/src/layouts/confirmation/confirmation.spec.js index dd165c686..c60b19c26 100644 --- a/src/layouts/confirmation/confirmation.spec.js +++ b/src/layouts/confirmation/confirmation.spec.js @@ -60,9 +60,9 @@ beforeEach(() => { make: "Ford", model: "F Series F250", }, - customer:{ - emailAddress:"test@test.com", - } + customer: { + emailAddress: "test@test.com", + }, }, payment: { isInsurance: true, diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index e9af16564..059c09230 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -34,7 +34,9 @@
-
+
diff --git a/vue.config.js b/vue.config.js index 9d4e6b0db..411bce616 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,37 +1,35 @@ -process.env.VUE_APP_CONSUMER_CF_DISTRO = - "https://digitalapi.dev.safelite.io"; -process.env.VUE_APP_HERITAGE_FUNNEL = - "http://localhost:38000/default.aspx"; -process.env.VUE_APP_GOOGLE_PLACES_API_KEY = - "AIzaSyDptGCkOPgN2uWJOy4ou4M33phRD4MAoJo"; +process.env.VUE_APP_CONSUMER_CF_DISTRO = "https://digitalapi.dev.safelite.io"; +process.env.VUE_APP_HERITAGE_FUNNEL = "http://localhost:38000/default.aspx"; +process.env.VUE_APP_GOOGLE_PLACES_API_KEY = "AIzaSyDptGCkOPgN2uWJOy4ou4M33phRD4MAoJo"; process.env.VUE_APP_CURRENT_ENVIRONMENT = "Localhost"; process.env.VUE_APP_MY_ACCOUNT = "https://myaccountdev.safelite.com/"; // GA & GTM -process.env.VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=amlAYNhxUxuskQo7jmjadg>m_preview=env-38>m_cookies_win=x';f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-M6XCRH');"; - -process.env.VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC = "https://www.googletagmanager.com/ns.html?id=GTM-M6XCRH>m_auth=amlAYNhxUxuskQo7jmjadg>m_preview=env-38>m_cookies_win=x"; +process.env.VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY = + "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=amlAYNhxUxuskQo7jmjadg>m_preview=env-38>m_cookies_win=x';f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-M6XCRH');"; +process.env.VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC = + "https://www.googletagmanager.com/ns.html?id=GTM-M6XCRH>m_auth=amlAYNhxUxuskQo7jmjadg>m_preview=env-38>m_cookies_win=x"; module.exports = { - outputDir: "dist/fmg", - publicPath: "/fmg", - css: { - loaderOptions: { - sass: { - // Load Order Matters!!! - // Note: only include functions, variables and mixins here - prependData: ` + outputDir: "dist/fmg", + publicPath: "/fmg", + css: { + loaderOptions: { + sass: { + // Load Order Matters!!! + // Note: only include functions, variables and mixins here + prependData: ` @import "./node_modules/bootstrap/scss/functions"; @import "@/styles/ux-variables.scss"; @import "./node_modules/bootstrap/scss/variables"; @import "./node_modules/bootstrap/scss/mixins"; @import "@/styles/mixins/customMixins"; `, - }, + }, + }, + }, + configureWebpack: { + devtool: "source-map", }, - }, - configureWebpack: { - devtool: 'source-map' - }, }; diff --git a/vue.release.config.js b/vue.release.config.js index fc0376780..fe0867cd2 100644 --- a/vue.release.config.js +++ b/vue.release.config.js @@ -6,24 +6,25 @@ process.env.VUE_APP_MY_ACCOUNT = "__VUE_APP_MY_ACCOUNT__"; // GA & GTM process.env.VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY = "__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__"; -process.env.VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC = "__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__" +process.env.VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC = + "__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__"; module.exports = { - outputDir: "dist/fmg", - publicPath: "/fmg", - css: { - loaderOptions: { - sass: { - // Load Order Matters!!! - // Note: only include functions, variables and mixins here - prependData: ` + outputDir: "dist/fmg", + publicPath: "/fmg", + css: { + loaderOptions: { + sass: { + // Load Order Matters!!! + // Note: only include functions, variables and mixins here + prependData: ` @import "./node_modules/bootstrap/scss/functions"; @import "@/styles/ux-variables.scss"; @import "./node_modules/bootstrap/scss/variables"; @import "./node_modules/bootstrap/scss/mixins"; @import "@/styles/mixins/customMixins"; `, - }, + }, + }, }, - }, }; From eec75ef94fab6d26242079ce0fd29d3e62cc0383 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 4 Oct 2023 18:23:00 +0530 Subject: [PATCH 8/8] Update azure-pipelines.yml add environment variable __VUE_APP_MY_ACCOUNT__ to hold customer portal link --- azure-pipelines.yml | 586 ++++++++++++++++++++++---------------------- 1 file changed, 294 insertions(+), 292 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0e5753e06..d2a61a5d3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,303 +1,305 @@ trigger: - branches: - include: [develop, release/*] - paths: - exclude: - - deployment/* - include: - - "*" + branches: + include: [develop, release/*] + paths: + exclude: + - deployment/* + include: + - "*" pr: - branches: - include: ["*"] - paths: - exclude: - - deployment/* - include: - - "*" + branches: + include: ["*"] + paths: + exclude: + - deployment/* + include: + - "*" resources: - containers: - - container: node - image: packagerepository.sagaws.net:8082/safelite/node-build:15 - - container: awscli - image: packagerepository.sagaws.net:8082/safelite/awscli2-build:3.9 - - container: prettier-node - image: packagerepository.sagaws.net:8082/safelite/prettier-node-build:18 - repositories: - - repository: AzureDevOps - type: github - name: Safelite/AzureDevOps - endpoint: Safelite - ref: refs/tags/t5.5.40 + containers: + - container: node + image: packagerepository.sagaws.net:8082/safelite/node-build:15 + - container: awscli + image: packagerepository.sagaws.net:8082/safelite/awscli2-build:3.9 + - container: prettier-node + image: packagerepository.sagaws.net:8082/safelite/prettier-node-build:18 + repositories: + - repository: AzureDevOps + type: github + name: Safelite/AzureDevOps + endpoint: Safelite + ref: refs/tags/t5.5.40 variables: - - group: Digital-Infrastructure - - group: FixMyGlass-BuildBranches + - group: Digital-Infrastructure + - group: FixMyGlass-BuildBranches stages: - # PR's - - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: - - stage: TestFormat - displayName: Test Code Format - jobs: - - job: checkFormatting - displayName: Check formatting - container: prettier-node - steps: - - bash: prettier --check "$(Build.SourcesDirectory)/src/**/*.(js|vue)" - displayName: Run Prettier check - - - stage: TestPr - displayName: Run Unit Tests For PullRequest - jobs: - - template: templates/digital/vue-jest-run-unit-tests.yml@AzureDevOps - parameters: - nodeContainer: node - npmLocation: $(Build.SourcesDirectory) - testResultsFile: junit.xml - summaryFileLocation: $(Build.SourcesDirectory)/coverage/cobertura-coverage.xml - - ${{ else }}: - # Dev Build/Deploy - - stage: Dev - condition: eq(variables['Build.SourceBranch'], variables['dev-branch'] ) - variables: - - group: FixMyGlassDev - jobs: - - deployment: devBuildDeployment - displayName: Build and Deploy FMG - Dev - environment: digitalCloud-dev - container: node - workspace: - clean: all - strategy: - runOnce: - deploy: + # PR's + - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - stage: TestFormat + displayName: Test Code Format + jobs: + - job: checkFormatting + displayName: Check formatting + container: prettier-node steps: - - checkout: self - clean: true - - template: templates/digital/step-build-vue.yml@AzureDevOps - parameters: - buildOutputDir: dist - environment: Dev - - template: templates/digital/step-deploy-vue.yml@AzureDevOps - parameters: - artifactName: vueDistDev - awsProfile: $(devDeploymentProfile) - outputPath: /fmg/ - deployBuckets: - safelite-dev-fmg-us-east-1: - clearFolder: true - deployFolder: "" - region: us-east-1 - safelite-dev-fmg-us-east-2: - clearFolder: true - deployFolder: "" - region: us-east-2 - appDeployVariables: - __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) - __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) - __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) - __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) - __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) - __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) - __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) - indexDeployVariables: - __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) - __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(apiCfDistributionId) - paths: /* - awsProfile: $(devDeploymentProfile) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(cfDistributionId) - paths: /fmg/* - awsProfile: $(devDeploymentProfile) + - bash: prettier --check "$(Build.SourcesDirectory)/src/**/*.(js|vue)" + displayName: Run Prettier check - # Test Build/Deploy - - stage: Test - condition: eq(variables['Build.SourceBranch'], variables['test-branch'] ) - variables: - - group: FixMyGlassTest - jobs: - - deployment: testBuildDeployment - displayName: Build and Deploy FMG - Test - environment: NoApproval-All - container: node - workspace: - clean: all - strategy: - runOnce: - deploy: - steps: - - checkout: self - clean: true - - template: templates/digital/step-build-vue.yml@AzureDevOps - parameters: - buildOutputDir: dist - environment: Test - - template: templates/digital/step-deploy-vue.yml@AzureDevOps - parameters: - artifactName: vueDistTest - awsProfile: $(sysDeploymentProfile) - outputPath: /fmg/ - deployBuckets: - safelite-sys-fmg-us-east-1: - clearFolder: true - deployFolder: "" - region: us-east-1 - safelite-sys-fmg-us-east-2: - clearFolder: true - deployFolder: "" - region: us-east-2 - appDeployVariables: - __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) - __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) - __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) - __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) - __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) - __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) - __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) - indexDeployVariables: - __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) - __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(apiCfDistributionId) - paths: /* - awsProfile: $(sysDeploymentProfile) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(cfDistributionId) - paths: /fmg/* - awsProfile: $(sysDeploymentProfile) - - # QA Build/Deploy - - stage: Qa - condition: eq(variables['Build.SourceBranch'], variables['qa-branch'] ) - variables: - - group: FixMyGlassQa - jobs: - - deployment: qaBuildDeployment - displayName: Build and Deploy FMG - QA - environment: NoApproval-All - container: node - workspace: - clean: all - strategy: - runOnce: - deploy: - steps: - - checkout: self - clean: true - - template: templates/digital/step-build-vue.yml@AzureDevOps - parameters: - buildOutputDir: dist - environment: Qa - - template: templates/digital/step-deploy-vue.yml@AzureDevOps - parameters: - artifactName: vueDistQa - awsProfile: $(qaDeploymentProfile) - outputPath: /fmg/ - deployBuckets: - safelite-qa-fmg-us-east-1: - clearFolder: true - deployFolder: "" - region: us-east-1 - safelite-qa-fmg-us-east-2: - clearFolder: true - deployFolder: "" - region: us-east-2 - appDeployVariables: - __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) - __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) - __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) - __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) - __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) - __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) - __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) - indexDeployVariables: - __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) - __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(apiCfDistributionId) - paths: /* - awsProfile: $(qaDeploymentProfile) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(cfDistributionId) - paths: /fmg/* - awsProfile: $(qaDeploymentProfile) + - stage: TestPr + displayName: Run Unit Tests For PullRequest + jobs: + - template: templates/digital/vue-jest-run-unit-tests.yml@AzureDevOps + parameters: + nodeContainer: node + npmLocation: $(Build.SourcesDirectory) + testResultsFile: junit.xml + summaryFileLocation: $(Build.SourcesDirectory)/coverage/cobertura-coverage.xml + - ${{ else }}: + # Dev Build/Deploy + - stage: Dev + condition: eq(variables['Build.SourceBranch'], variables['dev-branch'] ) + variables: + - group: FixMyGlassDev + jobs: + - deployment: devBuildDeployment + displayName: Build and Deploy FMG - Dev + environment: digitalCloud-dev + container: node + workspace: + clean: all + strategy: + runOnce: + deploy: + steps: + - checkout: self + clean: true + - template: templates/digital/step-build-vue.yml@AzureDevOps + parameters: + buildOutputDir: dist + environment: Dev + - template: templates/digital/step-deploy-vue.yml@AzureDevOps + parameters: + artifactName: vueDistDev + awsProfile: $(devDeploymentProfile) + outputPath: /fmg/ + deployBuckets: + safelite-dev-fmg-us-east-1: + clearFolder: true + deployFolder: "" + region: us-east-1 + safelite-dev-fmg-us-east-2: + clearFolder: true + deployFolder: "" + region: us-east-2 + appDeployVariables: + __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) + __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) + __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) + __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) + __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) + __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) + __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) + indexDeployVariables: + __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) + __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(apiCfDistributionId) + paths: /* + awsProfile: $(devDeploymentProfile) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(cfDistributionId) + paths: /fmg/* + awsProfile: $(devDeploymentProfile) - # Prod Build/Deploy - - stage: Prod - condition: succeeded('Qa') - variables: - - group: FixMyGlassProd - jobs: - - deployment: prodBuildDeployment - displayName: Build and Deploy FMG - Prod - environment: digitalCloud-prod - container: node - workspace: - clean: all - strategy: - runOnce: - deploy: - steps: - - checkout: self - clean: true - - template: templates/digital/step-build-vue.yml@AzureDevOps - parameters: - buildOutputDir: dist - environment: Prod - - template: templates/digital/step-deploy-vue.yml@AzureDevOps - parameters: - artifactName: vueDistProd - awsProfile: $(prodDeploymentProfile) - outputPath: /fmg/ - deployBuckets: - safelite-prod-fmg-us-east-1: - clearFolder: true - deployFolder: "" - region: us-east-1 - safelite-prod-fmg-us-east-2: - clearFolder: true - deployFolder: "" - region: us-east-2 - appDeployVariables: - __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) - __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) - __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) - __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) - __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) - __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) - __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) - indexDeployVariables: - __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) - __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(apiCfDistributionId) - paths: /* - awsProfile: $(prodDeploymentProfile) - - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: - awsCliContainer: awscli - distributionId: $(cfDistributionId) - paths: /fmg/* - awsProfile: $(prodDeploymentProfile) - - template: templates/digital/auto-tag.yml@AzureDevOps - parameters: - dependsOn: prodBuildDeployment - userName: SafeliteAzureDevops - userEmail: githubazuredevops@safelite.com + # Test Build/Deploy + - stage: Test + condition: eq(variables['Build.SourceBranch'], variables['test-branch'] ) + variables: + - group: FixMyGlassTest + jobs: + - deployment: testBuildDeployment + displayName: Build and Deploy FMG - Test + environment: NoApproval-All + container: node + workspace: + clean: all + strategy: + runOnce: + deploy: + steps: + - checkout: self + clean: true + - template: templates/digital/step-build-vue.yml@AzureDevOps + parameters: + buildOutputDir: dist + environment: Test + - template: templates/digital/step-deploy-vue.yml@AzureDevOps + parameters: + artifactName: vueDistTest + awsProfile: $(sysDeploymentProfile) + outputPath: /fmg/ + deployBuckets: + safelite-sys-fmg-us-east-1: + clearFolder: true + deployFolder: "" + region: us-east-1 + safelite-sys-fmg-us-east-2: + clearFolder: true + deployFolder: "" + region: us-east-2 + appDeployVariables: + __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) + __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) + __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) + __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) + __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) + __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) + __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) + indexDeployVariables: + __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) + __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(apiCfDistributionId) + paths: /* + awsProfile: $(sysDeploymentProfile) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(cfDistributionId) + paths: /fmg/* + awsProfile: $(sysDeploymentProfile) + + # QA Build/Deploy + - stage: Qa + condition: eq(variables['Build.SourceBranch'], variables['qa-branch'] ) + variables: + - group: FixMyGlassQa + jobs: + - deployment: qaBuildDeployment + displayName: Build and Deploy FMG - QA + environment: NoApproval-All + container: node + workspace: + clean: all + strategy: + runOnce: + deploy: + steps: + - checkout: self + clean: true + - template: templates/digital/step-build-vue.yml@AzureDevOps + parameters: + buildOutputDir: dist + environment: Qa + - template: templates/digital/step-deploy-vue.yml@AzureDevOps + parameters: + artifactName: vueDistQa + awsProfile: $(qaDeploymentProfile) + outputPath: /fmg/ + deployBuckets: + safelite-qa-fmg-us-east-1: + clearFolder: true + deployFolder: "" + region: us-east-1 + safelite-qa-fmg-us-east-2: + clearFolder: true + deployFolder: "" + region: us-east-2 + appDeployVariables: + __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) + __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) + __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) + __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) + __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) + __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) + __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + indexDeployVariables: + __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) + __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(apiCfDistributionId) + paths: /* + awsProfile: $(qaDeploymentProfile) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(cfDistributionId) + paths: /fmg/* + awsProfile: $(qaDeploymentProfile) + + # Prod Build/Deploy + - stage: Prod + condition: succeeded('Qa') + variables: + - group: FixMyGlassProd + jobs: + - deployment: prodBuildDeployment + displayName: Build and Deploy FMG - Prod + environment: digitalCloud-prod + container: node + workspace: + clean: all + strategy: + runOnce: + deploy: + steps: + - checkout: self + clean: true + - template: templates/digital/step-build-vue.yml@AzureDevOps + parameters: + buildOutputDir: dist + environment: Prod + - template: templates/digital/step-deploy-vue.yml@AzureDevOps + parameters: + artifactName: vueDistProd + awsProfile: $(prodDeploymentProfile) + outputPath: /fmg/ + deployBuckets: + safelite-prod-fmg-us-east-1: + clearFolder: true + deployFolder: "" + region: us-east-1 + safelite-prod-fmg-us-east-2: + clearFolder: true + deployFolder: "" + region: us-east-2 + appDeployVariables: + __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) + __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) + __VUE_APP_HERITAGE_FUNNEL__: $(__VUE_APP_HERITAGE_FUNNEL__) + __VUE_APP_SAFELITE_HOP___: $(__VUE_APP_SAFELITE_HOP__) + __VUE_APP_PAYPAL_SUCCESS_URL__: $(__VUE_APP_PAYPAL_SUCCESS_URL__) + __VUE_APP_PAYPAL_CANCEL_URL__: $(__VUE_APP_PAYPAL_CANCEL_URL__) + __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + indexDeployVariables: + __VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__: $(__VUE_APP_GOOGLE_TAG_MANAGER_SCRIPT_BODY__) + __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(apiCfDistributionId) + paths: /* + awsProfile: $(prodDeploymentProfile) + - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps + parameters: + awsCliContainer: awscli + distributionId: $(cfDistributionId) + paths: /fmg/* + awsProfile: $(prodDeploymentProfile) + - template: templates/digital/auto-tag.yml@AzureDevOps + parameters: + dependsOn: prodBuildDeployment + userName: SafeliteAzureDevops + userEmail: githubazuredevops@safelite.com