[Build] Add azure pipeline definition (#4385)

* [Build] Add azure pipeline build definition

* [Scripts] Add docs and provisioning scripts
This commit is contained in:
Rui Marinho 2018-11-13 12:43:14 +00:00 коммит произвёл GitHub
Родитель bf0497a571
Коммит 4b70803c70
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
10 изменённых файлов: 777 добавлений и 0 удалений

93
azure-pipelines.yml Normal file
Просмотреть файл

@ -0,0 +1,93 @@
variables:
- name: BuildConfiguration
value: Debug
- name: BuildPlatform
value: 'any cpu'
- name: XamarinFormsPackageVersion
value: ''
- name: Suffix
value: ''
- group: Xamarin.Forms
- group: XQA Secrets
jobs:
- job: Phase_1
displayName: Prepare Build Phase
condition: succeeded()
pool:
name: Hosted VS2017
steps:
- template: build/steps/build-prepare.yml
- job: Phase_2
displayName: Build Windows Phase
dependsOn: Phase_1
condition: succeeded()
pool:
name: Hosted VS2017
demands: msbuild
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
BuildPlatform: 'any cpu'
release:
BuildConfiguration: 'Release'
BuildPlatform: 'any cpu'
steps:
- template: build/steps/build-windows.yml
- job: Phase_3
displayName: Test Windows Phase
dependsOn: Phase_2
condition: succeeded()
pool:
name: Hosted VS2017
demands: vstest
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- template: build/steps/build-windows-test.yml
- job: Phase_4
displayName: OSX Phase
dependsOn: Phase_1
condition: succeeded()
pool:
name: Hosted Mac Internal
demands:
- Agent.OS -equals darwin
- sh
- msbuild
- Xamarin.iOS
steps:
- template: build/steps/build-osx.yml
- job: Phase_5
displayName: Nuget Phase
dependsOn:
- Phase_3
condition: succeeded()
pool:
name: Hosted VS2017
demands: DotNetFramework
variables:
FormsIdAppend: ''
steps:
- template: build/steps/build-nuget.yml
- job: Phase_6
displayName: Sign Phase
dependsOn: Phase_5
condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'],'refs/tags/')))
pool:
name: VSEng-Xamarin-Forms
steps:
- template: build/steps/build-sign.yml

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

@ -0,0 +1,29 @@
if (!IsMac)
return;
Item (XreItem.Xcode_10_1_0).XcodeSelect ();
AndroidSdk ()
.ApiLevel (AndroidApiLevel.JellyBean)
.ApiLevel (AndroidApiLevel.JellyBean_4_2)
.ApiLevel (AndroidApiLevel.JellyBean_4_3)
.ApiLevel (AndroidApiLevel.KitKat)
.ApiLevel (AndroidApiLevel.Lollipop)
.ApiLevel (AndroidApiLevel.Lollipop_5_1)
.ApiLevel (AndroidApiLevel.Lollipop_5_2)
.ApiLevel (AndroidApiLevel.Marshmallow)
.ApiLevel (AndroidApiLevel.Nougat)
.ApiLevel (AndroidApiLevel.Nougat_7_1)
.ApiLevel (AndroidApiLevel.Oreo)
.ApiLevel (AndroidApiLevel.Oreo_8_1)
.SdkManagerPackage ("build-tools;25.0.0")
.SdkManagerPackage ("build-tools;27.0.0")
.SdkManagerPackage ("build-tools;28.0.0")
.SdkManagerPackage ("extras;google;m2repository");
Item ("https://dl.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-5.12.0.309.macos10.xamarin.universal.pkg");
Item ("https://dl.xamarin.com/MonoTouch/Mac/xamarin.ios-12.1.0.15.pkg");
Item ("https://dl.xamarin.com/XamarinforMac/Mac/xamarin.mac-5.0.0.0.pkg");
Item ("https://dl.xamarin.com/MonoforAndroid/Mac/xamarin.android-9.0.0-20.pkg");
Item ("https://dl.xamarin.com/VsMac/VisualStudioForMac-7.6.11.9.dmg");

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

@ -0,0 +1,26 @@
var arch = Is64Bit ? "x64" : "x86";
SetPowershellExecutionPolicy (PowershellExecutionPolicy.Bypass, PowershellScope.CurrentUser);
SetUACBehavior (UACBehavior.ElevateWithoutConsentOrCredentials);
InstallWindowsFeature ("NetFx3");
VisualStudio (VisualStudioChannel.Stable, VisualStudioTier.Enterprise, "15.8.9")
.Workload (VisualStudioWorkload.ManagedDesktop)
.Workload (VisualStudioWorkload.NetCrossPlat)
.Workload (VisualStudioWorkload.NativeDesktop)
.Workload (VisualStudioWorkload.Universal)
.Component (VisualStudioComponent.Microsoft_VisualStudio_Component_Windows81SDK)
.Component (VisualStudioComponent.Microsoft_VisualStudio_Component_Windows10SDK_16299_UWP)
.Component (VisualStudioComponent.Microsoft_VisualStudio_Component_Windows10SDK_16299_UWP_Native)
.Component (VisualStudioComponent.Component_Android_SDK23)
.Component (VisualStudioComponent.Component_Android_SDK25)
.Component (VisualStudioComponent.Component_JavaJDK)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_5_1_TargetingPack)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_5_2_TargetingPack)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_5_TargetingPack)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_6_2_SDK)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_6_2_TargetingPack)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_7_SDK)
.Component (VisualStudioComponent.Microsoft_Net_Component_4_7_TargetingPack);

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

@ -0,0 +1,53 @@
param(
[string]$branch = "master",
[string]$token
)
$docsUri = "https://$token@github.com/xamarin/Xamarin.Forms-api-docs.git"
if($branch.StartsWith("refs/pull")) {
$branch = "master"
} else {
$docBranches = git ls-remote --heads $docsUri
$matched = $false
foreach ($db in $docBranches) {
if($db.EndsWith($branch)) {
# $branch corresponds to an actual branch in docs, so use it
$matched = $true
break;
}
}
if(-not $matched) {
$branch = "master"
}
$branch = $branch.Replace("refs/heads/", "")
}
# API docs maintains its copy of master in `eng-master`
if ($branch -eq "master") {$branch = "eng-master"}
pushd ..\..
mkdir docstemp
pushd docstemp
git clone -b $branch --single-branch $docsUri
pushd .\Xamarin.Forms-api-docs
$mdoc = '..\..\tools\mdoc\mdoc.exe'
& $mdoc export-msxdoc .\docs
mv Xamarin.Forms.*.xml ..\..\docs -Force
popd
popd
del docstemp -R -Force
popd

108
build/steps/build-nuget.yml Normal file
Просмотреть файл

@ -0,0 +1,108 @@
steps:
- task: DownloadBuildArtifacts@0
displayName: 'Download build artifact win_build'
inputs:
artifactName: 'win_build'
downloadPath: '$(Build.ArtifactsDirectory)'
- task: CopyFiles@2
displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactsDirectory)/win_build'
TargetFolder: '$(System.DefaultWorkingDirectory)'
- task: PowerShell@1
displayName: 'Generate docs from docs repo'
inputs:
scriptName: 'build/scripts/generate-docs.ps1'
arguments: '"$(Build.SourceBranch)" "$(GitHub.Token)"'
workingFolder: '$(System.DefaultWorkingDirectory)/build/scripts'
failOnStandardError: false
- powershell: |
$buildConfiguration = "Release"
$formsNugetVersion = "" + $env:CURRENTSEMANTICVERSION + "." + ($env:BUILD_BUILDID - $env:MAGICNUMBER)
if($env:SUFFIX)
{
$formsNugetVersion = $formsNugetVersion +"-"+$env:SUFFIX
}
Write-Host("FormsVersion = $formsNugetVersion")
Write-Host("##{0}[task.setvariable variable=XamarinFormsPackageVersion]{1}" -f "vso",$formsNugetVersion.ToString() )
failOnStderr: true
displayName: 'Set Nuget version'
- task: NuGetCommand@2
displayName: 'Make NuGet Package'
inputs:
command: pack
feedsToUse: config
packagesToPack: '.nuspec/*.nuspec'
packDestination: '$(Build.ArtifactStagingDirectory)/nuget/debug'
versioningScheme: byEnvVar
versionEnvVar: XamarinFormsPackageVersion
buildProperties: 'IdAppend=$(FormsIdAppend)'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
packagesToPush: '$(Build.ArtifactStagingDirectory)/nuget/debug/*.nupkg'
publishVstsFeed: '13fa23d7-5f2f-47f1-a87c-45a9f173dd74'
allowPackageConflicts: true
- powershell: |
$buildConfiguration = "Release"
$formsNugetVersion = "" + $env:XAMARINFORMSPACKAGEVERSION
Write-Host("Update nuspecs")
Get-ChildItem './.nuspec/*.nuspec' -Recurse | Foreach-Object {
(Get-Content $_) | Foreach-Object {
$_ -replace '\$version\$', $formsNugetVersion `
-replace '\$Configuration\$', $buildConfiguration `
-replace '\$IdAppend\$', ''
} | Set-Content $_
}
failOnStderr: true
displayName: 'Update nuspecs'
condition: and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'],'refs/tags/')))
- task: NuGetCommand@2
displayName: 'Make NuGet Package Release'
inputs:
command: pack
feedsToUse: config
packagesToPack: '.nuspec/*.nuspec'
packDestination: '$(Build.ArtifactStagingDirectory)/nuget/release'
versioningScheme: byEnvVar
versionEnvVar: XamarinFormsPackageVersion
buildProperties: 'IdAppend=$(FormsIdAppend)'
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'],'refs/tags/'))
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: nuget'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/nuget'
ArtifactName: nuget

144
build/steps/build-osx.yml Normal file
Просмотреть файл

@ -0,0 +1,144 @@
steps:
- checkout: self
submodules: true
- task: ms-devlabs.utilitytasks.task-Shellpp.Shell++@0
displayName: 'Add QA cert password to keychain'
inputs:
type: InlineScript
script: '$(Build.Repository.LocalPath)/Xamarin.Forms.Build/provisionator.sh keychain set pb_dev_iphone.p12 $(.p12.Password)'
- bash: '$(Build.Repository.LocalPath)/$(ProvisionatorExecutablePath) keychain set github.com $(GitHub.Token) || echo "PAT already set"'
displayName: 'Initialize PAT'
- bash: '$(Build.Repository.LocalPath)/Xamarin.Forms.Build/provisionator.sh $(Build.Repository.LocalPath)/Xamarin.Forms.Build/provisioning.csx -v'
displayName: Provisioning
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.8.1'
inputs:
versionSpec: 4.8.1
checkLatest: true
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Xamarin.Forms.sln
- task: MSBuild@1
displayName: 'Build solution Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj'
inputs:
solution: Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj
- task: XamariniOS@2
displayName: 'Build Xamarin.iOS solution Xamarin.Forms.sln'
inputs:
solutionFile: Xamarin.Forms.sln
configuration: '$(BuildConfiguration)'
runNugetRestore: true
- task: MSBuild@1
displayName: 'Build Android [Legacy Renderers]'
inputs:
solution: Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
configuration: '$(BuildConfiguration)'
msbuildArguments: '/t:"Rebuild;SignAndroidPackage"'
- task: CopyFiles@2
displayName: 'Copy [Legacy Renderers]'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/Debug/
Contents: '**/*.apk'
TargetFolder: Xamarin.Forms.ControlGallery.Android/legacyRenderers/
CleanTargetFolder: true
OverWrite: true
- task: MSBuild@1
displayName: 'Build Android [Fast Renderers]'
inputs:
solution: Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
configuration: '$(BuildConfiguration)'
msbuildArguments: '/t:"Rebuild;SignAndroidPackage" /p:DefineConstants="TRACE DEBUG TEST_EXPERIMENTAL_RENDERERS APP"'
- task: CopyFiles@2
displayName: 'Copy [Fast Renderers]'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/Debug/
Contents: '**/*.apk'
TargetFolder: Xamarin.Forms.ControlGallery.Android/newRenderers/
CleanTargetFolder: true
OverWrite: true
- task: MSBuild@1
displayName: 'Build Android [Pre-AppCompat]'
inputs:
solution: Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj
configuration: '$(BuildConfiguration)'
msbuildArguments: '/t:"Rebuild;SignAndroidPackage" /p:DefineConstants="TRACE DEBUG FORMS_APPLICATION_ACTIVITY APP"'
- task: CopyFiles@2
displayName: 'Copy [Pre-AppCompat]'
inputs:
SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/Debug/
Contents: '**/*.apk'
TargetFolder: Xamarin.Forms.ControlGallery.Android/preAppCompat/
CleanTargetFolder: true
OverWrite: true
- task: CopyFiles@2
displayName: 'Copy test-cloud.exe'
inputs:
Contents: '**/Xamarin.UITest.*/tools/test-cloud.exe'
TargetFolder: '$(build.artifactstagingdirectory)/testcloud'
CleanTargetFolder: true
OverWrite: true
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy iOS Files for UITest'
inputs:
Contents: |
**/$(IpaName)
Xamarin.Forms.Core.iOS.UITests/bin/$(BuildConfiguration)/**
TargetFolder: '$(build.artifactstagingdirectory)/ios'
CleanTargetFolder: true
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy Android Files for UITest'
inputs:
Contents: 'Xamarin.Forms.Core.Android.UITests/bin/$(BuildConfiguration)/**'
TargetFolder: '$(build.artifactstagingdirectory)/android'
CleanTargetFolder: true
flattenFolders: true
- task: CopyFiles@2
displayName: 'Copy Android apk''s for UITest'
inputs:
Contents: |
Xamarin.Forms.ControlGallery.Android/newRenderers/$(ApkName)
Xamarin.Forms.ControlGallery.Android/legacyRenderers/$(ApkName)
Xamarin.Forms.ControlGallery.Android/preAppCompat/$(ApkName)
TargetFolder: '$(build.artifactstagingdirectory)/androidApp'
CleanTargetFolder: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: iOS'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: OSXArtifacts

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

@ -0,0 +1,88 @@
steps:
- powershell: |
Write-Host "Finding the right branch"
$sourceBranchName = "" + $env:BUILD_SOURCEBRANCHNAME
$sourceBranch = "" + $env:BUILD_SOURCEBRANCH
$sourceVersion = "" + $env:BUILD_SOURCEVERSION
$tags = New-Object System.Collections.ArrayList
$realBuildName = ""
$buildId = "" + $env:BUILD_BUILDID
if($sourceBranch) {
$branchParts = $sourceBranch.Split('/')
if(($sourceBranchName -eq "merge" -or $sourceBranchName -eq "head") -and $branchParts.Count -eq 4 -and $branchParts[1] -contains "pull") {
$realBuildName = "PR-{0} - ({1})" -f $branchParts[2],$buildId
} else {
$shortVersion = If ($sourceVersion.Length -gt 7) { $sourceVersion.Substring(0,7) } Else { $sourceVersion }
$realBuildName = "{0}-{1} ({2})" -f $sourceBranchName,$shortVersion,$buildId
}
}
#Update VSTS build number
if($realBuildName) {
Write-Host "##vso[build.updatebuildnumber]$realBuildName"
}
displayName: 'Set Build Number'
- powershell: |
Write-Host "Finding the right branch"
$sourceBranchName = ""+ $env:BUILD_SOURCEBRANCHNAME
$sourceBranch = ""+ $env:BUILD_SOURCEBRANCH
$publicTags = ""+ $env:PUBLICTAGS
$tags = New-Object System.Collections.ArrayList
$buildId = ""+ $env:BUILD_BUILDID
$sorceV = "" +$env:BUILD_SOURCEVERSION
echo $sorceV
echo $sourceBranchName
echo $sourceBranch
echo $publicTags
if($sourceBranch)
{
$branchParts = $sourceBranch.Split('/')
if($branchParts.Count -eq 1)
{
$tags.Add($branchParts[0] +"-release");
}
if($branchParts.Count -eq 3)
{
if($branchParts[1] -contains "heads")
{
$branchName = $branchParts[2]
$tags.Add($branchName+"-release")
}
}
if($branchParts.Count -eq 4)
{
if($branchParts[1] -contains "pull")
{
$tags.Add("pull-release");
$tags.Add("pr-"+$branchParts[2]);
}
if($branchParts[1] -contains "heads")
{
$branchName = $branchParts[2] + "-" +$branchParts[3]
$tags.Add($branchName+"-release")
}
}
}
#Tag this build
#check PublicTags also add them to the tag list
foreach($publicTag in $publicTags.Split(';'))
{
if($publicTag){
$tags.Add($publicTag);
}
}
#Add tags to the VSTS Build
foreach ($tag in $tags) {
Write-Host "##vso[build.addbuildtag]$tag"
}
$publicTags = $tags -join ';'
Write-Host "##vso[task.setvariable variable=publictags;isOutput=true;]$publicTags"
displayName: 'Tag and name build copy'

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

@ -0,0 +1,67 @@
steps:
- task: JenkinsQueueJob@2
displayName: 'Queue Jenkins Job: sign-from-vsts'
inputs:
serverEndpoint: 'Xamarin Code Signing Jenkins'
jobName: 'sign-from-vsts'
isParameterizedJob: true
jobParameters: |
REPO=xamarin/xamarin.forms
COMMIT=$(Build.SourceVersion)
JOB_ID=10316
BUILD_ID=$(Build.BuildId)
- powershell: |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Function Dump-Host {
[cmdletbinding()]
Param(
$Message,
[parameter(ValueFromPipeline)]$Data)
Process {
$_ = $Data
if ($Message) {
$Message = $ExecutionContext.InvokeCommand.ExpandString($Message)
Write-Host $Message
} else {
Write-Host $Data
}
$Data
}
}
$output = "$(Build.ArtifactStagingDirectory)/nuget/signed"
$ciSystem = "vsts-devdiv"
$jobId = "$(System.DefinitionId)"
$buildId = "$(Build.BuildId)"
$token = "$(GitHub.Token)"
$url = "https://dl.internalx.com/$ciSystem/$jobId-$buildId/metadata.json"
Write-Host "Getting manifest from $url"
$manifest = [string](Invoke-WebRequest -Uri $url -UseBasicParsing -Headers @{"Authorization"="token $token"} ) | Dump-Host | ConvertFrom-Json
#check if our output dir exists
if (!(Test-Path $output -PathType Container)) {
New-Item -ItemType Directory -Force -Path $output
}
foreach ($file in $manifest)
{
$fileUrl = $file.url
$fileName = [IO.Path]::GetFileName($fileUrl)
Write-Host "Downloading artifact to $output/$fileName"
Invoke-WebRequest -Uri $fileUrl -Headers @{"Authorization"="token $token"} -OutFile "$output/$fileName"
}
displayName: 'Download from dl.internalx.com'
failOnStderr: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: nuget signed'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/nuget'
ArtifactName: nuget

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

@ -0,0 +1,31 @@
steps:
- task: DownloadBuildArtifacts@0
displayName: 'Download build artifact win_build'
inputs:
downloadType: specific
itemPattern: '**/*.UnitTests/bin/$(BuildConfiguration)/*'
downloadPath: '$(Build.BinariesDirectory)'
parallelizationLimit: 20
- task: DownloadBuildArtifacts@0
displayName: 'Download build artifact testadapters'
inputs:
downloadType: specific
itemPattern: '**/testadapter/*'
downloadPath: '$(Build.BinariesDirectory)/testadapters/'
parallelizationLimit: 20
- task: VSTest@2
displayName: 'Unit Tests'
inputs:
testAssemblyVer2: |
**/bin/$(BuildConfiguration)/Xamarin.Forms.Core.UnitTests.dll
**/bin/$(BuildConfiguration)/Xamarin.Forms.Pages.UnitTests.dll
**/bin/$(BuildConfiguration)/Xamarin.Forms.Xaml.UnitTests.dll
searchFolder: '$(Build.BinariesDirectory)'
pathtoCustomTestAdapters: '$(Build.BinariesDirectory)/testadapters/'
codeCoverageEnabled: true
testRunTitle: '$(BuildConfiguration)_UnitTests'
configuration: '$(BuildConfiguration)'

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

@ -0,0 +1,138 @@
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.8.1'
inputs:
versionSpec: 4.8.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: Xamarin.Forms.sln
- task: MSBuild@1
displayName: 'Build solution Xamarin.Forms.sln'
inputs:
solution: Xamarin.Forms.sln
msbuildVersion: 15.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArguments: '/nowarn:VSX1000'
clean: true
- task: DeleteFiles@1
displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**/*'
- task: CopyFiles@2
displayName: 'Copy Files dlls'
inputs:
Contents: |
Stubs/**/bin/**/*.dll
Microsoft.XamlStandard/bin/**/*.dll
Microsoft.XamlStandard.Design/bin/**/*.dll
Xamarin.Forms.Core/bin/**/*.dll
Xamarin.Forms.Core/bin/**/*.pdb
Xamarin.Forms.Core/bin/**/*.mdb
Xamarin.Forms.Xaml/bin/**/*.dll
Xamarin.Forms.Xaml/bin/**/*.pdb
Xamarin.Forms.Xaml/bin/**/*.mdb
Xamarin.Forms.Platform/bin/**/*.dll
Xamarin.Forms.Build.Tasks/bin/**/*.dll
Xamarin.Forms.Core.Design/bin/**/*.dll
Xamarin.Forms.Xaml.Design/bin/**/*.dll
Xamarin.Forms.Maps.Design/bin/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Android/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Android.FormsViewGroup/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android.FormsViewGroup/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.iOS/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.WP8/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.pri
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.xr.xml
Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.xbf
Xamarin.Forms.Platform.UAP/Properties/Xamarin.Forms.Platform.UAP.rd.xml
Xamarin.Forms.Platform.MacOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.MacOS/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.Android/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.iOS/bin/iPhoneSimulator/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.MacOS/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.WP8/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pri
Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.xbf
Xamarin.Forms.Pages/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Pages/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Pages/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Pages.Azure/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Pages.Azure/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Pages.Azure/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Android.AppLinks/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Core.UnitTests/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Xaml.UnitTests/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Pages.UnitTests/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.Tizen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.Tizen/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Build.Tasks.Core/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.WPF/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Maps.GTK/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.WPF/bin/$(BuildConfiguration)/**/*.pdb
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.dll
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.mdb
Xamarin.Forms.Platform.GTK/bin/$(BuildConfiguration)/**/*.pdb
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.dll
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.mdb
Microsoft.XamlStandard/bin/$(BuildConfiguration)/**/*.pdb
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: CopyFiles@2
displayName: 'Copy files test adapter'
inputs:
Contents: '**/NUnitTestAdapter.*/tools/*.dll'
TargetFolder: '$(Build.ArtifactStagingDirectory)/testadapter'
CleanTargetFolder: true
OverWrite: true
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: win_build'
inputs:
ArtifactName: 'win_build'