diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 02d86477a..92c8e1171 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -63,42 +63,137 @@ stages: - stage: windows displayName: Build Windows jobs: - - template: build/steps/build-windows.yml - parameters: - name: win + - job: win_hosted + condition: eq(variables['vs2019VmPool'], 'Azure Pipelines') + workspace: + clean: all displayName: Build Windows Phase - vmImage: $(vs2019VmImage) - vmPool: $(vs2019VmPool) - provisionatorPath : 'build/provisioning/provisioning.csx' - - - template: build/steps/build-windows.yml - parameters: - name: pages + timeoutInMinutes: 120 + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + msbuild + strategy: + matrix: + debug: + BuildConfiguration: 'Debug' + release: + BuildConfiguration: 'Release' + steps: + - template: build/steps/build-windows.yml + parameters: + provisionatorPath : 'build/provisioning/provisioning.csx' + - job: pages_hosted + condition: eq(variables['vs2019VmPool'], 'Azure Pipelines') + workspace: + clean: all displayName: Build Pages Phase - vmImage: $(vs2019VmImage) - vmPool: $(vs2019VmPool) - slnPath: build/Xamarin.Forms.Pages.sln - includeUwp: false - includeAndroid: false - includeNonUwpAndNonAndroid: false - includePages: true - - - job: nuget_pack - workspace: - clean: all - dependsOn: - - win - displayName: Nuget Phase - condition: succeeded() - pool: - name: $(vs2019VmPool) - vmImage: $(vs2019VmImage) - variables: - FormsIdAppend: '' - buildConfiguration: $(DefaultBuildConfiguration) - nugetPackageVersion : $[ dependencies.win.outputs['debug.winbuild.xamarinformspackageversion'] ] - steps: - - template: build/steps/build-nuget.yml + timeoutInMinutes: 120 + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + msbuild + strategy: + matrix: + debug: + BuildConfiguration: 'Debug' + release: + BuildConfiguration: 'Release' + steps: + - template: build/steps/build-windows.yml + parameters: + slnPath: build/Xamarin.Forms.Pages.sln + includeUwp: false + includeAndroid: false + includeNonUwpAndNonAndroid: false + includePages: true + - job: nuget_pack_hosted + workspace: + clean: all + displayName: Nuget Phase + dependsOn: + - win_hosted + condition: succeeded() + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + msbuild + variables: + FormsIdAppend: '' + buildConfiguration: $(DefaultBuildConfiguration) + nugetPackageVersion : $[ dependencies.win_hosted.outputs['debug.winbuild.xamarinformspackageversion'] ] + steps: + - template: build/steps/build-nuget.yml + - job: win_bots + condition: ne(variables['vs2019VmPool'], 'Azure Pipelines') + workspace: + clean: all + displayName: Build Windows Phase + timeoutInMinutes: 120 + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + - Agent.OS -equals Windows_NT + - msbuild + strategy: + matrix: + debug: + BuildConfiguration: 'Debug' + release: + BuildConfiguration: 'Release' + steps: + - template: build/steps/build-windows.yml + parameters: + provisionatorPath : 'build/provisioning/provisioning.csx' + - job: pages_bots + condition: ne(variables['vs2019VmPool'], 'Azure Pipelines') + workspace: + clean: all + displayName: Build Pages Phase + timeoutInMinutes: 120 + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + - Agent.OS -equals Windows_NT + - msbuild + strategy: + matrix: + debug: + BuildConfiguration: 'Debug' + release: + BuildConfiguration: 'Release' + steps: + - template: build/steps/build-windows.yml + parameters: + slnPath: build/Xamarin.Forms.Pages.sln + includeUwp: false + includeAndroid: false + includeNonUwpAndNonAndroid: false + includePages: true + - job: nuget_pack_bots + workspace: + clean: all + displayName: Nuget Phase + dependsOn: + - win_bots + condition: succeeded() + pool: + name: $(vs2019VmPool) + vmImage: $(vs2019VmImage) + demands: + - Agent.OS -equals Windows_NT + - msbuild + variables: + FormsIdAppend: '' + buildConfiguration: $(DefaultBuildConfiguration) + nugetPackageVersion : $[ dependencies.win_bots.outputs['debug.winbuild.xamarinformspackageversion'] ] + steps: + - template: build/steps/build-nuget.yml - stage: android displayName: Build Android @@ -124,10 +219,10 @@ stages: clean: all displayName: OSX Phase pool: + name: $(osx2019VmPool) vmImage: $(macOSXVmImage) demands: - sh - - msbuild - Xamarin.iOS variables: provisionator.osxPath : 'build/provisioning/provisioning.csx' @@ -150,10 +245,10 @@ stages: clean: all displayName: OSX Phase pool: + name: $(osx2017VmPool) vmImage: 'macOS-10.14' demands: - sh - - msbuild - Xamarin.iOS variables: provisionator.osxPath : 'build/provisioning/provisioning.csx' @@ -174,6 +269,8 @@ stages: displayName: Sign Phase pool: name: $(signVmImage) + demands: + msbuild steps: - template: build/steps/build-sign.yml condition: and(succeeded(), or(eq(variables['Sign'], 'true'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'],'refs/tags/')))) diff --git a/build/steps/build-windows.yml b/build/steps/build-windows.yml index 26a0978c8..d3fee482d 100644 --- a/build/steps/build-windows.yml +++ b/build/steps/build-windows.yml @@ -1,238 +1,213 @@ parameters: - name: '' # in the form type_platform_host - displayName: '' # the human name - vmImage: '' # the VM image - vmPool: '' # the VM pool - targetFolder: '' # the bootstrapper target - dependsOn: [] # the dependiencies - preBuildSteps: [] # any steps to run before the build - postBuildSteps: [] # any additional steps to run after the build slnPath : 'Xamarin.Forms.sln' - csprojPath : 'Xamarin.Forms.Platform.UAP\Xamarin.Forms.Platform.UAP.csproj' msbuildExtraArguments : '' artifactsTargetFolder: '$(build.artifactstagingdirectory)' artifactsName: 'win_build' - nunitTestAdapterFolder: 'packages/NUnitTestAdapter.AnyVersion/build/' nunitTestFolder: '$(build.sourcesdirectory)' includeUwp: 'true' includeAndroid: 'true' includeNonUwpAndNonAndroid: 'true' includePages: 'false' -jobs: - - job: ${{ parameters.name }} - workspace: - clean: all - displayName: ${{ parameters.displayName }} - timeoutInMinutes: 120 - pool: - name: ${{ parameters.vmPool }} - vmImage: ${{ parameters.vmImage }} - dependsOn: ${{ parameters.dependsOn }} - strategy: - matrix: - debug: - BuildConfiguration: 'Debug' - release: - BuildConfiguration: 'Release' - steps: - - checkout: self - clean: true - - script: build.cmd -Target provision - displayName: 'Cake Provision' - condition: eq(variables['provisioningCake'], 'true') - - task: xamops.azdevex.provisionator-task.provisionator@1 - displayName: 'Provisionator' - condition: eq(variables['provisioning'], 'true') - inputs: - provisioning_script: ${{ parameters.provisionatorPath }} - provisioning_extra_args: ${{ parameters.provisionator.extraArguments }} +steps: + - checkout: self + clean: true + - script: build.cmd -Target provision + displayName: 'Cake Provision' + condition: eq(variables['provisioningCake'], 'true') - # - task: UseDotNet@2 - # displayName: "Install .net core $(DOTNET_VERSION)" - # condition: ne(variables['DOTNET_VERSION'], '') - # inputs: - # version: $(DOTNET_VERSION) - # packageType: 'sdk' + - task: xamops.azdevex.provisionator-task.provisionator@1 + displayName: 'Provisionator' + condition: eq(variables['provisioning'], 'true') + inputs: + provisioning_script: ${{ parameters.provisionatorPath }} + provisioning_extra_args: ${{ parameters.provisionator.extraArguments }} - - task: NuGetToolInstaller@1 - displayName: 'Use NuGet $(NUGET_VERSION)' - condition: ne(variables['NUGET_VERSION'], '') - inputs: - versionSpec: $(NUGET_VERSION) + # - task: UseDotNet@2 + # displayName: "Install .net core $(DOTNET_VERSION)" + # condition: ne(variables['DOTNET_VERSION'], '') + # inputs: + # version: $(DOTNET_VERSION) + # packageType: 'sdk' - - task: NuGetCommand@2 - displayName: 'NuGet restore ${{ parameters.slnPath }}' - inputs: - restoreSolution: ${{ parameters.slnPath }} - feedsToUse: config - nugetConfigPath: 'DevopsNuget.config' + - task: NuGetToolInstaller@1 + displayName: 'Use NuGet $(NUGET_VERSION)' + condition: ne(variables['NUGET_VERSION'], '') + inputs: + versionSpec: $(NUGET_VERSION) - - script: build.cmd -Target BuildForNuget -ScriptArgs '-configuration="$(BuildConfiguration)"','-Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"' - name: winbuild - displayName: 'Build Projects For Nuget' - condition: ne(${{ parameters.includePages }}, 'true') + - task: NuGetCommand@2 + displayName: 'NuGet restore ${{ parameters.slnPath }}' + inputs: + restoreSolution: ${{ parameters.slnPath }} + feedsToUse: config + nugetConfigPath: 'DevopsNuget.config' - - task: MSBuild@1 - displayName: 'Build solution ${{ parameters.slnPath }}' - name: winslnbuild - condition: eq(${{ parameters.includePages }}, 'true') - inputs: - solution: ${{ parameters.slnPath }} - configuration: '$(BuildConfiguration)' - msbuildArguments: ${{ parameters.msbuildExtraArguments }} /bl:$(Build.ArtifactStagingDirectory)\win-$(BuildConfiguration).binlog + - script: build.cmd -Target BuildForNuget -ScriptArgs '-configuration="$(BuildConfiguration)"','-Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"' + name: winbuild + displayName: 'Build Projects For Nuget' + condition: ne(${{ parameters.includePages }}, 'true') - - task: VSTest@2 - displayName: 'Unit Tests' - inputs: - testAssemblyVer2: | - **/bin/$(BuildConfiguration)/Xamarin.Forms.Core.UnitTests.dll - **/bin/$(BuildConfiguration)/**/Xamarin.Forms.DualScreen.UnitTests.dll - **/bin/$(BuildConfiguration)/Xamarin.Forms.Pages.UnitTests.dll - **/bin/$(BuildConfiguration)/**/Xamarin.Forms.Xaml.UnitTests.dll - searchFolder: ${{ parameters.nunitTestFolder }} - codeCoverageEnabled: true - testRunTitle: '$(BuildConfiguration)_UnitTests' - configuration: '$(BuildConfiguration)' - diagnosticsEnabled: true + - task: MSBuild@1 + displayName: 'Build solution ${{ parameters.slnPath }}' + name: winslnbuild + condition: eq(${{ parameters.includePages }}, 'true') + inputs: + solution: ${{ parameters.slnPath }} + configuration: '$(BuildConfiguration)' + msbuildArguments: ${{ parameters.msbuildExtraArguments }} /bl:$(Build.ArtifactStagingDirectory)\win-$(BuildConfiguration).binlog - - task: CopyFiles@2 - displayName: 'Copy Files dlls' - condition: eq(${{ parameters.includeNonUwpAndNonAndroid }}, 'true') - 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/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.Maps/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.Material.iOS/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.mdb - 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.iOS/bin/iPhoneSimulator/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Maps.MacOS/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Core.UnitTests/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Xaml.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 - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll - **/*.binlog + - task: VSTest@2 + displayName: 'Unit Tests' + inputs: + testAssemblyVer2: | + **/bin/$(BuildConfiguration)/Xamarin.Forms.Core.UnitTests.dll + **/bin/$(BuildConfiguration)/**/Xamarin.Forms.DualScreen.UnitTests.dll + **/bin/$(BuildConfiguration)/Xamarin.Forms.Pages.UnitTests.dll + **/bin/$(BuildConfiguration)/**/Xamarin.Forms.Xaml.UnitTests.dll + searchFolder: ${{ parameters.nunitTestFolder }} + codeCoverageEnabled: true + testRunTitle: '$(BuildConfiguration)_UnitTests' + configuration: '$(BuildConfiguration)' + diagnosticsEnabled: true - TargetFolder: ${{ parameters.artifactsTargetFolder }} + - task: CopyFiles@2 + displayName: 'Copy Files dlls' + condition: eq(${{ parameters.includeNonUwpAndNonAndroid }}, 'true') + 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/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Maps/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.Maps/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.Material.iOS/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.Material.iOS/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.Material.Tizen/bin/$(BuildConfiguration)/**/*.mdb + 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.iOS/bin/iPhoneSimulator/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Maps.MacOS/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Core.UnitTests/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Xaml.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 + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll + **/*.binlog - - task: CopyFiles@2 - displayName: 'Copy UWP' - condition: eq(${{ parameters.includeUwp }}, 'true') - inputs: - Contents: | - Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.pdb - 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/obj/$(BuildConfiguration)/**/*.xaml - Xamarin.Forms.Platform.UAP/Properties/Xamarin.Forms.Platform.UAP.rd.xml - Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pri - Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.xbf - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll + TargetFolder: ${{ parameters.artifactsTargetFolder }} - TargetFolder: ${{ parameters.artifactsTargetFolder }} + - task: CopyFiles@2 + displayName: 'Copy UWP' + condition: eq(${{ parameters.includeUwp }}, 'true') + inputs: + Contents: | + Xamarin.Forms.Platform.UAP/bin/$(BuildConfiguration)/**/*.pdb + 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/obj/$(BuildConfiguration)/**/*.xaml + Xamarin.Forms.Platform.UAP/Properties/Xamarin.Forms.Platform.UAP.rd.xml + Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.pri + Xamarin.Forms.Maps.UWP/bin/$(BuildConfiguration)/**/*.xbf + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll - - - task: CopyFiles@2 - displayName: 'Copy Android Files dlls' - condition: eq('${{ parameters.includeAndroid }}', true) - inputs: - Contents: | - Stubs/**/bin/**/*.dll - 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.Material.Android/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.Maps.Android/bin/$(BuildConfiguration)/**/*.dll - 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.DualScreen/bin/$(BuildConfiguration)/**/*.dll - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb - Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb - Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll - **/*.binlog + TargetFolder: ${{ parameters.artifactsTargetFolder }} - TargetFolder: ${{ parameters.artifactsTargetFolder }} + + - task: CopyFiles@2 + displayName: 'Copy Android Files dlls' + condition: eq('${{ parameters.includeAndroid }}', true) + inputs: + Contents: | + Stubs/**/bin/**/*.dll + 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.Material.Android/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.Material.Android/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.Maps.Android/bin/$(BuildConfiguration)/**/*.dll + 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.DualScreen/bin/$(BuildConfiguration)/**/*.dll + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.pdb + Xamarin.Forms.DualScreen/bin/$(BuildConfiguration)/**/*.mdb + Xamarin.Forms.DualScreen.UnitTests/bin/$(BuildConfiguration)/**/*.dll + **/*.binlog - - task: CopyFiles@2 - displayName: 'Copy Pages Files dlls' - condition: eq('${{ parameters.includePages }}', true) - inputs: - Contents: | - 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.Pages.UnitTests/bin/$(BuildConfiguration)/**/*.dll + TargetFolder: ${{ parameters.artifactsTargetFolder }} - TargetFolder: ${{ parameters.artifactsTargetFolder }} + - task: CopyFiles@2 + displayName: 'Copy Pages Files dlls' + condition: eq('${{ parameters.includePages }}', true) + inputs: + Contents: | + 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.Pages.UnitTests/bin/$(BuildConfiguration)/**/*.dll - - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: ${{ parameters.artifactsName }}' - condition: always() - inputs: - ArtifactName: ${{ parameters.artifactsName }} + TargetFolder: ${{ parameters.artifactsTargetFolder }} + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: ${{ parameters.artifactsName }}' + condition: always() + inputs: + ArtifactName: ${{ parameters.artifactsName }}