aspnetcore/eng/common/build.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

261 строка
6.5 KiB
Bash
Исходник Постоянная ссылка Обычный вид История

#!/usr/bin/env bash
# Stop script if unbound variable found (use ${var:-} if intentional)
set -u
# Stop script if command returns non-zero exit code.
# Prevents hidden errors caused by missing error code propagation.
set -e
usage()
{
echo "Common settings:"
echo " --configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
echo " --verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
echo " --binaryLog Create MSBuild binary log (short: -bl)"
echo " --help Print help and exit (short: -h)"
echo ""
echo "Actions:"
echo " --restore Restore dependencies (short: -r)"
echo " --build Build solution (short: -b)"
echo " --sourceBuild Source-build the solution (short: -sb)"
echo " Will additionally trigger the following actions: --restore, --build, --pack"
echo " If --configuration is not set explicitly, will also set it to 'Release'"
echo " --productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
echo " Will additionally trigger the following actions: --restore, --build, --pack"
echo " If --configuration is not set explicitly, will also set it to 'Release'"
echo " --rebuild Rebuild solution"
echo " --test Run all unit tests in the solution (short: -t)"
echo " --integrationTest Run all integration tests in the solution"
echo " --performanceTest Run all performance tests in the solution"
echo " --pack Package build outputs into NuGet packages and Willow components"
echo " --sign Sign build outputs"
echo " --publish Publish artifacts (e.g. symbols)"
echo " --clean Clean the solution"
echo ""
echo "Advanced settings:"
echo " --projects <value> Project or solution file(s) to build"
echo " --ci Set when running on CI server"
[master] Update dependencies from dotnet/arcade dotnet/aspnetcore-tooling (#21630) * Update dependencies from https://github.com/dotnet/arcade build 20200511.9 - Microsoft.DotNet.Arcade.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.GenAPI: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.Helix.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 * Update dependencies from https://github.com/dotnet/aspnetcore-tooling build 20200514.6 Microsoft.AspNetCore.Mvc.Razor.Extensions , Microsoft.AspNetCore.Razor.Language , Microsoft.CodeAnalysis.Razor , Microsoft.NET.Sdk.Razor From Version 5.0.0-preview.5.20261.4 -> To Version 5.0.0-preview.6.20264.6 * Pre-emptively take -nobl change * Disable binlogs in CI * Fix build.sh to know about -nobl * Align build.ps1|sh with latest Arcade parameters - do not enable binary logs by default in CI builds - leave `-binaryLog` and `-excludeCIBinaryLog` handling to eng/common/tools.ps1|sh - was unnecessary since `-bl /bl:{some name}` worked fine, ignoring OOMs nit: document `-excludeCIBinarylog` a bit more * Do not pass unknown options into CodeCheck.ps1 * Pass `-ci -nobl` into remaining CI build jobs * Switch default TFM to `net5.0` * Update missing project templates tfms * Add more `-ci -nobl` - needed because _all_ builds in the pipeline are implicitly CI builds - default-build.yml adds `-ci` when script wasn't explicit * Default templates to net5.0 * PR feedback * Update TFMs in explicit .nuspec files * Update TFMs in test projects * Update TFMs in test C# code * Update TFMs in infrastructure files * Future-proof a check for `net5.0` or later - avoid comparisons involving `$(TargetFramework)` in .targets files - fine to compare it with `''` or `$(DefaultNetCoreTargetFramework)` * !fixup! Undo a couple of earlier fixes - remove a duplicate `$()` setting - correct the one remaining versioned `#if` define - did not make it `#if NETCOREAPP` because benchmarks test numerous .NET Core TFMs * Disable binary logs in CodeCheck.ps1 * Specify `-ci -nobl` just once when using `parameters.buildArgs` * Restore `$binaryLog` default logic Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com> Co-authored-by: Will Godbe <wigodbe@microsoft.com> Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
2020-05-15 03:17:02 +03:00
echo " --excludeCIBinarylog Don't output binary log (short: -nobl)"
echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
echo " --nodeReuse <value> Sets nodereuse msbuild parameter ('true' or 'false')"
echo " --warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
echo ""
echo "Command line arguments not listed above are passed thru to msbuild."
echo "Arguments can also be passed in with a single hyphen."
}
source="${BASH_SOURCE[0]}"
# resolve $source until the file is no longer a symlink
while [[ -h "$source" ]]; do
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
source="$(readlink "$source")"
# if $source was a relative symlink, we need to resolve it relative to the path where the
# symlink file was located
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
restore=false
build=false
source_build=false
product_build=false
rebuild=false
test=false
integration_test=false
performance_test=false
pack=false
publish=false
sign=false
public=false
ci=false
clean=false
warn_as_error=true
node_reuse=true
binary_log=false
[master] Update dependencies from dotnet/arcade dotnet/aspnetcore-tooling (#21630) * Update dependencies from https://github.com/dotnet/arcade build 20200511.9 - Microsoft.DotNet.Arcade.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.GenAPI: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.Helix.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 * Update dependencies from https://github.com/dotnet/aspnetcore-tooling build 20200514.6 Microsoft.AspNetCore.Mvc.Razor.Extensions , Microsoft.AspNetCore.Razor.Language , Microsoft.CodeAnalysis.Razor , Microsoft.NET.Sdk.Razor From Version 5.0.0-preview.5.20261.4 -> To Version 5.0.0-preview.6.20264.6 * Pre-emptively take -nobl change * Disable binlogs in CI * Fix build.sh to know about -nobl * Align build.ps1|sh with latest Arcade parameters - do not enable binary logs by default in CI builds - leave `-binaryLog` and `-excludeCIBinaryLog` handling to eng/common/tools.ps1|sh - was unnecessary since `-bl /bl:{some name}` worked fine, ignoring OOMs nit: document `-excludeCIBinarylog` a bit more * Do not pass unknown options into CodeCheck.ps1 * Pass `-ci -nobl` into remaining CI build jobs * Switch default TFM to `net5.0` * Update missing project templates tfms * Add more `-ci -nobl` - needed because _all_ builds in the pipeline are implicitly CI builds - default-build.yml adds `-ci` when script wasn't explicit * Default templates to net5.0 * PR feedback * Update TFMs in explicit .nuspec files * Update TFMs in test projects * Update TFMs in test C# code * Update TFMs in infrastructure files * Future-proof a check for `net5.0` or later - avoid comparisons involving `$(TargetFramework)` in .targets files - fine to compare it with `''` or `$(DefaultNetCoreTargetFramework)` * !fixup! Undo a couple of earlier fixes - remove a duplicate `$()` setting - correct the one remaining versioned `#if` define - did not make it `#if NETCOREAPP` because benchmarks test numerous .NET Core TFMs * Disable binary logs in CodeCheck.ps1 * Specify `-ci -nobl` just once when using `parameters.buildArgs` * Restore `$binaryLog` default logic Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com> Co-authored-by: Will Godbe <wigodbe@microsoft.com> Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
2020-05-15 03:17:02 +03:00
exclude_ci_binary_log=false
pipelines_log=false
projects=''
configuration=''
prepare_machine=false
verbosity='minimal'
runtime_source_feed=''
runtime_source_feed_key=''
properties=''
while [[ $# > 0 ]]; do
opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
case "$opt" in
-help|-h)
usage
exit 0
;;
-clean)
clean=true
;;
-configuration|-c)
configuration=$2
shift
;;
-verbosity|-v)
verbosity=$2
shift
;;
-binarylog|-bl)
binary_log=true
;;
-excludecibinarylog|-nobl)
[master] Update dependencies from dotnet/arcade dotnet/aspnetcore-tooling (#21630) * Update dependencies from https://github.com/dotnet/arcade build 20200511.9 - Microsoft.DotNet.Arcade.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.GenAPI: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.Helix.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 * Update dependencies from https://github.com/dotnet/aspnetcore-tooling build 20200514.6 Microsoft.AspNetCore.Mvc.Razor.Extensions , Microsoft.AspNetCore.Razor.Language , Microsoft.CodeAnalysis.Razor , Microsoft.NET.Sdk.Razor From Version 5.0.0-preview.5.20261.4 -> To Version 5.0.0-preview.6.20264.6 * Pre-emptively take -nobl change * Disable binlogs in CI * Fix build.sh to know about -nobl * Align build.ps1|sh with latest Arcade parameters - do not enable binary logs by default in CI builds - leave `-binaryLog` and `-excludeCIBinaryLog` handling to eng/common/tools.ps1|sh - was unnecessary since `-bl /bl:{some name}` worked fine, ignoring OOMs nit: document `-excludeCIBinarylog` a bit more * Do not pass unknown options into CodeCheck.ps1 * Pass `-ci -nobl` into remaining CI build jobs * Switch default TFM to `net5.0` * Update missing project templates tfms * Add more `-ci -nobl` - needed because _all_ builds in the pipeline are implicitly CI builds - default-build.yml adds `-ci` when script wasn't explicit * Default templates to net5.0 * PR feedback * Update TFMs in explicit .nuspec files * Update TFMs in test projects * Update TFMs in test C# code * Update TFMs in infrastructure files * Future-proof a check for `net5.0` or later - avoid comparisons involving `$(TargetFramework)` in .targets files - fine to compare it with `''` or `$(DefaultNetCoreTargetFramework)` * !fixup! Undo a couple of earlier fixes - remove a duplicate `$()` setting - correct the one remaining versioned `#if` define - did not make it `#if NETCOREAPP` because benchmarks test numerous .NET Core TFMs * Disable binary logs in CodeCheck.ps1 * Specify `-ci -nobl` just once when using `parameters.buildArgs` * Restore `$binaryLog` default logic Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com> Co-authored-by: Will Godbe <wigodbe@microsoft.com> Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
2020-05-15 03:17:02 +03:00
exclude_ci_binary_log=true
;;
-pipelineslog|-pl)
pipelines_log=true
;;
-restore|-r)
restore=true
;;
-build|-b)
build=true
;;
-rebuild)
rebuild=true
;;
-pack)
pack=true
;;
-sourcebuild|-sb)
build=true
source_build=true
product_build=true
restore=true
pack=true
;;
-productBuild|-pb)
build=true
product_build=true
restore=true
pack=true
;;
-test|-t)
test=true
;;
-integrationtest)
integration_test=true
;;
-performancetest)
performance_test=true
;;
-sign)
sign=true
;;
-publish)
publish=true
;;
-preparemachine)
prepare_machine=true
;;
-projects)
projects=$2
shift
;;
-ci)
ci=true
;;
-warnaserror)
warn_as_error=$2
shift
;;
-nodereuse)
node_reuse=$2
shift
;;
-runtimesourcefeed)
runtime_source_feed=$2
shift
;;
-runtimesourcefeedkey)
runtime_source_feed_key=$2
shift
;;
*)
properties="$properties $1"
;;
esac
shift
done
if [[ -z "$configuration" ]]; then
if [[ "$source_build" = true ]]; then configuration="Release"; else configuration="Debug"; fi
fi
if [[ "$ci" == true ]]; then
pipelines_log=true
node_reuse=false
[master] Update dependencies from dotnet/arcade dotnet/aspnetcore-tooling (#21630) * Update dependencies from https://github.com/dotnet/arcade build 20200511.9 - Microsoft.DotNet.Arcade.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.GenAPI: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 - Microsoft.DotNet.Helix.Sdk: 5.0.0-beta.20228.4 => 5.0.0-beta.20261.9 * Update dependencies from https://github.com/dotnet/aspnetcore-tooling build 20200514.6 Microsoft.AspNetCore.Mvc.Razor.Extensions , Microsoft.AspNetCore.Razor.Language , Microsoft.CodeAnalysis.Razor , Microsoft.NET.Sdk.Razor From Version 5.0.0-preview.5.20261.4 -> To Version 5.0.0-preview.6.20264.6 * Pre-emptively take -nobl change * Disable binlogs in CI * Fix build.sh to know about -nobl * Align build.ps1|sh with latest Arcade parameters - do not enable binary logs by default in CI builds - leave `-binaryLog` and `-excludeCIBinaryLog` handling to eng/common/tools.ps1|sh - was unnecessary since `-bl /bl:{some name}` worked fine, ignoring OOMs nit: document `-excludeCIBinarylog` a bit more * Do not pass unknown options into CodeCheck.ps1 * Pass `-ci -nobl` into remaining CI build jobs * Switch default TFM to `net5.0` * Update missing project templates tfms * Add more `-ci -nobl` - needed because _all_ builds in the pipeline are implicitly CI builds - default-build.yml adds `-ci` when script wasn't explicit * Default templates to net5.0 * PR feedback * Update TFMs in explicit .nuspec files * Update TFMs in test projects * Update TFMs in test C# code * Update TFMs in infrastructure files * Future-proof a check for `net5.0` or later - avoid comparisons involving `$(TargetFramework)` in .targets files - fine to compare it with `''` or `$(DefaultNetCoreTargetFramework)` * !fixup! Undo a couple of earlier fixes - remove a duplicate `$()` setting - correct the one remaining versioned `#if` define - did not make it `#if NETCOREAPP` because benchmarks test numerous .NET Core TFMs * Disable binary logs in CodeCheck.ps1 * Specify `-ci -nobl` just once when using `parameters.buildArgs` * Restore `$binaryLog` default logic Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com> Co-authored-by: Will Godbe <wigodbe@microsoft.com> Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
2020-05-15 03:17:02 +03:00
if [[ "$exclude_ci_binary_log" == false ]]; then
binary_log=true
fi
fi
. "$scriptroot/tools.sh"
function InitializeCustomToolset {
local script="$eng_root/restore-toolset.sh"
if [[ -a "$script" ]]; then
. "$script"
fi
}
function Build {
InitializeToolset
InitializeCustomToolset
if [[ ! -z "$projects" ]]; then
properties="$properties /p:Projects=$projects"
fi
local bl=""
if [[ "$binary_log" == true ]]; then
bl="/bl:\"$log_dir/Build.binlog\""
fi
MSBuild $_InitializeToolset \
$bl \
/p:Configuration=$configuration \
/p:RepoRoot="$repo_root" \
/p:Restore=$restore \
/p:Build=$build \
/p:DotNetBuildRepo=$product_build \
/p:ArcadeBuildFromSource=$source_build \
/p:DotNetBuildSourceOnly=$source_build \
/p:Rebuild=$rebuild \
/p:Test=$test \
/p:Pack=$pack \
/p:IntegrationTest=$integration_test \
/p:PerformanceTest=$performance_test \
/p:Sign=$sign \
/p:Publish=$publish \
$properties
ExitWithExitCode 0
}
if [[ "$clean" == true ]]; then
if [ -d "$artifacts_dir" ]; then
rm -rf $artifacts_dir
echo "Artifacts directory deleted."
fi
exit 0
fi
if [[ "$restore" == true ]]; then
InitializeNativeTools
fi
Build