resources:
  containers:
  - container: vscode-x64
    image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
    endpoint: VSCodeHub
  - container: snapcraft
    image: snapcore/snapcraft:stable

jobs:
- job: Compile
  pool:
    vmImage: 'Ubuntu-16.04'
  container: vscode-x64
  steps:
  - template: product-compile.yml

- job: Windows
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
  pool:
    vmImage: VS2017-Win2016
  variables:
    VSCODE_ARCH: x64
  dependsOn:
  - Compile
  steps:
  - template: win32/product-build-win32.yml

- job: Windows32
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
  pool:
    vmImage: VS2017-Win2016
  variables:
    VSCODE_ARCH: ia32
  dependsOn:
  - Compile
  steps:
  - template: win32/product-build-win32.yml

- job: WindowsARM64
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_ARM64'], 'true'))
  pool:
    vmImage: VS2017-Win2016
  variables:
    VSCODE_ARCH: arm64
  dependsOn:
  - Compile
  steps:
  - template: win32/product-build-win32-arm64.yml

- job: Linux
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  container: vscode-x64
  dependsOn:
  - Compile
  steps:
  - template: linux/product-build-linux.yml

- job: LinuxSnap
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  container: snapcraft
  dependsOn: Linux
  steps:
  - template: linux/snap-build-linux.yml

- job: LinuxArmhf
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  variables:
    VSCODE_ARCH: armhf
  dependsOn:
  - Compile
  steps:
  - template: linux/product-build-linux-multiarch.yml

- job: LinuxArm64
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARM64'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  variables:
    VSCODE_ARCH: arm64
  dependsOn:
  - Compile
  steps:
  - template: linux/product-build-linux-multiarch.yml

- job: LinuxAlpine
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  variables:
    VSCODE_ARCH: alpine
  dependsOn:
  - Compile
  steps:
  - template: linux/product-build-linux-multiarch.yml

- job: LinuxWeb
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WEB'], 'true'))
  pool:
    vmImage: 'Ubuntu-16.04'
  variables:
    VSCODE_ARCH: x64
  dependsOn:
  - Compile
  steps:
  - template: web/product-build-web.yml

- job: macOS
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
  pool:
    vmImage: macOS-latest
  dependsOn:
  - Compile
  steps:
  - template: darwin/product-build-darwin.yml

- job: Release
  condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), or(eq(variables['VSCODE_RELEASE'], 'true'), and(or(eq(variables['VSCODE_QUALITY'], 'insider'), eq(variables['VSCODE_QUALITY'], 'exploration')), eq(variables['Build.Reason'], 'Schedule'))))
  pool:
    vmImage: 'Ubuntu-16.04'
  dependsOn:
  - Windows
  - Windows32
  - Linux
  - LinuxSnap
  - LinuxArmhf
  - LinuxArm64
  - LinuxAlpine
  - macOS
  steps:
  - template: release.yml

- job: Mooncake
  pool:
    vmImage: 'Ubuntu-16.04'
  condition: and(succeededOrFailed(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
  dependsOn:
  - Windows
  - Windows32
  - Linux
  - LinuxSnap
  - LinuxArmhf
  - LinuxArm64
  - LinuxAlpine
  - LinuxWeb
  - macOS
  steps:
  - template: sync-mooncake.yml

trigger: none
pr: none

schedules:
- cron: "0 5 * * Mon-Fri"
  displayName: Mon-Fri at 7:00
  branches:
    include:
    - main
