trigger: branches: include: [develop, release/*] paths: exclude: - deployment/* include: - "*" pr: branches: include: ["*"] paths: exclude: - deployment/* include: - "*" resources: containers: - container: node image: packagerepository.sagaws.net:8082/safelite/node-build:18 - container: awscli image: packagerepository.sagaws.net:8082/safelite/awscli2-build:3.9 - container: prettier-node image: packagerepository.sagaws.net:8082/safelite/prettier-node-build:23 repositories: - repository: AzureDevOps type: github name: Safelite/AzureDevOps endpoint: Safelite ref: refs/tags/t5.6.41 variables: - 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: 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_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) __VUE_APP_SESSION_TIMEOUT_MINUTES__: $(__VUE_APP_SESSION_TIMEOUT_MINUTES__) 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__) __VUE_APP_SOLARWINDS_MONITORING_SCRIPT__: $(__VUE_APP_SOLARWINDS_MONITORING_SCRIPT__) - 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) # 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_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) __VUE_APP_SESSION_TIMEOUT_MINUTES__: $(__VUE_APP_SESSION_TIMEOUT_MINUTES__) 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__) __VUE_APP_SOLARWINDS_MONITORING_SCRIPT__: $(__VUE_APP_SOLARWINDS_MONITORING_SCRIPT__) - 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_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) __VUE_APP_SESSION_TIMEOUT_MINUTES__: $(__VUE_APP_SESSION_TIMEOUT_MINUTES__) 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__) __VUE_APP_SOLARWINDS_MONITORING_SCRIPT__: $(__VUE_APP_SOLARWINDS_MONITORING_SCRIPT__) - 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_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_MY_ACCOUNT__: $(__VUE_APP_MY_ACCOUNT__) __VUE_APP_SESSION_TIMEOUT_MINUTES__: $(__VUE_APP_SESSION_TIMEOUT_MINUTES__) 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__) __VUE_APP_SOLARWINDS_MONITORING_SCRIPT__: $(__VUE_APP_SOLARWINDS_MONITORING_SCRIPT__) - 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