PowerShell/appveyor.yml
Christoph Bergmeister 2ec3056f9e Use Appveyor matrix for faster PR builds (#6945)
Related: #6944

Reduce PR build time by 5 minutes by:

Having Packaging as a separate build job in a matrix -> runs in parallel in PR builds because the Microsoft account is a paid account that allows that (at no additional costs)
Not caching the dotnet folder anymore, which is too large and the overhead of zipping/unzipping/upload/download does not pay off (and fails in forked builds that are on a free AppVeyor account due to the size).
Setting the environment variable DOTNET_SKIP_FIRST_TIME_EXPERIENCE to 1 because the initialization of the dotnet CLI cache (1 minute) does not pay off for the whole build.
The total build time of builds on a fork that is on a free AppVeyor account and therefore does not have parallelism, remains the same due to the time saving of redundant caching.

This is just a simple example of what we can easily achieve, we could continue this pattern and split the test runs as per the referenced issue to bring PR builds down to 10 minutes (but this will incur an increase for fork builds on free AppVeyor accounts)
2018-06-05 10:48:44 -07:00

40 lines
1.2 KiB
YAML

# version is set in tools\appveyor.psm1 - Invoke-AppVeyorInstall
environment:
POWERSHELL_TELEMETRY_OPTOUT: 1
# Avoid expensive initialization of dotnet cli, see: http://donovanbrown.com/post/Stop-wasting-time-during-NET-Core-builds
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
Purpose: BuildingAndPackaging
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
Purpose: BuildingAndTesting
# Stop all jobs in the matrix if any one them fail
matrix:
fast_finish: true
# cache version - netcoreapp.2.1-sdk.2.1.300
cache:
- '%HOMEDRIVE%%HOMEPATH%\.nuget\packages -> appveyor.yml'
nuget:
project_feed: true
install:
- git submodule update --init
- ps: Import-Module .\tools\Appveyor.psm1
- ps: Invoke-AppveyorInstall
build_script:
- ps: if ($env:Purpose -eq 'BuildingAndTesting'){ Invoke-AppveyorBuild }
test_script:
- ps: if ($env:Purpose -eq 'BuildingAndTesting'){ Invoke-AppveyorTest }
after_test:
- ps: if ($env:Purpose -eq 'BuildingAndTesting'){ Invoke-AppVeyorAfterTest }
# Run the finish command and delete files which should not be in the cache
on_finish:
- ps: if ($env:Purpose -eq 'BuildingAndPackaging'){ Invoke-AppveyorFinish }