From 711b5f84ee6239c7c0db39c9b5a9eee201b017f3 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Wed, 6 Nov 2019 14:05:27 -0600 Subject: [PATCH 1/2] [build] Set up YAML Azure pipeline. --- build-tools/automation/azure-pipelines.yaml | 128 ++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 build-tools/automation/azure-pipelines.yaml diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml new file mode 100644 index 000000000..bd8c8f3dd --- /dev/null +++ b/build-tools/automation/azure-pipelines.yaml @@ -0,0 +1,128 @@ +# Java.Interop Pipelines + +trigger: + - master + - d16-* + +# Global variables +variables: + DotNetCoreVersion: 2.1.701 + HostedMac: Hosted Mac Internal + HostedWinVS2019: Hosted Windows 2019 with VS2019 + +stages: + # Build and test on Windows +- stage: windows_build + displayName: Windows + pool: $(HostedWinVS2019) + jobs: + - job: windows_build + displayName: Build and Test + timeoutInMinutes: 20 + workspace: + clean: all + steps: + - checkout: self + submodules: recursive + + - task: UseDotNet@2 + displayName: Use .NET Core $(DotNetCoreVersion) + inputs: + version: $(DotNetCoreVersion) + + - task: MSBuild@1 + displayName: MSBuild Java.Interop.sln /t:Prepare + inputs: + solution: Java.Interop.sln + configuration: $(Build.Configuration) + msbuildArguments: /t:Prepare + + - task: MSBuild@1 + displayName: MSBuild Java.Interop.sln + inputs: + solution: Java.Interop.sln + configuration: $(Build.Configuration) + + - task: MSBuild@1 + displayName: MSBuild RunNUnitTests.targets + inputs: + solution: build-tools/scripts/RunNUnitTests.targets + configuration: $(Build.Configuration) + msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\LogcatParse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFormat: NUnit + testResultsFiles: TestResult-*.xml + condition: succeededOrFailed() + +# Build and test on Mac +- stage: mac_build + displayName: Mac + dependsOn: [] + jobs: + - job: mac_build + displayName: Build and Test + pool: $(HostedMac) + timeoutInMinutes: 20 + workspace: + clean: all + steps: + - checkout: self + submodules: recursive + + - task: UseDotNet@2 + displayName: Use .NET Core $(DotNetCoreVersion) + inputs: + version: $(DotNetCoreVersion) + + - script: | + dotnet tool install --global boots --version 1.0.0.291 + + boots https://download.mono-project.com/archive/6.4.0/macos-10-universal/MonoFramework-MDK-6.4.0.198.macos10.xamarin.universal.pkg + displayName: Install Mono 6.4 + + - script: make prepare CONFIGURATION=$(Build.Configuration) + displayName: make prepare + + - script: make all CONFIGURATION=$(Build.Configuration) + displayName: make all + + - script: make fxcop + displayName: Run Gendarme + + - script: | + r=0 + make run-all-tests CONFIGURATION=$(Build.Configuration) || r=$? + jar cf xatb.jar -C src/Xamarin.Android.Tools.Bytecode/Tests/obj/*/classes . + zip -r bin.zip bin + exit $r + displayName: Run Tests + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFormat: NUnit + testResultsFiles: TestResult-*.xml + condition: succeededOrFailed() + + - task: CopyFiles@2 + displayName: 'Copy Files to: Artifact Staging Directory' + inputs: + SourceFolder: $(System.DefaultWorkingDirectory) + Contents: | + gendarme.* + xatb.jar + bin.zip + + TargetFolder: $(Build.ArtifactStagingDirectory) + condition: succeededOrFailed() + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: debug' + inputs: + ArtifactName: debug + condition: succeededOrFailed() + From ef47010bb6542c311a69fb2f7dcfd69fcccff2c3 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Thu, 7 Nov 2019 10:28:34 -0600 Subject: [PATCH 2/2] Tweak to eliminate stages. --- build-tools/automation/azure-pipelines.yaml | 200 +++++++++----------- 1 file changed, 94 insertions(+), 106 deletions(-) diff --git a/build-tools/automation/azure-pipelines.yaml b/build-tools/automation/azure-pipelines.yaml index bd8c8f3dd..063292462 100644 --- a/build-tools/automation/azure-pipelines.yaml +++ b/build-tools/automation/azure-pipelines.yaml @@ -10,119 +10,107 @@ variables: HostedMac: Hosted Mac Internal HostedWinVS2019: Hosted Windows 2019 with VS2019 -stages: - # Build and test on Windows -- stage: windows_build - displayName: Windows +jobs: +- job: windows_build + displayName: Windows Build and Test pool: $(HostedWinVS2019) - jobs: - - job: windows_build - displayName: Build and Test - timeoutInMinutes: 20 - workspace: - clean: all - steps: - - checkout: self - submodules: recursive + timeoutInMinutes: 20 + workspace: + clean: all + steps: + - checkout: self + submodules: recursive - - task: UseDotNet@2 - displayName: Use .NET Core $(DotNetCoreVersion) - inputs: - version: $(DotNetCoreVersion) - - - task: MSBuild@1 - displayName: MSBuild Java.Interop.sln /t:Prepare - inputs: - solution: Java.Interop.sln - configuration: $(Build.Configuration) - msbuildArguments: /t:Prepare - - - task: MSBuild@1 - displayName: MSBuild Java.Interop.sln - inputs: - solution: Java.Interop.sln - configuration: $(Build.Configuration) - - - task: MSBuild@1 - displayName: MSBuild RunNUnitTests.targets - inputs: - solution: build-tools/scripts/RunNUnitTests.targets - configuration: $(Build.Configuration) - msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\LogcatParse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" - condition: succeededOrFailed() - - - task: PublishTestResults@2 - displayName: Publish Test Results - inputs: - testResultsFormat: NUnit - testResultsFiles: TestResult-*.xml - condition: succeededOrFailed() + - task: UseDotNet@2 + displayName: Use .NET Core $(DotNetCoreVersion) + inputs: + version: $(DotNetCoreVersion) -# Build and test on Mac -- stage: mac_build - displayName: Mac - dependsOn: [] - jobs: - - job: mac_build - displayName: Build and Test - pool: $(HostedMac) - timeoutInMinutes: 20 - workspace: - clean: all - steps: - - checkout: self - submodules: recursive + - task: MSBuild@1 + displayName: MSBuild Java.Interop.sln /t:Prepare + inputs: + solution: Java.Interop.sln + configuration: $(Build.Configuration) + msbuildArguments: /t:Prepare - - task: UseDotNet@2 - displayName: Use .NET Core $(DotNetCoreVersion) - inputs: - version: $(DotNetCoreVersion) - - - script: | - dotnet tool install --global boots --version 1.0.0.291 - - boots https://download.mono-project.com/archive/6.4.0/macos-10-universal/MonoFramework-MDK-6.4.0.198.macos10.xamarin.universal.pkg - displayName: Install Mono 6.4 - - - script: make prepare CONFIGURATION=$(Build.Configuration) - displayName: make prepare - - - script: make all CONFIGURATION=$(Build.Configuration) - displayName: make all + - task: MSBuild@1 + displayName: MSBuild Java.Interop.sln + inputs: + solution: Java.Interop.sln + configuration: $(Build.Configuration) + + - task: MSBuild@1 + displayName: MSBuild RunNUnitTests.targets + inputs: + solution: build-tools/scripts/RunNUnitTests.targets + configuration: $(Build.Configuration) + msbuildArguments: /p:TestAssembly="bin\Test$(Build.Configuration)\generator-Tests.dll;bin\Test$(Build.Configuration)\Java.Interop.Tools.JavaCallableWrappers-Tests.dll;bin\Test$(Build.Configuration)\LogcatParse-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.ApiXmlAdjuster-Tests.dll;bin\Test$(Build.Configuration)\Xamarin.Android.Tools.Bytecode-Tests.dll" + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFormat: NUnit + testResultsFiles: TestResult-*.xml + condition: succeededOrFailed() + +- job: mac_build + displayName: Mac Build and Test + pool: $(HostedMac) + timeoutInMinutes: 20 + workspace: + clean: all + steps: + - checkout: self + submodules: recursive + + - task: UseDotNet@2 + displayName: Use .NET Core $(DotNetCoreVersion) + inputs: + version: $(DotNetCoreVersion) - - script: make fxcop - displayName: Run Gendarme + - script: | + dotnet tool install --global boots --version 1.0.0.291 + boots https://download.mono-project.com/archive/6.4.0/macos-10-universal/MonoFramework-MDK-6.4.0.198.macos10.xamarin.universal.pkg + displayName: Install Mono 6.4 - - script: | - r=0 - make run-all-tests CONFIGURATION=$(Build.Configuration) || r=$? - jar cf xatb.jar -C src/Xamarin.Android.Tools.Bytecode/Tests/obj/*/classes . - zip -r bin.zip bin - exit $r - displayName: Run Tests + - script: make prepare CONFIGURATION=$(Build.Configuration) + displayName: make prepare - - task: PublishTestResults@2 - displayName: Publish Test Results - inputs: - testResultsFormat: NUnit - testResultsFiles: TestResult-*.xml - condition: succeededOrFailed() + - script: make all CONFIGURATION=$(Build.Configuration) + displayName: make all - - task: CopyFiles@2 - displayName: 'Copy Files to: Artifact Staging Directory' - inputs: - SourceFolder: $(System.DefaultWorkingDirectory) - Contents: | - gendarme.* - xatb.jar - bin.zip - - TargetFolder: $(Build.ArtifactStagingDirectory) - condition: succeededOrFailed() + - script: make fxcop + displayName: Run Gendarme - - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: debug' - inputs: - ArtifactName: debug - condition: succeededOrFailed() + - script: | + r=0 + make run-all-tests CONFIGURATION=$(Build.Configuration) || r=$? + jar cf xatb.jar -C src/Xamarin.Android.Tools.Bytecode/Tests/obj/*/classes . + zip -r bin.zip bin + exit $r + displayName: Run Tests + + - task: PublishTestResults@2 + displayName: Publish Test Results + inputs: + testResultsFormat: NUnit + testResultsFiles: TestResult-*.xml + condition: succeededOrFailed() + + - task: CopyFiles@2 + displayName: 'Copy Files to: Artifact Staging Directory' + inputs: + SourceFolder: $(System.DefaultWorkingDirectory) + Contents: | + gendarme.* + xatb.jar + bin.zip + TargetFolder: $(Build.ArtifactStagingDirectory) + condition: succeededOrFailed() + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: debug' + inputs: + ArtifactName: debug + condition: succeededOrFailed()