trigger:
  tags:
    include:
    - '*'
  branches:
    include:
    - '*'

jobs:
- job: WinBuild
  displayName: Windows Build
  pool:
    vmImage: 'vs2017-win2016'
  strategy:
    matrix:
      Debug:
        CI_ENV_BUILD_TYPE: Debug
      Release with Release Installer:
        CI_ENV_BUILD_TYPE: Release
  steps:
    # Gather Dependencies
    - task: PowerShell@2
      displayName: Download Bonjour SDK-like
      inputs:
        filePath: azure-pipelines/download_install_bonjour_sdk_like.ps1
    - task: UsePythonVersion@0
      displayName: Selecting Python Installer for QLI Installer
      inputs:
        versionSpec: '3.7'
    - task: PowerShell@2
      displayName: Installing QT
      condition: ne(variables['CacheRestored'], 'true')
      inputs:
        filePath: azure-pipelines/download_install_qt.ps1
    # Build time!
    - powershell: Copy-Item azure-pipelines\build_env_tmpl.bat build_env.bat
      displayName: Layering Azure Pipeline's build_env.bat
    - script: |
          call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\vsdevcmd" -arch=x64 && clean_build.bat
      displayName: Clean Build
    - task: ArchiveFiles@2
      displayName: Archive Completed Build Directory
      inputs:
        rootFolderOrFile: build\bin\$(CI_ENV_BUILD_TYPE)\
        includeRootFolder: true
        archiveFile: $(Build.ArtifactStagingDirectory)\$(CI_ENV_BUILD_TYPE).zip
    - task: PublishBuildArtifacts@1
      displayName: Publish Completed Build Directory Archive Build Artifact
      inputs:
        pathtoPublish: $(Build.ArtifactStagingDirectory)\$(CI_ENV_BUILD_TYPE).zip
        artifactName: Windows $(CI_ENV_BUILD_TYPE)
    - script: choco install innosetup --version 5.6.1.20190126 --allow-downgrade
      displayName: Ensure desired version of Inno Setup is installed.
      condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
    - script: build_installer.bat
      displayName: Build Installer
      condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
    - task: PublishBuildArtifacts@1
      displayName: Publish Release Installer
      condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
      inputs:
        pathtoPublish: build\installer-inno\bin
        artifactName: Windows Release Installer

- job: LinuxBuild
  strategy:
    matrix:
      ubuntu-18.04:
        imageName: 'ubuntu-18.04'
      ubuntu-20.04:
        imageName: 'ubuntu-20.04'
  displayName: Linux Build
  pool:
    vmImage: $(imageName)
  steps:
    - script: sudo apt-get update -y
    - script: sudo apt-get install -y libxtst-dev qtdeclarative5-dev libavahi-compat-libdnssd-dev libcurl4-openssl-dev
      displayName: Install Dependencies
    - script: sh -x ./clean_build.sh
      displayName: Clean Build

- job: MacBuild
  displayName: Mac Build
  strategy:
    matrix:
      big-sur-Release:
          imageName: "macOS-11"
          B_BUILD_TYPE: Release
          BARRIER_VERSION_STAGE: Release
      catalina-Release:
          imageName: "macOS-10.15"
          B_BUILD_TYPE: Release
          BARRIER_VERSION_STAGE: Release
      mojave-Release:
          imageName: "macOS-10.14"
          B_BUILD_TYPE: Release
          BARRIER_VERSION_STAGE: Release
  pool:
    vmImage: $(imageName)
  variables:
    VERBOSE: 1
    TERM: xterm-256color
  steps:
    - script: rm -rf /usr/local/opt/openssl
      displayName: Remove incompatible OpenSSL 1.0.2t from macOS-10.14 vmImage
    - script: brew reinstall openssl
      displayName: Installed newer OpenSSL 1.1.x
    - script: brew install pkg-config qt5
      displayName: Install Qt5 and pkg-config prereqs
    - script: sh -x ./clean_build.sh
      displayName: Clean Build
    - task: PublishBuildArtifacts@1
      displayName: Publish Release DMG
      condition: eq(variables['B_BUILD_TYPE'], 'Release')
      inputs:
        pathtoPublish: build/bundle
        artifactName: Mac Release Disk Image and App $(imageName)
