adopt official arcade source build (#10243)

This commit is contained in:
Brett V. Forsgren 2020-10-12 16:09:57 -07:00 коммит произвёл nosami
Родитель 4601643ef8
Коммит 088d581d33
7 изменённых файлов: 73 добавлений и 55 удалений

Просмотреть файл

@ -1,2 +1,2 @@
@echo off @echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -build -restore %*" powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -build -restore -binaryLog %*"

Просмотреть файл

@ -54,20 +54,9 @@
<UpdateXlfOnBuild Condition="'$(CI)' != '1'">true</UpdateXlfOnBuild> <UpdateXlfOnBuild Condition="'$(CI)' != '1'">true</UpdateXlfOnBuild>
</PropertyGroup> </PropertyGroup>
<!-- source-build workarounds --> <!-- source build -->
<PropertyGroup Condition="'$(FSharpSourceBuild)' == 'true'"> <PropertyGroup Condition="'$(DotNetBuildFromSource)' == 'true' OR '$(ArcadeBuildFromSource)' == 'true'">
<DeterministicSourcePaths>false</DeterministicSourcePaths>
<PublishWindowsPdb>false</PublishWindowsPdb> <PublishWindowsPdb>false</PublishWindowsPdb>
<RepositoryUrl Condition="'$(RepositoryUrl)' == ''">https://github.com/Microsoft/visualfsharp</RepositoryUrl>
<RepositoryType Condition="'$(RepositoryType)' == ''">git</RepositoryType>
</PropertyGroup>
<PropertyGroup Condition="'$(FSharpSourceBuild)' == 'true' AND '$(RepositoryCommit)' == ''">
<_DotGitDir>$(RepoRoot).git</_DotGitDir>
<_HeadFileContent Condition="Exists('$(_DotGitDir)/HEAD')">$([System.IO.File]::ReadAllText('$(_DotGitDir)/HEAD').Trim())</_HeadFileContent>
<_RefPath Condition="$(_HeadFileContent.StartsWith('ref: '))">$(_DotGitDir)/$(_HeadFileContent.Substring(5))</_RefPath>
<RepositoryCommit>$(BUILD_SOURCEVERSION)</RepositoryCommit>
<RepositoryCommit Condition="'$(RepositoryCommit)' == '' AND '$(_RefPath)' != '' and Exists('$(_RefPath)')">$([System.IO.File]::ReadAllText('$(_RefPath)').Trim())</RepositoryCommit>
</PropertyGroup> </PropertyGroup>
<!-- other --> <!-- other -->

Просмотреть файл

@ -314,28 +314,6 @@ stages:
- script: .\tests\EndToEndBuildTests\EndToEndBuildTests -c Release - script: .\tests\EndToEndBuildTests\EndToEndBuildTests -c Release
displayName: End to end build tests displayName: End to end build tests
# Source Build Linux - disabled until MSBuild/NuGet issues are resolved
# - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
# - job: SourceBuild_Linux
# pool:
# vmImage: ubuntu-latest
# steps:
# - checkout: self
# clean: true
# - script: ./eng/cibuild.sh --configuration Release /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true
# displayName: Build
# - script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj
# displayName: Dump NuGet cache contents
# condition: failed()
# - task: PublishBuildArtifacts@1
# displayName: Publish NuGet cache contents
# inputs:
# PathtoPublish: '$(Build.SourcesDirectory)/artifacts/NugetPackageRootContents'
# ArtifactName: 'NuGetPackageContents SourceBuild_Linux'
# publishLocation: Container
# continueOnError: true
# condition: failed()
# Source Build Windows # Source Build Windows
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- job: SourceBuild_Windows - job: SourceBuild_Windows
@ -344,19 +322,23 @@ stages:
steps: steps:
- checkout: self - checkout: self
clean: true clean: true
- script: eng\CIBuild.cmd -configuration Release -noSign /p:DotNetBuildFromSource=true /p:FSharpSourceBuild=true - script: eng\CIBuild.cmd -configuration Release -noSign -prepareMachine -sourceBuild
displayName: Build displayName: Build
- script: dotnet build $(Build.SourcesDirectory)/eng/DumpPackageRoot/DumpPackageRoot.csproj - task: PublishPipelineArtifact@1
displayName: Dump NuGet cache contents displayName: Publish Logs
condition: failed()
- task: PublishBuildArtifacts@1
displayName: Publish NuGet cache contents
inputs: inputs:
PathtoPublish: '$(Build.SourcesDirectory)\artifacts\NugetPackageRootContents' targetPath: '$(Build.SourcesDirectory)/artifacts/log/Release'
ArtifactName: 'NuGetPackageContents SourceBuild_Windows' artifactName: 'SourceBuild_Windows Logs'
continueOnError: true
condition: not(succeeded())
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/Release'
ArtifactName: 'SourceBuild_Windows_Test'
publishLocation: Container publishLocation: Container
continueOnError: true continueOnError: true
condition: failed() condition: not(succeeded())
# Up-to-date - disabled due to it being flaky # Up-to-date - disabled due to it being flaky
#- job: UpToDate_Windows #- job: UpToDate_Windows
@ -371,6 +353,49 @@ stages:
# filePath: eng\tests\UpToDate.ps1 # filePath: eng\tests\UpToDate.ps1
# arguments: -configuration $(_BuildConfig) -ci -binaryLog # arguments: -configuration $(_BuildConfig) -ci -binaryLog
# Source Build Semi-Official
# used until https://github.com/dotnet/source-build/issues/1795 is fixed
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- job: SourceBuild_Official
pool:
name: NetCorePublic-Pool
queue: BuildPool.Ubuntu.1604.amd64.Open
timeoutInMinutes: 90
steps:
- checkout: self
clean: true
- script: ./eng/cibuild.sh --configuration Release --prepareMachine --docker --sourceBuild
displayName: Build
- task: PublishPipelineArtifact@1
displayName: Publish Logs
inputs:
targetPath: '$(Build.SourcesDirectory)/artifacts/log/Release'
artifactName: 'SourceBuild_Official Logs'
continueOnError: true
condition: not(succeeded())
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/Release'
ArtifactName: 'SourceBuild_Official_Test'
publishLocation: Container
continueOnError: true
condition: not(succeeded())
# Arcade-powered source build
# turned off until https://github.com/dotnet/source-build/issues/1795 is fixed
# - template: /eng/common/templates/jobs/jobs.yml
# parameters:
# enablePublishUsingPipelines: true
# enablePublishBuildArtifacts: true
# enablePublishBuildAssets: true
# artifacts:
# publish:
# artifacts: true
# manifests: true
# runSourceBuild: true
# sourceBuildParameters:
# includeDefaultManagedPlatform: true
#---------------------------------------------------------------------------------------------------------------------# #---------------------------------------------------------------------------------------------------------------------#
# Post Build # # Post Build #

Просмотреть файл

@ -13,4 +13,4 @@ while [[ -h $source ]]; do
done done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
"$scriptroot/eng/build.sh" --build --restore $@ "$scriptroot/eng/build.sh" --build --restore --binaryLog $@

Просмотреть файл

@ -58,6 +58,7 @@ param (
[switch]$testpack, [switch]$testpack,
[string]$officialSkipTests = "false", [string]$officialSkipTests = "false",
[switch]$noVisualStudio, [switch]$noVisualStudio,
[switch]$sourceBuild,
[parameter(ValueFromRemainingArguments=$true)][string[]]$properties) [parameter(ValueFromRemainingArguments=$true)][string[]]$properties)
@ -108,6 +109,7 @@ function Print-Usage() {
Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build"
Write-Host " -useGlobalNuGetCache Use global NuGet cache." Write-Host " -useGlobalNuGetCache Use global NuGet cache."
Write-Host " -noVisualStudio Only build fsc and fsi as .NET Core applications. No Visual Studio required. '-configuration', '-verbosity', '-norestore', '-rebuild' are supported." Write-Host " -noVisualStudio Only build fsc and fsi as .NET Core applications. No Visual Studio required. '-configuration', '-verbosity', '-norestore', '-rebuild' are supported."
Write-Host " -sourceBuild Simulate building for source-build."
Write-Host "" Write-Host ""
Write-Host "Command line arguments starting with '/p:' are passed through to MSBuild." Write-Host "Command line arguments starting with '/p:' are passed through to MSBuild."
} }
@ -154,10 +156,11 @@ function Process-Arguments() {
$script:pack = $True; $script:pack = $True;
} }
if ($sourceBuild) {
$script:testpack = $False;
}
foreach ($property in $properties) { foreach ($property in $properties) {
if ($property.StartsWith("/p:DotNetBuildFromSource=true", "InvariantCultureIgnoreCase")) {
$script:testpack = $False;
}
if (!$property.StartsWith("/p:", "InvariantCultureIgnoreCase")) { if (!$property.StartsWith("/p:", "InvariantCultureIgnoreCase")) {
Write-Host "Invalid argument: $property" Write-Host "Invalid argument: $property"
Print-Usage Print-Usage
@ -220,6 +223,7 @@ function BuildSolution() {
/p:QuietRestore=$quietRestore ` /p:QuietRestore=$quietRestore `
/p:QuietRestoreBinaryLog=$binaryLog ` /p:QuietRestoreBinaryLog=$binaryLog `
/p:TestTargetFrameworks=$testTargetFrameworks ` /p:TestTargetFrameworks=$testTargetFrameworks `
/p:DotNetBuildFromSource=$sourceBuild `
/v:$verbosity ` /v:$verbosity `
$suppressExtensionDeployment ` $suppressExtensionDeployment `
@properties @properties

Просмотреть файл

@ -30,6 +30,7 @@ usage()
echo " --docker Run in a docker container if applicable" echo " --docker Run in a docker container if applicable"
echo " --skipAnalyzers Do not run analyzers during build operations" echo " --skipAnalyzers Do not run analyzers during build operations"
echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
echo " --sourceBuild Simulate building for source-build"
echo "" echo ""
echo "Command line arguments starting with '/p:' are passed through to MSBuild." echo "Command line arguments starting with '/p:' are passed through to MSBuild."
} }
@ -130,14 +131,12 @@ while [[ $# > 0 ]]; do
;; ;;
--docker) --docker)
docker=true docker=true
shift ;;
continue --sourcebuild)
source_build=true
;; ;;
/p:*) /p:*)
properties="$properties $1" properties="$properties $1"
if [[ "$1" == "/p:dotnetbuildfromsource=true" ]]; then
source_build=true
fi
;; ;;
*) *)
echo "Invalid argument: $1" echo "Invalid argument: $1"
@ -279,6 +278,7 @@ function BuildSolution {
/p:ContinuousIntegrationBuild=$ci \ /p:ContinuousIntegrationBuild=$ci \
/p:QuietRestore=$quiet_restore \ /p:QuietRestore=$quiet_restore \
/p:QuietRestoreBinaryLog="$binary_log" \ /p:QuietRestoreBinaryLog="$binary_log" \
/p:DotNetBuildFromSource=$source_build \
$properties $properties
} }

Просмотреть файл

@ -15,7 +15,7 @@
<Target Name="Build" <Target Name="Build"
DependsOnTargets="ResolveProjectReferences" DependsOnTargets="ResolveProjectReferences"
Condition="'$(DotNetBuildFromSource)' != 'true'"> Condition="'$(DotNetBuildFromSource)' != 'true' AND '$(ArcadeBuildFromSource)' != 'true'">
<MakeDir Directories="$(IntermediateOutputPath)" ContinueOnError="True"/> <MakeDir Directories="$(IntermediateOutputPath)" ContinueOnError="True"/>
</Target> </Target>