trigger:
- master

stages:
- stage: format
  displayName: 'format'
  jobs:
  - job: format
    displayName: 'clang'
    pool:
      vmImage: ubuntu-latest
    steps:
    - template: ./templates/format-check.yml
- stage: build
  dependsOn: format
  displayName: 'build'
  jobs:
  - job: build
    displayName: 'standard'
    pool:
      vmImage: ubuntu-latest
    strategy:
      maxParallel: 10
      matrix:
        linux:
          BuildSuffix: 'linux'
          ScriptFolder: 'linux'
    steps:
    - template: ./templates/sync-source.yml
      parameters:
        artifactSource: $(parameters.artifactSource)
        needSubmodules: 'true'
    - template: ./templates/build-single.yml
      parameters:
        artifactSource: 'false'
        cache: 'true'
- stage: build_win
  dependsOn: format
  displayName: 'build-windows'
  jobs:
  - job: build
    displayName: 'msvc'
    pool:
      vmImage: vs2017-win2016
    steps:
    - template: ./templates/sync-source.yml
      parameters:
        artifactSource: $(parameters.artifactSource)
        needSubmodules: 'true'
    - template: ./templates/build-msvc.yml
      parameters:
        artifactSource: 'false'
        cache: 'true'
- stage: release
  displayName: 'Release'
  dependsOn:
  - build
  - build_win
  jobs:
  - job: github
    displayName: 'GitHub Release'
    steps:
    - template: ./templates/release-github.yml