jobs:
- job: Linux
  pool:
    vmImage: 'ubuntu-16.04'
  steps:
  - task: CmdLine@2
    displayName: 'Install CastXML'
    inputs:
      script: |
        sudo apt-get update
        sudo apt-get install castxml

  - task: CmdLine@2
    displayName: 'Install Nuke'
    inputs:
      script: |
         dotnet tool install --global Nuke.GlobalTool --version 0.12.3
  - task: CmdLine@2
    displayName: 'Run Nuke'
    inputs:
      script: |
        export PATH="$PATH:$HOME/.dotnet/tools"
        dotnet --info
        printenv
        nuke --target CiAzureLinux --configuration=Release

  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())
     
- job: macOS
  pool:
    vmImage: 'xcode9-macos10.13'
  steps:
  - task: DotNetCoreInstaller@0
    inputs:
      version: '2.1.403'

  - task: CmdLine@2
    displayName: 'Install Mono 5.18'
    inputs:
      script: |
        curl -o ./mono.pkg https://download.mono-project.com/archive/5.18.0/macos-10-universal/MonoFramework-MDK-5.18.0.225.macos10.xamarin.universal.pkg 
        sudo installer -verbose -pkg ./mono.pkg -target /

  - task: Xcode@5
    inputs:
      actions: 'build'
      scheme: ''
      sdk: 'macosx10.13'
      configuration: 'Release'
      xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
      xcodeVersion: 'default' # Options: 8, 9, default, specifyPath
      args: '-derivedDataPath ./'

  - task: CmdLine@2
    displayName: 'Install CastXML'
    inputs:
      script: |
        brew update
        brew install castxml

  - task: CmdLine@2
    displayName: 'Install Nuke'
    inputs:
      script: |
       dotnet tool install --global Nuke.GlobalTool --version 0.12.3 

  - task: CmdLine@2
    displayName: 'Run Nuke'
    inputs:
      script: |
        export COREHOST_TRACE=0
        export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
        export DOTNET_CLI_TELEMETRY_OPTOUT=1
        which dotnet
        dotnet --info
        export PATH="$PATH:$HOME/.dotnet/tools"
        dotnet --info
        printenv
        nuke --target CiAzureOSX --configuration Release

  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())
  
  - task: PublishBuildArtifacts@1
    inputs:
      pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/'
      artifactName: 'Avalonia.Native.OSX'
    condition: succeeded()
    
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
      artifactName: 'NuGetOSX'
    condition: succeeded()

- job: Windows
  pool:
    vmImage: 'vs2017-win2016'
  steps:
  - task: CmdLine@2
    displayName: 'Install Nuke'
    inputs:
      script: |
       dotnet tool install --global Nuke.GlobalTool --version 0.12.3 

  - task: CmdLine@2
    displayName: 'Run Nuke'
    inputs:
      script: |
        set PATH=%PATH%;%USERPROFILE%\.dotnet\tools
        nuke --target CiAzureWindows --configuration Release
      
  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())

  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
      artifactName: 'NuGet'
    condition: succeeded()

  - task: PublishBuildArtifacts@1
    inputs:
      pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip'
      artifactName: 'Samples'
    condition: succeeded()
