Merge pull request #1242 from eerhardt/NuGetCache

Cache NuGet packages on our CI server between builds.
This commit is contained in:
Eric Erhardt 2016-02-05 11:19:58 -06:00
commit afc0d45e2e
5 changed files with 58 additions and 9 deletions

View file

@ -5,6 +5,27 @@
. $PSScriptRoot\..\common\_common.ps1
if ($env:CI_BUILD -eq "1") {
# periodically clear out the package cache on the CI server
$PackageCacheFile = "$env:NUGET_PACKAGES\packageCacheTime.txt"
if(!(Test-Path $PackageCacheFile)) {
Get-Date | Out-File -FilePath $PackageCacheFile
}
else {
$PackageCacheTimeProperty = Get-ItemProperty -Path $PackageCacheFile -Name CreationTimeUtc
$PackageCacheTime = [datetime]($PackageCacheTimeProperty).CreationTimeUtc
if ($PackageCacheTime -lt ([datetime]::UtcNow).AddHours(-$env:NUGET_PACKAGES_CACHE_TIME_LIMIT)) {
header "Clearing package cache"
Remove-Item -Recurse -Force "$env:NUGET_PACKAGES"
mkdir $env:NUGET_PACKAGES | Out-Null
Get-Date | Out-File -FilePath $PackageCacheFile
}
}
}
# Restore packages
# NOTE(anurse): I had to remove --quiet, because NuGet3 is too quiet when that's provided :(
header "Restoring packages"

View file

@ -16,6 +16,26 @@ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
source "$DIR/../common/_common.sh"
if [ ! -z "$CI_BUILD" ]; then
# periodically clear out the package cache on the CI server
PackageCacheFile="$NUGET_PACKAGES/packageCacheTime.txt"
if [ ! -f $PackageCacheFile ]; then
date > $PackageCacheFile
else
#$NUGET_PACKAGES_CACHE_TIME_LIMIT is in hours
CacheTimeLimitInSeconds=$(($NUGET_PACKAGES_CACHE_TIME_LIMIT * 3600))
CacheExpireTime=$(($(date +%s) - $CacheTimeLimitInSeconds))
if [ $(date +%s -r $PackageCacheFile) -lt $CacheExpireTime ]; then
header "Clearing package cache"
rm -Rf $NUGET_PACKAGES
mkdir -p $NUGET_PACKAGES
date > $PackageCacheFile
fi
fi
fi
header "Restoring packages"
dotnet restore "$REPOROOT/src" --runtime "$RID" $DISABLE_PARALLEL

View file

@ -6,6 +6,8 @@
set -e
export CI_BUILD=1
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

View file

@ -3,14 +3,12 @@
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
if ($env:CI_BUILD -eq "1") {
$env:NUGET_PACKAGES = (Join-Path $RepoRoot "artifacts\home\.nuget\packages")
} else {
$env:NUGET_PACKAGES = (Join-Path $env:USERPROFILE ".nuget\packages")
}
$env:NUGET_PACKAGES = (Join-Path $env:USERPROFILE ".nuget\packages")
$env:DOTNET_PACKAGES = $env:NUGET_PACKAGES
$env:DNX_PACKAGES = $env:NUGET_PACKAGES
if(!(Test-Path $env:NUGET_PACKAGES)) {
mkdir $env:NUGET_PACKAGES | Out-Null
}
# default the package cache expiration to 1 week, in hours
setEnvIfDefault "NUGET_PACKAGES_CACHE_TIME_LIMIT" (7 * 24)

View file

@ -4,7 +4,15 @@
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
## Temporarily redirect to the NuGet package installation location
export NUGET_PACKAGES=~/.nuget/packages
export DOTNET_PACKAGES=$NUGET_PACKAGES
export DNX_PACKAGES=$NUGET_PACKAGES
if [ ! -d $NUGET_PACKAGES ]; then
mkdir -p $NUGET_PACKAGES
fi
if [ -z "$NUGET_PACKAGES_CACHE_TIME_LIMIT" ]; then
# default the package cache expiration to 1 week, in hours
export NUGET_PACKAGES_CACHE_TIME_LIMIT=$(( 7 * 24 ))
fi