From 1532d46f5fb6f219594015b80f8e5a2476512882 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Wed, 11 Mar 2020 05:31:24 -0600 Subject: [PATCH] Add switches to build Control Gallery using the nuget produced by the build (#8937) * Build Control Gallery with nugets * - sync pipelines * - add team project check * - fix output dir to match for ui tests * - preserve dual screen --- DevopsNuget.config | 12 ++ Directory.Build.props | 2 +- Directory.Build.targets | 1 - Environment.Build.props | 15 +- Nuget.targets | 16 ++ Nuget/.gitignore | 4 + ...rin.Forms.Platform.iOS (Forwarders).csproj | 2 +- .../Android10.Build.targets | 18 +- .../Directory.Build.targets | 5 +- .../Nuget2017.Build.targets | 7 + .../Nuget2019.Build.targets | 17 ++ .../PlatformSpecificCoreGalleryFactory.cs | 2 + ...amarin.Forms.ControlGallery.Android.csproj | 29 ++- .../Directory.Build.targets | 3 + ...rms.ControlGallery.WindowsUniversal.csproj | 8 + .../Directory.Build.targets | 3 + .../Xamarin.Forms.ControlGallery.iOS.csproj | 12 +- Xamarin.Forms.Controls/Directory.Build.props | 2 +- .../Directory.Build.targets | 5 +- Xamarin.Forms.Controls/Nuget.Build.targets | 11 ++ Xamarin.Forms.Controls/Source.Build.targets | 11 ++ .../Xamarin.Forms.Controls.csproj | 7 +- .../DualScreenService.android.cs | 7 + .../Xamarin.Forms.Maps.Android.csproj | 2 +- .../Xamarin.Forms.Maps.iOS.csproj | 4 +- .../Xamarin.Forms.Material.iOS.csproj | 2 +- .../Xamarin.Forms.Pages.Azure.csproj | 3 +- .../Xamarin.Forms.Pages.csproj | 3 +- .../Renderers/ActivityIndicatorRenderer.cs | 2 +- azure-pipelines.yml | 172 +++++++++--------- build.cake | 2 +- build/steps/build-android.yml | 49 +++-- build/steps/build-osx.yml | 45 ++++- build/steps/build-windows.yml | 2 + 34 files changed, 329 insertions(+), 156 deletions(-) create mode 100644 DevopsNuget.config create mode 100644 Nuget.targets create mode 100644 Nuget/.gitignore create mode 100644 Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets create mode 100644 Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets create mode 100644 Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets create mode 100644 Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets create mode 100644 Xamarin.Forms.Controls/Nuget.Build.targets create mode 100644 Xamarin.Forms.Controls/Source.Build.targets diff --git a/DevopsNuget.config b/DevopsNuget.config new file mode 100644 index 00000000000..ad639f6d1fa --- /dev/null +++ b/DevopsNuget.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/Directory.Build.props b/Directory.Build.props index eae9f439806..99a4fa8aad6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/Directory.Build.targets b/Directory.Build.targets index 85f1a8f91f0..1dec7b905d5 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -3,6 +3,5 @@ - diff --git a/Environment.Build.props b/Environment.Build.props index c0c6de77cfd..04101372825 100644 --- a/Environment.Build.props +++ b/Environment.Build.props @@ -5,6 +5,7 @@ + false true @@ -19,6 +20,18 @@ --> + + <_XamarinFormsVersion>$(BUILD_BUILDNUMBER.Split(`+`)[0]) + $(_XamarinFormsVersion) + + + + + + false + true + + $(FrameworkSDKRoot.Contains('/Versions/5')) true @@ -30,4 +43,4 @@ MonoAndroid90; MonoAndroid90;MonoAndroid10.0; - \ No newline at end of file + diff --git a/Nuget.targets b/Nuget.targets new file mode 100644 index 00000000000..518a38de3f0 --- /dev/null +++ b/Nuget.targets @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Nuget/.gitignore b/Nuget/.gitignore new file mode 100644 index 00000000000..86d0cb2726c --- /dev/null +++ b/Nuget/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj b/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj index a5cd4c8a4d4..e292bec2f54 100644 --- a/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj +++ b/Stubs/Xamarin.Forms.Platform.iOS/Xamarin.Forms.Platform.iOS (Forwarders).csproj @@ -2,7 +2,7 @@ Debug - iPhoneSimulator + AnyCPU 8.0.30703 2.0 {39B3457F-01D8-43D0-8E84-D8C4F73CF48D} diff --git a/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets b/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets index c4731bd35f2..0f258c7e3ff 100644 --- a/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets +++ b/Xamarin.Forms.ControlGallery.Android/Android10.Build.targets @@ -1,12 +1,12 @@ - - 1.0.0 - - - - - - + + 1.0.0 + + + + + + - \ No newline at end of file + diff --git a/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets b/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets index fe3b8e64991..680415c9bd3 100644 --- a/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets +++ b/Xamarin.Forms.ControlGallery.Android/Directory.Build.targets @@ -1,3 +1,6 @@ - \ No newline at end of file + + + + diff --git a/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets b/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets new file mode 100644 index 00000000000..d5c7b72cec8 --- /dev/null +++ b/Xamarin.Forms.ControlGallery.Android/Nuget2017.Build.targets @@ -0,0 +1,7 @@ + + + + 0.4.11 + + + \ No newline at end of file diff --git a/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets b/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets new file mode 100644 index 00000000000..02369be4461 --- /dev/null +++ b/Xamarin.Forms.ControlGallery.Android/Nuget2019.Build.targets @@ -0,0 +1,17 @@ + + + + 0.7.1 + + + + + 1.0.0 + + + + + + + + \ No newline at end of file diff --git a/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs b/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs index bb739bd7c01..d5a5df24af5 100644 --- a/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs +++ b/Xamarin.Forms.ControlGallery.Android/PlatformSpecificCoreGalleryFactory.cs @@ -3,11 +3,13 @@ using Xamarin.Forms; using Xamarin.Forms.ControlGallery.Android; using Xamarin.Forms.Controls; +using Xamarin.Forms.Internals; [assembly: Dependency(typeof(PlatformSpecificCoreGalleryFactory))] namespace Xamarin.Forms.ControlGallery.Android { + [Preserve(AllMembers = true)] public class PlatformSpecificCoreGalleryFactory : IPlatformSpecificCoreGalleryFactory { public string Title => "Android Core Gallery"; diff --git a/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj b/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj index 5b3f5ffc40c..673c2bdfb2e 100644 --- a/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj +++ b/Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj @@ -28,7 +28,6 @@ true False - @@ -37,7 +36,6 @@ $(DefineConstants);FORMS_APPLICATION_ACTIVITY $(DefineConstants) - $(DefineConstants);HAVE_OPENTK True @@ -194,11 +192,7 @@ - - - {6e53feb1-1100-46ae-8013-17bba35cc197} - Xamarin.Forms.Platform.Android (Forwarders) - + {cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1} Xamarin.Forms.Controls @@ -207,6 +201,15 @@ {4dcd0420-1168-4b77-86db-6196ee4bd491} Xamarin.Forms.CustomAttributes + + + + proguard.cfg + + + {6e53feb1-1100-46ae-8013-17bba35cc197} + Xamarin.Forms.Platform.Android (Forwarders) + {fb4a866a-5721-4545-9e5d-b7f7d59875a4} Xamarin.Forms.DualScreen @@ -358,9 +361,6 @@ 3.0.2 - - 0.7.1 - @@ -394,11 +394,6 @@ - - - proguard.cfg - - @@ -424,11 +419,11 @@ - + - \ No newline at end of file + diff --git a/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets b/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets new file mode 100644 index 00000000000..6f72129c885 --- /dev/null +++ b/Xamarin.Forms.ControlGallery.WindowsUniversal/Directory.Build.targets @@ -0,0 +1,3 @@ + + + diff --git a/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj b/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj index 9eddad9111b..e9e0f8bc8f3 100644 --- a/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj +++ b/Xamarin.Forms.ControlGallery.WindowsUniversal/Xamarin.Forms.ControlGallery.WindowsUniversal.csproj @@ -101,6 +101,14 @@ {cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1} Xamarin.Forms.Controls + + + + {4dcd0420-1168-4b77-86db-6196ee4bd491} + Xamarin.Forms.CustomAttributes + + + {57b8b73d-c3b5-4c42-869e-7b2f17d354ac} Xamarin.Forms.Core diff --git a/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets b/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets new file mode 100644 index 00000000000..6f72129c885 --- /dev/null +++ b/Xamarin.Forms.ControlGallery.iOS/Directory.Build.targets @@ -0,0 +1,3 @@ + + + diff --git a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj index f4707d9b6a1..4299dc31c90 100644 --- a/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj +++ b/Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj @@ -1,7 +1,9 @@  + Debug + iPhone iPhoneSimulator {C7131F14-274F-4B55-ACA9-E81731AD012F} {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -159,6 +161,14 @@ {cb9c96ce-125c-4a68-b6a1-c3ff1fbf93e1} Xamarin.Forms.Controls + + + + {4dcd0420-1168-4b77-86db-6196ee4bd491} + Xamarin.Forms.CustomAttributes + + + {fb4a866a-5721-4545-9e5d-b7f7d59875a4} Xamarin.Forms.DualScreen @@ -439,4 +449,4 @@ - \ No newline at end of file + diff --git a/Xamarin.Forms.Controls/Directory.Build.props b/Xamarin.Forms.Controls/Directory.Build.props index ef994776379..5fa729b6773 100644 --- a/Xamarin.Forms.Controls/Directory.Build.props +++ b/Xamarin.Forms.Controls/Directory.Build.props @@ -1,4 +1,4 @@ - + diff --git a/Xamarin.Forms.Controls/Directory.Build.targets b/Xamarin.Forms.Controls/Directory.Build.targets index 804a384f08c..10989cede11 100644 --- a/Xamarin.Forms.Controls/Directory.Build.targets +++ b/Xamarin.Forms.Controls/Directory.Build.targets @@ -1,4 +1,5 @@ - - + + + diff --git a/Xamarin.Forms.Controls/Nuget.Build.targets b/Xamarin.Forms.Controls/Nuget.Build.targets new file mode 100644 index 00000000000..074e0a355e9 --- /dev/null +++ b/Xamarin.Forms.Controls/Nuget.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Xamarin.Forms.Controls/Source.Build.targets b/Xamarin.Forms.Controls/Source.Build.targets new file mode 100644 index 00000000000..b79ec209eda --- /dev/null +++ b/Xamarin.Forms.Controls/Source.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj index 455f0b21c5f..a67aeec73a4 100644 --- a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj +++ b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj @@ -27,7 +27,7 @@ - + @@ -35,6 +35,9 @@ + + + @@ -91,4 +94,4 @@ - + \ No newline at end of file diff --git a/Xamarin.Forms.DualScreen/DualScreenService.android.cs b/Xamarin.Forms.DualScreen/DualScreenService.android.cs index 2f37850ee23..7ccee81eaad 100644 --- a/Xamarin.Forms.DualScreen/DualScreenService.android.cs +++ b/Xamarin.Forms.DualScreen/DualScreenService.android.cs @@ -14,6 +14,12 @@ namespace Xamarin.Forms.DualScreen { public class DualScreenService { + [Internals.Preserve(Conditional = true)] + public DualScreenService() + { + + } + public static void Init(Activity activity) { DependencyService.Register(); @@ -34,6 +40,7 @@ internal class DualScreenServiceImpl : IDualScreenService, Platform.Android.Dual object _hingeAngleLock = new object(); TaskCompletionSource _gettingHingeAngle; + [Internals.Preserve(Conditional = true)] public DualScreenServiceImpl() { _HingeService = this; diff --git a/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj b/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj index 3fc56907b6c..d0639e7dd3e 100644 --- a/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj +++ b/Xamarin.Forms.Maps.Android/Xamarin.Forms.Maps.Android.csproj @@ -37,4 +37,4 @@ - \ No newline at end of file + diff --git a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj index 3612dd456e4..722bb30c526 100644 --- a/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj +++ b/Xamarin.Forms.Maps.iOS/Xamarin.Forms.Maps.iOS.csproj @@ -2,7 +2,7 @@ Debug - iPhoneSimulator + AnyCPU 8.0.30703 2.0 {ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} @@ -71,4 +71,4 @@ - \ No newline at end of file + diff --git a/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj b/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj index d62ae0b39a2..586f2c558e8 100644 --- a/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj +++ b/Xamarin.Forms.Material.iOS/Xamarin.Forms.Material.iOS.csproj @@ -100,4 +100,4 @@ - \ No newline at end of file + diff --git a/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj b/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj index 579346563c6..875c7a62c17 100644 --- a/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj +++ b/Xamarin.Forms.Pages.Azure/Xamarin.Forms.Pages.Azure.csproj @@ -3,8 +3,7 @@ netstandard2.0;netstandard1.4 - - 4.1.1 + diff --git a/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj b/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj index 58d55280a7f..b53ea950b08 100644 --- a/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj +++ b/Xamarin.Forms.Pages/Xamarin.Forms.Pages.csproj @@ -7,8 +7,7 @@ - - 11.0.2 + diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs index 3ad66cd52c1..537185cb9d8 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/ActivityIndicatorRenderer.cs @@ -62,4 +62,4 @@ internal void PreserveState() Control.StartAnimating(); } } -} \ No newline at end of file +} diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b807b2fdd1e..7bfac430401 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -26,7 +26,7 @@ variables: resources: repositories: - - repository: xamarin-templates + - repository: xamarin-templates type: github name: xamarin/yaml-templates endpoint: xamarin @@ -59,96 +59,90 @@ schedules: include: - master -jobs: -- template: build/steps/build-windows.yml - parameters: - name: win - displayName: Build Windows Phase - vmImage: $(win2019VmImage) - provisionatorPath : 'build/provisioning/provisioning.csx' +stages: + - stage: windows + displayName: Build Windows + jobs: + - template: build/steps/build-windows.yml + parameters: + name: win + displayName: Build Windows Phase + vmImage: $(win2019VmImage) + provisionatorPath : 'build/provisioning/provisioning.csx' + - job: nuget_pack + workspace: + clean: all + dependsOn: + - win + displayName: Nuget Phase + condition: succeeded() + pool: + name: $(win2019VmImage) + variables: + FormsIdAppend: '' + buildConfiguration: $(DefaultBuildConfiguration) + nugetPackageVersion : $[ dependencies.win.outputs['debug.winbuild.xamarinformspackageversion'] ] + steps: + - template: build/steps/build-nuget.yml -- template: build/steps/build-android.yml - parameters: - name: android_legacy - displayName: Build Android [Legacy Renderers] - vmImage: $(macOSVmImage) - targetFolder: Xamarin.Forms.ControlGallery.Android/legacyRenderers/ - androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="LEGACY" /bl:$(Build.ArtifactStagingDirectory)/android-legacy.binlog' - buildConfiguration: $(AndroidBuildConfiguration) - provisionatorPath : 'build/provisioning/provisioning.csx' + - stage: android + displayName: Build Android + ${{ if eq(variables['System.TeamProject'], 'devdiv') }}: + dependsOn: windows + ${{ if eq(variables['System.TeamProject'], 'public') }}: + dependsOn: [] + jobs: + - template: build/steps/build-android.yml + parameters: + vmImage: $(macOSVmImage) + provisionatorPath : 'build/provisioning/provisioning.csx' -- template: build/steps/build-android.yml - parameters: - name: android_preappcompact - displayName: Build Android [Pre-AppCompat] - vmImage: $(macOSVmImage) - targetFolder: Xamarin.Forms.ControlGallery.Android/preAppCompat - androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="PREAPPCOMPAT" /bl:$(Build.ArtifactStagingDirectory)/android-preappcompact.binlog' - buildConfiguration: $(AndroidBuildConfiguration) - provisionatorPath : 'build/provisioning/provisioning.csx' - -- template: build/steps/build-android.yml - parameters: - name: android_fast - displayName: Build Android [Fast Renderers] - vmImage: $(macOSVmImage) - targetFolder: Xamarin.Forms.ControlGallery.Android/newRenderers/ - androidProjectArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="FAST" /bl:$(Build.ArtifactStagingDirectory)/android-newrenderers.binlog' - buildConfiguration: $(AndroidBuildConfiguration) - provisionatorPath : 'build/provisioning/provisioning.csx' - -- job: osx - workspace: - clean: all - displayName: OSX Phase - pool: - name: $(macOSVmImage) - demands: - - Agent.OS -equals darwin - - sh - - msbuild - - Xamarin.iOS - strategy: - matrix: - BuildForVS2017: - buildForVS2017: 'true' - BuildForVS2019: - buildForVS2017: 'false' - variables: - provisionator.osxPath : 'build/provisioning/provisioning.csx' - provisionator.signPath : 'build/provisioning/provisioning_sign.csx' - buildConfiguration: $(DefaultBuildConfiguration) - slnPath: $(SolutionFile) - iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12' - iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision' - buildForVS2017: $(buildForVS2017) - steps: - - template: build/steps/build-osx.yml - -- job: nuget_pack - workspace: - clean: all - displayName: Nuget Phase - dependsOn: - - win - condition: succeeded() - pool: - name: $(winVmImage) - variables: - FormsIdAppend: '' - buildConfiguration: $(DefaultBuildConfiguration) - nugetPackageVersion : $[ dependencies.win.outputs['debug.winbuild.xamarinformspackageversion'] ] - steps: - - template: build/steps/build-nuget.yml + - stage: build_osx + displayName: Build OSX + ${{ if eq(variables['System.TeamProject'], 'devdiv') }}: + dependsOn: windows + ${{ if eq(variables['System.TeamProject'], 'public') }}: + dependsOn: [] + jobs: + - job: osx + workspace: + clean: all + displayName: OSX Phase + pool: + name: $(macOSVmImage) + demands: + - Agent.OS -equals darwin + - sh + - msbuild + - Xamarin.iOS + strategy: + matrix: + BuildForVS2017: + buildForVS2017: 'true' + BuildForVS2019: + buildForVS2017: 'false' + variables: + provisionator.osxPath : 'build/provisioning/provisioning.csx' + provisionator.signPath : 'build/provisioning/provisioning_sign.csx' + buildConfiguration: $(DefaultBuildConfiguration) + iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12' + iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision' + buildForVS2017: $(buildForVS2017) + steps: + - template: build/steps/build-osx.yml # only sign using the private server -- ${{ if eq(variables['System.TeamProject'], 'devdiv') }}: - - job: nuget_sign - displayName: Sign Phase - dependsOn: nuget_pack - pool: - name: $(signVmImage) - 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/')))) + - ${{ if eq(variables['System.TeamProject'], 'devdiv') }}: + - stage: nuget_signing + dependsOn: windows + displayName: Sign Nuget + jobs: + - job: nuget_sign + displayName: Sign Phase + pool: + name: $(signVmImage) + 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.cake b/build.cake index d98f974b14c..9ecaca7881e 100644 --- a/build.cake +++ b/build.cake @@ -68,7 +68,7 @@ string monoPatchVersion = ""; string monoMajorVersion = ""; string monoVersion = ""; -if(buildForVS2017) +if(buildForVS2017 || teamProject == "DevDiv") { // VS2017 monoMajorVersion = "5.18.1"; diff --git a/build/steps/build-android.yml b/build/steps/build-android.yml index 2ea2cdde218..1bc9ca3c944 100644 --- a/build/steps/build-android.yml +++ b/build/steps/build-android.yml @@ -3,19 +3,15 @@ parameters: 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' buildTaskPath : 'Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj' - androidPath : 'Xamarin.Forms.ControlGallery.Android' androidProjectPath : 'Xamarin.Forms.ControlGallery.Android/Xamarin.Forms.ControlGallery.Android.csproj' - androidProjectArguments : '' buildConfiguration : 'Debug' nugetVersion: $(NUGET_VERSION) monoVersion: $(MONO_VERSION) - apkTargetFolder: '$(build.artifactstagingdirectory)/androidApp' provisionatorPath: 'build/provisioning/provisioning.csx' provisionatorExtraArguments: '' @@ -28,6 +24,17 @@ jobs: pool: name: ${{ parameters.vmImage }} dependsOn: ${{ parameters.dependsOn }} + strategy: + matrix: + android_legacy: + renderers: 'LEGACY' + outputfolder: 'legacyRenderers' + android_preAppCompat: + renderers: 'PREAPPCOMPAT' + outputfolder: 'preAppCompat' + android_newRenderers: + renderers: 'FAST' + outputfolder: 'newRenderers' steps: - checkout: self clean: true @@ -45,7 +52,7 @@ jobs: inputs: targetType: 'filePath' filePath: 'build.sh' - arguments: --target provision + arguments: --target provision --TeamProject="$(System.TeamProject)" - task: UseDotNet@2 displayName: 'Install .net core $(DOTNET_VERSION)' @@ -62,11 +69,27 @@ jobs: condition: ne(variables['NUGET_VERSION'], '') inputs: versionSpec: $(NUGET_VERSION) + + - task: DownloadBuildArtifacts@0 + displayName: 'Download build artifact nuget' + condition: eq(variables['System.TeamProject'], 'DevDiv') + inputs: + artifactName: 'nuget' + downloadPath: 'Nuget' + + - task: CopyFiles@2 + displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)' + condition: eq(variables['System.TeamProject'], 'DevDiv') + inputs: + SourceFolder: 'Nuget/nuget/${{ parameters.buildConfiguration }}' + TargetFolder: 'Nuget' - task: NuGetCommand@2 displayName: 'NuGet restore ${{ parameters.slnPath }}' inputs: restoreSolution: ${{ parameters.slnPath }} + feedsToUse: config + nugetConfigPath: 'DevopsNuget.config' - task: MSBuild@1 displayName: 'Build ${{ parameters.buildTaskPath }}' @@ -75,27 +98,27 @@ jobs: configuration: ${{ parameters.buildConfiguration }} - task: MSBuild@1 - displayName: 'Build Android ${{ parameters.name }}' + displayName: 'Build Android $(renderers)' inputs: solution: ${{ parameters.androidProjectPath }} configuration: ${{ parameters.buildConfiguration }} - msbuildArguments: ${{ parameters.androidProjectArguments }} + msbuildArguments: '/t:"Rebuild;SignAndroidPackage" /p:ANDROID_RENDERERS="$(renderers)" /bl:$(Build.ArtifactStagingDirectory)/android-$(renderers).binlog' - task: CopyFiles@2 - displayName: 'Copy ${{ parameters.name }}' + displayName: 'Copy $(renderers)' inputs: - SourceFolder: ${{ parameters.androidPath }}/bin/${{ parameters.buildConfiguration }}/ + SourceFolder: Xamarin.Forms.ControlGallery.Android/bin/${{ parameters.buildConfiguration }}/ Contents: '**/*.apk' - TargetFolder: ${{ parameters.targetFolder }} + TargetFolder: 'Xamarin.Forms.ControlGallery.Android/$(outputfolder)/' CleanTargetFolder: true OverWrite: true - task: CopyFiles@2 - displayName: 'Copy Android apk ${{ parameters.name }} for UITest' + displayName: 'Copy Android apk $(renderers) for UITest' inputs: Contents: | - ${{ parameters.targetFolder }}/$(ApkName) - TargetFolder: ${{ parameters.apkTargetFolder }} + Xamarin.Forms.ControlGallery.Android/$(outputfolder)/$(ApkName) + TargetFolder: '$(build.artifactstagingdirectory)/androidApp' CleanTargetFolder: true - task: PublishBuildArtifacts@1 diff --git a/build/steps/build-osx.yml b/build/steps/build-osx.yml index 93937347375..611e20399a2 100644 --- a/build/steps/build-osx.yml +++ b/build/steps/build-osx.yml @@ -15,7 +15,7 @@ steps: inputs: targetType: 'filePath' filePath: 'build.sh' - arguments: --target provision --buildForVS2017=$(buildForVS2017) + arguments: --target provision --TeamProject="$(System.TeamProject)" --buildForVS2017=$(buildForVS2017) - task: UseDotNet@2 displayName: 'Install .net core $(DOTNET_VERSION)' @@ -29,16 +29,34 @@ steps: condition: ne(variables['NUGET_VERSION'], '') inputs: versionSpec: $(NUGET_VERSION) + + - task: DownloadBuildArtifacts@0 + displayName: 'Download build artifact nuget' + condition: eq(variables['System.TeamProject'], 'DevDiv') + inputs: + artifactName: 'nuget' + downloadPath: '$(Build.ArtifactsDirectory)' + + - task: CopyFiles@2 + displayName: 'Copy Files to: $(System.DefaultWorkingDirectory)' + condition: eq(variables['System.TeamProject'], 'DevDiv') + inputs: + SourceFolder: '$(Build.ArtifactsDirectory)/nuget/$(buildConfiguration)' + TargetFolder: '$(System.DefaultWorkingDirectory)/Nuget' - task: NuGetCommand@2 displayName: 'NuGet restore' inputs: - restoreSolution: $(slnPath) + command: restore + restoreSolution: 'Xamarin.Forms.sln' + feedsToUse: config + nugetConfigPath: 'DevopsNuget.config' - 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 + msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/tasks.binlog - task: InstallAppleCertificate@2 displayName: 'Install an Apple certificate' @@ -51,13 +69,26 @@ steps: inputs: provProfileSecureFile: 'Xamarin Forms iOS Provisioning.mobileprovision' - - task: XamariniOS@2 - displayName: 'Build Xamarin.iOS solution $(slnPath)' + - task: MSBuild@1 + displayName: 'Build Control Gallery IPA' + inputs: + solution: 'Xamarin.Forms.ControlGallery.iOS/Xamarin.Forms.ControlGallery.iOS.csproj' + configuration: $(buildConfiguration) + msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/ios-cg.binlog /p:BuildIpa=true + + - task: MSBuild@1 + displayName: 'Build iOS Tests' inputs: - solutionFile: $(slnPath) + solution: 'Xamarin.Forms.Core.iOS.UITests/Xamarin.Forms.Core.iOS.UITests.csproj' configuration: $(buildConfiguration) - args: /bl:$(Build.ArtifactStagingDirectory)/ios-2017_$(buildForVS2017).binlog + msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/ios-uitests.binlog + - task: MSBuild@1 + displayName: 'Build Android Tests' + inputs: + solution: 'Xamarin.Forms.Core.Android.UITests/Xamarin.Forms.Core.Android.UITests.csproj' + configuration: $(buildConfiguration) + msbuildArguments: /bl:$(Build.ArtifactStagingDirectory)/android-uitests.binlog - task: CopyFiles@2 displayName: 'Copy test-cloud.exe' @@ -108,4 +139,4 @@ steps: condition: always() inputs: PathtoPublish: '$(build.artifactstagingdirectory)' - ArtifactName: OSXArtifacts \ No newline at end of file + ArtifactName: OSXArtifacts diff --git a/build/steps/build-windows.yml b/build/steps/build-windows.yml index d9abcf13b69..28c7e8f20d3 100644 --- a/build/steps/build-windows.yml +++ b/build/steps/build-windows.yml @@ -64,6 +64,8 @@ jobs: displayName: 'NuGet restore ${{ parameters.slnPath }}' inputs: restoreSolution: ${{ parameters.slnPath }} + feedsToUse: config + nugetConfigPath: 'DevopsNuget.config' - script: build.cmd -Target BuildForNuget -ScriptArgs '-configuration="$(BuildConfiguration)"','-Build_ArtifactStagingDirectory="$(Build.ArtifactStagingDirectory)"' name: winbuild