dotnet-installer/scripts/build/restore-packages.sh
Eric Erhardt 617af759ae Cache NuGet packages on our CI server between builds.
Currently on our CI builds, we point our NuGet cache under the repo. In between builds the repo gets deleted, thus the cache is lost.

This change moves the cache to %userprofile%\.nuget\packages on CI and dev boxes.  On CI, we expire the cache after a day by default.
2016-02-05 10:34:20 -06:00

42 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Copyright (c) .NET Foundation and contributors. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
set -e
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
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
dotnet restore "$REPOROOT/tools" --runtime "$RID" $DISABLE_PARALLEL