trigger:
- master

variables:
  _TeamName: Roslyn-Project-System
  ${{ if eq(variables['System.TeamProject'], 'public') }}:
    PB_PublishBlobFeedKey:
    PB_PublishBlobFeedUrl:
    PB_PublishChecksumsBlobFeedUrl:
    _DotNetPublishToBlobFeed: false
    _PublishType: none
    _SignType: test
  ${{ if ne(variables['System.TeamProject'], 'public') }}:
    PB_PublishBlobFeedUrl: https://dotnetcli.blob.core.windows.net/dotnet/index.json
    PB_PublishChecksumsBlobFeedUrl: https://dotnetclichecksums.blob.core.windows.net/dotnet/index.json
    _DotNetPublishToBlobFeed: true
    _PublishType: blob
    _SignType: real

jobs:
- template: /eng/build.yml
  parameters:
    agentOs: Windows_NT
    queue:
      ${{ if eq(variables['System.TeamProject'], 'public') }}:
        name: dotnet-external-temp
      ${{ if ne(variables['System.TeamProject'], 'public') }}:
        name: dotnet-internal-temp
      parallel: 99
      matrix:
        ${{ if eq(variables['System.TeamProject'], 'public') }}:
          Build_Debug_x86:
            _BuildConfig: Debug
            _BuildArchitecture: x86
            _DOTNET_CLI_UI_LANGUAGE: ''
            _DropSuffix: ''
          Build_ES_Debug_x64:
            _BuildConfig: Debug
            _BuildArchitecture: x64
            _DOTNET_CLI_UI_LANGUAGE: es
            _DropSuffix: ''
          Build_DropSuffix_Release_x64:
            _BuildConfig: Release
            _BuildArchitecture: x64
            _DOTNET_CLI_UI_LANGUAGE: ''
            _DropSuffix: true
        ${{ if ne(variables['System.TeamProject'], 'public') }}:
          Build_Release_x86:
            _BuildConfig: Release
            _BuildArchitecture: x86
            _DOTNET_CLI_UI_LANGUAGE: ''
            _DropSuffix: ''
        Build_Release_x64:
          _BuildConfig: Release
          _BuildArchitecture: x64
          _DOTNET_CLI_UI_LANGUAGE: ''
          _DropSuffix: ''
        Build_Release_arm:
          _BuildConfig: Release
          _BuildArchitecture: arm
          _DOTNET_CLI_UI_LANGUAGE: ''
          _DropSuffix: ''
          _AdditionalBuildParameters: '/p:DisableSourceLink=true'

- template: /eng/build.yml
  parameters:
    agentOs: Linux
    queue:
      name: Hosted Ubuntu 1604
      parallel: 99
      matrix:
        ${{ if eq(variables['System.TeamProject'], 'public') }}:
          Build_Ubuntu_14_04_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker ubuntu.14.04'
            _LinuxPortable: ''
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Ubuntu_16_04_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker ubuntu.16.04'
            _LinuxPortable: ''
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Ubuntu_18_04_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker ubuntu.18.04'
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
            _AdditionalBuildParameters: '/p:DisableSourceLink=true'
          Build_Fedora_27_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker fedora.27'
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_OpenSUSE_42_3_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker opensuse.42.3'
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_CentOS_7_1_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker centos'
            _LinuxPortable: ''
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Debian_8_2_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker debian'
            _LinuxPortable: ''
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Rhel_7_2_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker rhel'
            _LinuxPortable: ''
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Rhel_6_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker rhel.6'
            _LinuxPortable: ''
            _RuntimeIdentifier: '--runtime-id rhel.6-x64'
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
            _AdditionalBuildParameters: '/p:DisableSourceLink=true'
          Build_Arm_Debug:
            _BuildConfig: Debug
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'arm'
            _DropSuffix: ''
          Build_Arm64_Debug:
            _BuildConfig: Debug
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'arm64'
            _DropSuffix: ''
          Build_Linux_musl_Debug_x64:
            _BuildConfig: Debug
            _DockerParameter: '--docker alpine.3.6'
            _LinuxPortable: ''
            _RuntimeIdentifier: '--runtime-id linux-musl-x64'
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_LinuxPortable_NoSuffix_Release_x64:
            _BuildConfig: Release
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: true
          Build_Arm_NoSuffix_Release:
            _BuildConfig: Release
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'arm'
            _DropSuffix: true
        ${{ if ne(variables['System.TeamProject'], 'public') }}:
          Build_Rhel_6_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker rhel.6'
            _LinuxPortable: ''
            _RuntimeIdentifier: '--runtime-id rhel.6-x64'
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
            _AdditionalBuildParameters: '/p:DisableSourceLink=true'
          Build_Arm_Release:
            _BuildConfig: Release
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'arm'
            _DropSuffix: ''
          Build_Arm64_Release:
            _BuildConfig: Release
            _DockerParameter: ''
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'arm64'
            _DropSuffix: ''
          Build_Linux_musl_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker alpine.3.6'
            _LinuxPortable: ''
            _RuntimeIdentifier: '--runtime-id linux-musl-x64'
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
          Build_Linux_Portable_Deb_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker ubuntu.16.04'
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
            # Do not publish zips and tarballs. The linux-x64 binaries are
            # already published by Build_LinuxPortable_Release_x64
            _AdditionalBuildParameters: '/p:PublishBinariesAndBadge=false'
          Build_Linux_Portable_Rpm_Release_x64:
            _BuildConfig: Release
            _DockerParameter: '--docker rhel'
            _LinuxPortable: '--linux-portable'
            _RuntimeIdentifier: ''
            _BuildArchitecture: 'x64'
            _DropSuffix: ''
            # Do not publish zips and tarballs. The linux-x64 binaries are
            # already published by Build_LinuxPortable_Release_x64
            _AdditionalBuildParameters: '/p:PublishBinariesAndBadge=false'
        Build_LinuxPortable_Release_x64:
          _BuildConfig: Release
          _DockerParameter: ''
          _LinuxPortable: '--linux-portable'
          _RuntimeIdentifier: ''
          _BuildArchitecture: 'x64'
          _DropSuffix: ''

- template: /eng/build.yml
  parameters:
    agentOs: Darwin
    queue: 
      name: Hosted macOS
      matrix:
        Build_Release:
          _BuildConfig: Release

# - template: /eng/build.yml
#   parameters:
#     agentOs: FreeBSD
#     queue: 
#       name: Some FreeBSD queue
#       matrix:
#         Build_Release:
#           _BuildConfig: Release

- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
  - job: Copy_SDK_To_Latest
    dependsOn:
      - Windows_NT
      - Linux
      - Darwin
    pool:
      name: Hosted VS2017
    condition: succeeded()
    steps:
      - task: AzureKeyVault@1
        inputs:
          azureSubscription: 'DotNet-Engineering-Services_KeyVault'
          KeyVaultName: EngKeyVault
          SecretsFilter: 'dotnetcli-storage-key,dotnetclichecksums-storage-key'
        condition: succeeded()

      - script: eng/CopyToLatest.cmd
                /p:DotnetPublishSdkAssetsBlobFeedUrl=$(PB_PublishBlobFeedUrl)
                /p:DotNetPublishSdkAssetsBlobFeedKey=$(dotnetcli-storage-key)
                /p:DotnetPublishChecksumsBlobFeedUrl=$(PB_PublishChecksumsBlobFeedUrl)
                /p:DotNetPublishChecksumsBlobFeedKey=$(dotnetclichecksums-storage-key)
        displayName: Copy to latest

# - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
#   - template: /eng/common/templates/phases/publish-build-assets.yml
#     parameters:
#       dependsOn:
#         - Windows_NT
#         - Linux
#         - Darwin
#         - Copy_SDK_To_Latest
#       queue:
#         name: Hosted VS2017