trigger:
  branches:
    include:
      - master
      - rel/*
  paths:
    include:
      - Ix.NET/Source/*
      - .editorconfig
      - azure-pipelines.ix.yml

pr:
  branches:
    include:
      - master
      - rel/*
      - IxAsyncCSharp8
  paths:
    include:
      - Ix.NET/Source/*
      - .editorconfig
      - azure-pipelines.ix.yml

pool:
  vmImage: vs2017-win2016

variables: 
  BuildConfiguration: Release
  
steps:
- task: DotNetCoreInstaller@0
  inputs:
    version: '3.0.100-preview-009812'

- task: DotNetCoreCLI@2  
  inputs:
    command: custom
    custom: tool
    arguments: install --tool-path . nbgv
  displayName: Install NBGV tool

- script: nbgv cloud -p Ix.NET\Source
  displayName: Set Version

- task: DotNetCoreCLI@2
  inputs:
    command: pack
    packagesToPack: Ix.NET/Source/**/System.Interactive*.csproj;Ix.NET/Source/**/System.Linq.*.csproj;!Ix.NET/Source/**/*.Tests*.csproj;!Ix.NET/Source/refs/**
    configuration: $(BuildConfiguration)
    packDirectory: $(Build.ArtifactStagingDirectory)\artifacts    
    verbosityPack: Minimal
  displayName: Pack

- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: Ix.NET/Source/**/*.Tests.csproj
    arguments: -c $(BuildConfiguration) --collect:"Code Coverage" -s $(System.DefaultWorkingDirectory)/Ix.NET/Source/CodeCoverage.runsettings /p:DebugType=Full 
  displayName: Run Tests

- task: whitesource.ws-bolt.bolt.wss.WhiteSource Bolt@18
  displayName: 'WhiteSource Bolt'
  enabled: false

- task: PowerShell@2
  displayName: Authenticode Sign Packages
  inputs:
    filePath: Ix.NET/Source/build/Sign-Package.ps1
  env:
    SignClientUser: $(SignClientUser)
    SignClientSecret: $(SignClientSecret)
    ArtifactDirectory: $(Build.ArtifactStagingDirectory)\artifacts
  condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], '')))

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: $(Build.ArtifactStagingDirectory)\artifacts
    ArtifactName: artifacts
    publishLocation: Container
