trigger: branches: include: [ develop, release/* ] paths: exclude: - deployment/* include: - "*" pr: branches: include: [ '*' ] paths: exclude: - deployment/* include: - "*" resources: containers: - container: node image: ghcr.io/safelite/node-build:20 endpoint: GitHub Docker - container: awscli image: ghcr.io/safelite/awscli2-build:3.9 endpoint: GitHub Docker repositories: - repository: AzureDevOps type: github name: Safelite/AzureDevOps endpoint: Safelite ref: refs/tags/t5.7.53 variables: - group: Digital-Infrastructure - group: ISS-BuildBranches - group: SafelitePlaywright - name: IS_REGRESSION value: 'false' stages: # PR's - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: - stage: TestPr displayName: Run 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 - template: templates/digital/playwright-test.yml@AzureDevOps parameters: applicationType: 'vue' totalShards: 2 targetUrl: $(BASE_URL) dockerFileName: 'Dockerfile.playwright' isRegression: false filterTags: '' playwrightTestsPath: 'playwright-tests' npmServePath: '.' npmrcPath: 'playwright-tests/.npmrc' secrets: CCIS_API_AUTH: $(CCIS_API_AUTH) JIRA_API_KEY: $(JIRA_API_KEY) - ${{ else }}: # Dev Build/Deploy - stage: Dev condition: eq(variables['Build.SourceBranch'], variables['dev-branch'] ) variables: - group: ISS-Dev jobs: - deployment: devBuildDeployment displayName: Build and Deploy ISS - Dev environment: digitalCloud-dev container: node workspace: clean: all strategy: runOnce: deploy: steps: - checkout: self clean: true - task: CopyFiles@2 inputs: SourceFolder: 'public/apple-pay' Contents: '**' TargetFolder: 'public/.well-known' CleanTargetFolder: true - task: DeleteFiles@1 inputs: SourceFolder: 'public/apple-pay' Contents: '**' RemoveSourceFolder: 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) deployBuckets: safelite-dev-iss-us-east-2: clearFolder: true deployFolder: '' region: us-east-2 safelite-dev-iss-us-east-1: clearFolder: true deployFolder: '' region: us-east-1 appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) __VUE_APP_ADYEN_ENVIRONMENT__: $(__VUE_APP_ADYEN_ENVIRONMENT__) __VUE_APP_ADYEN_CLIENT_KEY__: $(__VUE_APP_ADYEN_CLIENT_KEY__) 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_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(devDeploymentProfile) # Test Build/Deploy - stage: Test condition: eq(variables['Build.SourceBranch'], variables['test-branch'] ) variables: - group: ISS-Test jobs: - deployment: testBuildDeployment displayName: Build and Deploy ISS - Test environment: NoApproval-All container: node workspace: clean: all strategy: runOnce: deploy: steps: - checkout: self clean: true - task: CopyFiles@2 inputs: SourceFolder: 'public/apple-pay' Contents: '**' TargetFolder: 'public/.well-known' CleanTargetFolder: true - task: DeleteFiles@1 inputs: SourceFolder: 'public/apple-pay' Contents: '**' RemoveSourceFolder: 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) deployBuckets: safelite-sys-iss-us-east-1: clearFolder: true deployFolder: "" region: us-east-1 safelite-sys-iss-us-east-2: clearFolder: true deployFolder: "" region: us-east-2 appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) __VUE_APP_ADYEN_ENVIRONMENT__: $(__VUE_APP_ADYEN_ENVIRONMENT__) __VUE_APP_ADYEN_CLIENT_KEY__: $(__VUE_APP_ADYEN_CLIENT_KEY__) 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_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(sysDeploymentProfile) # QA Build/Deploy - stage: QA condition: eq(variables['Build.SourceBranch'], variables['qa-branch'] ) variables: - group: ISS-QA jobs: - deployment: qaBuildDeployment displayName: Build and Deploy ISS - QA environment: digitalCloud-qa container: node workspace: clean: all strategy: runOnce: deploy: steps: - checkout: self clean: true - task: CopyFiles@2 inputs: SourceFolder: 'public/apple-pay' Contents: '**' TargetFolder: 'public/.well-known' CleanTargetFolder: true - task: DeleteFiles@1 inputs: SourceFolder: 'public/apple-pay' Contents: '**' RemoveSourceFolder: 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) deployBuckets: safelite-qa-iss-us-east-1: clearFolder: true deployFolder: "" region: us-east-1 safelite-qa-iss-us-east-2: clearFolder: true deployFolder: "" region: us-east-2 appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) __VUE_APP_ADYEN_ENVIRONMENT__: $(__VUE_APP_ADYEN_ENVIRONMENT__) __VUE_APP_ADYEN_CLIENT_KEY__: $(__VUE_APP_ADYEN_CLIENT_KEY__) 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_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(qaDeploymentProfile) # Prod Build/Deploy - stage: Prod condition: succeeded('QA') variables: - group: ISS-Prod jobs: - deployment: prodBuildDeployment displayName: Build and Deploy ISS - Prod environment: digitalCloud-prod container: node workspace: clean: all strategy: runOnce: deploy: steps: - checkout: self clean: true - task: CopyFiles@2 inputs: SourceFolder: 'public/apple-pay' Contents: '**' TargetFolder: 'public/.well-known' CleanTargetFolder: true - task: DeleteFiles@1 inputs: SourceFolder: 'public/apple-pay' Contents: '**' RemoveSourceFolder: 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) deployBuckets: safelite-prod-iss-us-east-1: clearFolder: true deployFolder: "" region: us-east-1 safelite-prod-iss-us-east-2: clearFolder: true deployFolder: "" region: us-east-2 appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) __VUE_APP_ADYEN_ENVIRONMENT__: $(__VUE_APP_ADYEN_ENVIRONMENT__) __VUE_APP_ADYEN_CLIENT_KEY__: $(__VUE_APP_ADYEN_CLIENT_KEY__) 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_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(prodDeploymentProfile) - template: templates/digital/auto-tag.yml@AzureDevOps parameters: dependsOn: prodBuildDeployment environment: digitalCloud-prod userName: SafeliteAzureDevops userEmail: githubazuredevops@safelite.com