Skip to content

Commit af31b30

Browse files
committed
[ci] Move Linux tests to separate stage
1 parent 4373210 commit af31b30

File tree

4 files changed

+101
-77
lines changed

4 files changed

+101
-77
lines changed

build-tools/automation/azure-pipelines.yaml

Lines changed: 91 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -57,56 +57,6 @@ variables:
5757

5858
# Stage and Job "display names" are shortened because they are combined to form the name of the corresponding GitHub check.
5959
stages:
60-
- stage: code_analysis
61-
displayName: Code Analysis
62-
jobs:
63-
# Check - "Xamarin.Android (Code Analysis Security and Compliance)"
64-
- job: run_static_analysis
65-
displayName: Security and Compliance
66-
pool: $(HostedWinVS2019)
67-
timeoutInMinutes: 60
68-
cancelTimeoutInMinutes: 5
69-
steps:
70-
- checkout: self
71-
submodules: recursive
72-
73-
- template: security\credscan\v2.yml@yaml
74-
parameters:
75-
suppressionsFile: $(System.DefaultWorkingDirectory)\build-tools\automation\CredScanSuppressions.json
76-
77-
- template: security\policheck\v1.yml@yaml
78-
parameters:
79-
exclusionFile: $(System.DefaultWorkingDirectory)\build-tools\automation\PoliCheckExclusions.xml
80-
pE: 1|2|3|4
81-
rulesDBPath: $(System.DefaultWorkingDirectory)\build-tools\automation\policheck-rules-db.mdb
82-
83-
- task: securedevelopmentteam.vss-secure-development-tools.build-task-antimalware.AntiMalware@3
84-
displayName: Run AntiMalware (Defender) Scan
85-
inputs:
86-
FileDirPath: $(System.DefaultWorkingDirectory)
87-
EnableServices: true
88-
condition: succeededOrFailed()
89-
90-
- task: securedevelopmentteam.vss-secure-development-tools.build-task-report.SdtReport@1
91-
displayName: Create Security Analysis Report
92-
inputs:
93-
CredScan: true
94-
PoliCheck: true
95-
condition: succeededOrFailed()
96-
97-
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
98-
displayName: Publish Security Analysis Logs
99-
inputs:
100-
ArtifactName: CodeAnalysisLogs
101-
condition: succeededOrFailed()
102-
103-
- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
104-
displayName: Fail Job if Security Issues are Detected
105-
inputs:
106-
CredScan: true
107-
PoliCheck: true
108-
condition: succeededOrFailed()
109-
11060
- stage: mac_build
11161
displayName: Mac
11262
dependsOn: []
@@ -391,15 +341,15 @@ stages:
391341

392342
- template: yaml-templates\fail-on-issue.yaml
393343

394-
# Check - "Xamarin.Android (Linux Build and Smoke Test)"
395-
- stage: linux_build_test
344+
# Check - "Xamarin.Android (Linux Build)"
345+
- stage: linux_build
396346
displayName: Linux
397347
dependsOn: []
398348
jobs:
399-
- job: linux_build_test
400-
displayName: Build and Smoke Test
349+
- job: linux_build_create_sdk_pack
350+
displayName: Build
401351
pool: android-devdiv-ubuntu-vmss
402-
timeoutInMinutes: 240
352+
timeoutInMinutes: 180
403353
cancelTimeoutInMinutes: 2
404354
workspace:
405355
clean: all
@@ -437,13 +387,9 @@ stages:
437387
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
438388
displayName: make jenkins
439389

440-
- task: DotNetCoreCLI@2
441-
displayName: extract workload packs
442-
inputs:
443-
projects: $(System.DefaultWorkingDirectory)/xamarin-android/build-tools/create-packs/Microsoft.Android.Sdk.proj
444-
arguments: >-
445-
-t:CreateAllPacks,ExtractWorkloadPacks -c $(XA.Build.Configuration)
446-
-bl:$(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/create-all-packs.binlog
390+
- script: make create-nupkgs CONFIGURATION=$(XA.Build.Configuration)
391+
workingDirectory: $(System.DefaultWorkingDirectory)/xamarin-android
392+
displayName: make create-nupkgs
447393

448394
- script: >
449395
mkdir -p $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux &&
@@ -458,29 +404,18 @@ stages:
458404
artifactName: nuget-linux-unsigned
459405
targetPath: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/nuget-linux
460406

461-
- template: yaml-templates/install-apkdiff.yaml
462-
463-
- template: yaml-templates/run-nunit-tests.yaml
464-
parameters:
465-
useDotNet: true
466-
testRunTitle: Xamarin.Android.Build.Tests - Linux .NET 6 Smoke Tests
467-
testAssembly: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Test$(XA.Build.Configuration)/net6.0/Xamarin.Android.Build.Tests.dll
468-
dotNetTestExtraArgs: --filter CheckSignApk # TODO: Add more tests (e.g. "TestCategory = SmokeTests $(DotNetNUnitCategories)" )
469-
testResultsFile: TestResult-NET6SmokeMSBuildTests-Linux-$(XA.Build.Configuration).xml
470-
471407
- template: yaml-templates/upload-results.yaml
472408
parameters:
473409
xaSourcePath: $(System.DefaultWorkingDirectory)/xamarin-android
474410
artifactName: Build Results - Linux
475411
includeBuildResults: true
476412

477-
- template: yaml-templates\fail-on-issue.yaml
413+
- template: yaml-templates/fail-on-issue.yaml
478414

479415
- stage: smoke_tests
480416
displayName: Smoke Tests
481417
dependsOn: mac_build
482418
jobs:
483-
484419
# Check - "Xamarin.Android (Smoke Tests APKs Legacy - macOS)"
485420
- job: mac_apk_tests_legacy
486421
displayName: APKs Legacy - macOS
@@ -916,6 +851,37 @@ stages:
916851

917852
- template: yaml-templates/fail-on-issue.yaml
918853

854+
- stage: linux_tests
855+
displayName: Linux Tests
856+
dependsOn:
857+
- mac_build
858+
- linux_build
859+
jobs:
860+
# Check - "Xamarin.Android (Linux Tests MSBuild Smoke)"
861+
- job: linux_tests_smoke
862+
displayName: MSBuild Smoke
863+
pool: android-devdiv-ubuntu-vmss
864+
timeoutInMinutes: 180
865+
workspace:
866+
clean: all
867+
steps:
868+
- task: DownloadPipelineArtifact@2
869+
inputs:
870+
artifactName: nuget-linux-unsigned
871+
downloadPath: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Build$(XA.Build.Configuration)/$(NuGetArtifactName)
872+
873+
- template: yaml-templates/setup-test-environment.yaml
874+
875+
- template: yaml-templates/run-nunit-tests.yaml
876+
parameters:
877+
useDotNet: true
878+
testRunTitle: Xamarin.Android.Build.Tests - Linux .NET 6 Smoke Tests
879+
testAssembly: $(System.DefaultWorkingDirectory)/xamarin-android/bin/Test$(XA.Build.Configuration)/net6.0/Xamarin.Android.Build.Tests.dll
880+
dotNetTestExtraArgs: --filter "TestCategory = SmokeTests $(DotNetNUnitCategories)"
881+
testResultsFile: TestResult-NET6SmokeMSBuildTests-Linux-$(XA.Build.Configuration).xml
882+
883+
- template: yaml-templates/fail-on-issue.yaml
884+
919885
- stage: msbuild_legacy
920886
displayName: Legacy Tests
921887
dependsOn: mac_build
@@ -1618,3 +1584,54 @@ stages:
16181584
buildParameters: '{ "REPO": "$(Build.Repository.Name)", "COMMIT": "$(Build.SourceVersion)", "SIGN_TYPE": "Real", "GITHUB_CONTEXT": "$(GitHub.Artifacts.Context)", "BUILD_DEFINITIONNAME": "$(Build.DefinitionName)", "BUILD_ID": "$(Build.BuildId)", "BUILD_NUMBER": "$(Build.BuildNumber)", "BUILD_URI": "$(Build.BuildUri)", "ENABLE_JAR_SIGNING": "true" }'
16191585
authenticationMethod: 'OAuth Token'
16201586
password: $(System.AccessToken) # Equivalent to the 'Allow scripts to access OAuth token option': https://stackoverflow.com/questions/52837980/how-to-allow-scripts-to-access-oauth-token-from-yaml-builds
1587+
1588+
- stage: code_analysis
1589+
displayName: Code Analysis
1590+
dependsOn: []
1591+
jobs:
1592+
# Check - "Xamarin.Android (Code Analysis Security and Compliance)"
1593+
- job: run_static_analysis
1594+
displayName: Security and Compliance
1595+
pool: $(HostedWinVS2019)
1596+
timeoutInMinutes: 60
1597+
cancelTimeoutInMinutes: 5
1598+
steps:
1599+
- checkout: self
1600+
submodules: recursive
1601+
1602+
- template: security\credscan\v2.yml@yaml
1603+
parameters:
1604+
suppressionsFile: $(System.DefaultWorkingDirectory)\build-tools\automation\CredScanSuppressions.json
1605+
1606+
- template: security\policheck\v1.yml@yaml
1607+
parameters:
1608+
exclusionFile: $(System.DefaultWorkingDirectory)\build-tools\automation\PoliCheckExclusions.xml
1609+
pE: 1|2|3|4
1610+
rulesDBPath: $(System.DefaultWorkingDirectory)\build-tools\automation\policheck-rules-db.mdb
1611+
1612+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-antimalware.AntiMalware@3
1613+
displayName: Run AntiMalware (Defender) Scan
1614+
inputs:
1615+
FileDirPath: $(System.DefaultWorkingDirectory)
1616+
EnableServices: true
1617+
condition: succeededOrFailed()
1618+
1619+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-report.SdtReport@1
1620+
displayName: Create Security Analysis Report
1621+
inputs:
1622+
CredScan: true
1623+
PoliCheck: true
1624+
condition: succeededOrFailed()
1625+
1626+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
1627+
displayName: Publish Security Analysis Logs
1628+
inputs:
1629+
ArtifactName: CodeAnalysisLogs
1630+
condition: succeededOrFailed()
1631+
1632+
- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
1633+
displayName: Fail Job if Security Issues are Detected
1634+
inputs:
1635+
CredScan: true
1636+
PoliCheck: true
1637+
condition: succeededOrFailed()

build-tools/automation/yaml-templates/run-installer.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ steps:
2828
}
2929
Write-Host "##vso[task.setvariable variable=XA.Provisionator.Args]$installer"
3030
displayName: find installer and set provisionator variable
31+
condition: and(succeeded(), ne(variables['agent.os'], 'Linux'))
3132

3233
- task: provisionator@2
3334
inputs:
3435
provisionator_uri: $(provisionator-uri)
3536
github_token: $(GitHub.Token)
3637
provisioning_script: $(XA.Provisionator.Args)
3738
provisioning_extra_args: ${{ parameters.provisionExtraArgs }}
39+
condition: and(succeeded(), ne(variables['agent.os'], 'Linux'))

build-tools/automation/yaml-templates/setup-test-environment.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ steps:
2727
displayName: set JI_JAVA_HOME
2828
condition: and(succeeded(), eq(variables['agent.os'], 'Darwin'))
2929

30+
- script: |
31+
echo "##vso[task.setvariable variable=JI_JAVA_HOME]$HOME/android-toolchain/${{ parameters.jdkTestFolder }}"
32+
echo "##vso[task.setvariable variable=DOTNET_TOOL_PATH]$HOME/anroid-toolchain/dotnet/dotnet"
33+
displayName: set JI_JAVA_HOME
34+
condition: and(succeeded(), eq(variables['agent.os'], 'Linux'))
35+
3036
- script: |
3137
echo ##vso[task.setvariable variable=JI_JAVA_HOME]%USERPROFILE%\android-toolchain\${{ parameters.jdkTestFolder }}
3238
echo ##vso[task.setvariable variable=DOTNET_TOOL_PATH]%USERPROFILE%\android-toolchain\dotnet\dotnet.exe
@@ -46,7 +52,7 @@ steps:
4652
parameters:
4753
displayName: run xaprepare-UpdateMono
4854
arguments: --s=UpdateMono --auto-provision=yes --auto-provision-uses-sudo=yes
49-
condition: and(succeeded(), eq(variables['agent.os'], 'Darwin'))
55+
condition: and(succeeded(), ne(variables['agent.os'], 'Windows_NT'))
5056
xaSourcePath: ${{ parameters.xaSourcePath }}
5157

5258
- template: run-xaprepare.yaml

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,7 @@
316316
<Target Name="ILRepacker"
317317
BeforeTargets="CopyFilesToOutputDirectory"
318318
Inputs="$(MSBuildAllProjects);@(IntermediateAssembly);@(InputAssemblies)"
319-
Outputs="$(IntermediateOutputPath)ILRepacker.stamp"
320-
Condition=" '$(HostOS)' != 'Linux' ">
319+
Outputs="$(IntermediateOutputPath)ILRepacker.stamp" >
321320
<ItemGroup>
322321
<_InputAssembliesThatExist Include="@(InputAssemblies)" Condition="Exists('%(Identity)')" />
323322
<_NetstandardPath Include="@(ReferencePath->'%(RootDir)%(Directory)')" Condition="'%(FileName)%(Extension)' == 'netstandard.dll'" />

0 commit comments

Comments
 (0)