name: $(SourceBranchName)$(Rev:.r)
variables:
  node_version: '16.x'


trigger:
  branches:
    include:
      - develop
      - master
  batch: true

pool:
  vmImage: ubuntu-latest

resources:
  repositories:
  - repository: CommonTemplates
    type: git
    name: Products/YourCause.Common.Pipelines
    ref: 'master'
    trigger: none
  - repository: E2E
    type: git
    name: Products/GrantsConnect.E2E
    ref: 'master'
    trigger:
      branches:
        include:
          - master
      batch: true


# TODO: fix branch names
extends:
  template: templates/common-full-blue-green-deployment.yml@CommonTemplates
  parameters:
    teams_webhook_url: 'https://blackbaud.webhook.office.com/webhookb2/909f14ff-10c6-4a3e-bdf8-b1fc0a8f73fe@31fa3fc8-0d67-4b00-8f5a-3a9a69c281b8/IncomingWebhook/cd6eea5d7b3c47f7b2ae6916953672ee/8d835116-82af-4492-aa74-818d93c3c401'
    teams_webhook_url_pr: 'https://blackbaud.webhook.office.com/webhookb2/909f14ff-10c6-4a3e-bdf8-b1fc0a8f73fe@31fa3fc8-0d67-4b00-8f5a-3a9a69c281b8/IncomingWebhook/2f8b610a22f24ba08a2ad26dcdebd0e9/8d835116-82af-4492-aa74-818d93c3c401'
    repository: self
    build_jobs:
    - template: templates/ui-release-build.yml@CommonTemplates
      parameters:
        cdn_base: https://grantsconnectui.azureedge.net/
        cache_enabled: true
        build_cache_enabled: true
        repository: self
        node_version: $(node_version)
        test_shards: 1

    use_dev: true
    dev_environment_name: GrantsConnectDev.UI
    pre_dev_deploy_steps:
    - template: templates/ui-cdn-deployment.yml@CommonTemplates
      parameters:
        publishProfile: "dev-grantsconnect-ui-staging - Web Deploy"
        publishProfilePassword: $(DevStagingPublishProfilePassword)
        currentVersion: $(Build.BuildNumber)
        storageConnectionString: $(StorageConnectionString)
        artifactName: CompiledOutput
        cleanUpAssets: true
        repository: self
        node_version: $(node_version)
    dev_deploy_steps:
    - template: templates/app-slot-swap.yml@CommonTemplates
      parameters:
        service_principal: $(DevServicePrincipal)
        service_principal_secret: $(DevServicePrincipalSecret)
        service_principal_tenant: $(DevServicePrincipalTenant)
        subscription: $(DevSubscription)
        resource_group: GrantsConnect
        app_service_name: dev-grantsconnect-ui
    use_qa: true
    qa_environment_name: GrantsConnectQA.UI
    pre_qa_deploy_steps:
    - template: templates/ui-cdn-deployment.yml@CommonTemplates
      parameters:
        publishProfile: "qa-grantsconnect-ui-staging - Web Deploy"
        publishProfilePassword: $(QAStagingPublishProfilePassword)
        currentVersion: $(Build.BuildNumber)
        storageConnectionString: $(StorageConnectionString)
        artifactName: CompiledOutput
        cleanUpAssets: true
        repository: self
        node_version: $(node_version)
    pre_qa_deploy_verification_pool: docker
    pre_qa_allow_verification_failure: true
    pre_qa_deploy_verification_container: mcr.microsoft.com/playwright:focal
    pre_qa_deploy_verification_steps:
      - template: ./azure-pipelines-template.yml@E2E
        parameters:
          repository_name: E2E
          sp_tenant: $(DevServicePrincipalTenant)
          sp_id: $(DevServicePrincipal)
          sp_secret: $(DevServicePrincipalSecret)
    qa_deploy_steps:
    - template: templates/app-slot-swap.yml@CommonTemplates
      parameters:
        service_principal: $(DevServicePrincipal)
        service_principal_secret: $(DevServicePrincipalSecret)
        service_principal_tenant: $(DevServicePrincipalTenant)
        subscription: $(DevSubscription)
        resource_group: GrantsConnect
        app_service_name: qa-grantsconnect-ui
    use_uat: true
    uat_environment_name: GrantsConnectUAT.UI
    uat_branch_name: master
    pre_uat_deploy_steps:
    - template: templates/ui-cdn-deployment.yml@CommonTemplates
      parameters:
        publishProfile: "uat-grantsconnect-ui-staging - Web Deploy"
        publishProfilePassword: $(UATStagingPublishProfilePassword)
        currentVersion: $(Build.BuildNumber)
        storageConnectionString: $(StorageConnectionString)
        artifactName: CompiledOutput
        cleanUpAssets: true
        repository: self
        node_version: $(node_version)
    uat_deploy_steps:
    - template: templates/app-slot-swap.yml@CommonTemplates
      parameters:
        service_principal: $(DevServicePrincipal)
        service_principal_secret: $(DevServicePrincipalSecret)
        service_principal_tenant: $(DevServicePrincipalTenant)
        subscription: $(DevSubscription)
        resource_group: GrantsConnect
        app_service_name: uat-grantsconnect-ui
    pre_prod_deploy_steps:
    - template: templates/ui-cdn-deployment.yml@CommonTemplates
      parameters:
        publishProfile: "production-grantsconnect-ui-staging - Web Deploy"
        publishProfilePassword: $(ProdStagingPublishProfilePassword)
        currentVersion: $(Build.BuildNumber)
        storageConnectionString: $(StorageConnectionString)
        artifactName: CompiledOutput
        cleanUpAssets: true
        repository: self
        node_version: $(node_version)
    prod_deploy_steps:
    - template: templates/app-slot-swap.yml@CommonTemplates
      parameters:
        service_principal: $(ProdServicePrincipal)
        service_principal_secret: $(ProdServicePrincipalSecret)
        service_principal_tenant: $(ProdServicePrincipalTenant)
        subscription: $(ProdSubscription)
        resource_group: productionGrantsConnect
        app_service_name: production-grantsconnect-ui
