зеркало из https://github.com/DeGsoft/maui-linux.git
[Build] Add azure pipeline definition (#4385)
* [Build] Add azure pipeline build definition * [Scripts] Add docs and provisioning scripts
This commit is contained in:
Родитель
bf0497a571
Коммит
4b70803c70
|
@ -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
|
|
@ -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
|
|
@ -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'
|
Загрузка…
Ссылка в новой задаче