Skip to content

Commit

Permalink
[ci] Fix nightly test environment provisioning (#8113)
Browse files Browse the repository at this point in the history
Commit 475b912 improved Android SDK dependency provisioning steps by
combining the install of emulator and non emulator related dependencies.
These changes also moved emulator component provisioning to a step that
includes preview .NET SDK provisioning.  In the nightly build this step
was running _after_ we installed our workload packages, and our workload
install would be removed as part of SDK re-provisioning.  This caused
~all of our nightly tests to fail with:

    /Users/runner/work/1/s/xamarin-android/bin/Release/dotnet/sdk/8.0.100-preview.6.23276.3/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1147: To build this project, the following workloads must be installed: android

or

    System.IO.DirectoryNotFoundException : Unable to locate a Microsoft.Android.Sdk in either '/Users/runner/work/1/s/xamarin-android/bin/Release/dotnet/packs' or '/Users/runner/work/1/s/xamarin-android/bin/Release/lib/packs'.

Fix this by updating the nightly build to bring in the handful of recent
improvements that were made to our to emulator test jobs.  Emulator
component provisioning will now happen _before_ .NET SDK and workload
installation.

The localization test job template has also been removed as it is no
longer in use.
  • Loading branch information
pjcollins committed Jun 7, 2023
1 parent 093eaac commit 1cfee36
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 100 deletions.
30 changes: 10 additions & 20 deletions build-tools/automation/azure-pipelines-nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,10 @@ stages:
steps:
- template: yaml-templates/setup-test-environment.yaml
parameters:
configuration: $(XA.Build.Configuration)

- template: yaml-templates/run-xaprepare.yaml
parameters:
displayName: install emulator
arguments: --s=EmulatorTestDependencies
installLegacyDotNet: false
restoreNUnitConsole: false
updateMono: false
xaprepareScenario: EmulatorTestDependencies

- template: yaml-templates/run-dotnet-preview.yaml
parameters:
Expand All @@ -127,12 +125,12 @@ stages:
- script: echo "##vso[task.setvariable variable=Java8SdkDirectory]$JAVA_HOME_8_X64"
displayName: set Java8SdkDirectory

- task: MSBuild@1
displayName: install and launch emulator
inputs:
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: /t:InstallAvdImage;AcquireAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-$(avdApiLevel).binlog
- template: yaml-templates/start-stop-emulator.yaml
parameters:
specificImage: true
avdApiLevel: $(avdApiLevel)
avdAbi: $(avdAbi)
avdType: $(avdType)

- template: yaml-templates/apk-instrumentation.yaml
parameters:
Expand All @@ -144,14 +142,6 @@ stages:
artifactSource: bin/Test$(XA.Build.Configuration)/$(DotNetTargetFramework)-android/Mono.Android.NET_Tests-Signed.aab
artifactFolder: Mono.Android-$(XA.Build.Configuration)-$(avdApiLevel)

- task: MSBuild@1
displayName: shut down emulator
inputs:
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: /t:AcquireAndroidTarget,ReleaseAndroidTarget /p:TestAvdApiLevel=$(avdApiLevel) /p:TestAvdAbi=$(avdAbi) /p:TestAvdType=$(avdType) /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
condition: always()

- template: yaml-templates/upload-results.yaml
parameters:
configuration: $(XA.Build.Configuration)
Expand Down
27 changes: 7 additions & 20 deletions build-tools/automation/yaml-templates/run-emulator-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,36 +16,23 @@ jobs:
clean: all
steps:
- template: setup-test-environment.yaml

- template: run-xaprepare.yaml
parameters:
arguments: --s=EmulatorTestDependencies
installLegacyDotNet: false
restoreNUnitConsole: false
updateMono: false
xaprepareScenario: EmulatorTestDependencies

- task: DownloadPipelineArtifact@2
inputs:
artifactName: $(TestAssembliesArtifactName)
downloadPath: $(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)

- task: MSBuild@1
displayName: start emulator
inputs:
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: >-
/t:AcquireAndroidTarget ${{ parameters.emulatorMSBuildArgs }} /bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/start-emulator.binlog
- template: start-stop-emulator.yaml
parameters:
emulatorMSBuildArgs: ${{ parameters.emulatorMSBuildArgs }}

- ${{ parameters.testSteps }}

- task: MSBuild@1
displayName: shut down emulator
inputs:
solution: tests/Mono.Android-Tests/Mono.Android-Tests.csproj
configuration: $(XA.Build.Configuration)
msbuildArguments: >-
/t:AcquireAndroidTarget,ReleaseAndroidTarget
/bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
condition: always()

- template: upload-results.yaml
parameters:
artifactName: Test Results - ${{ parameters.jobName }} With Emulator - macOS
Expand Down
56 changes: 0 additions & 56 deletions build-tools/automation/yaml-templates/run-localization-tests.yaml

This file was deleted.

31 changes: 27 additions & 4 deletions build-tools/automation/yaml-templates/start-stop-emulator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ parameters:
avdApiLevel: # Device API level, like '30', required if 'specificImage' is 'true'
avdAbi: # Device ABI, like 'x86', required if 'specificImage' is 'true'
avdType: # Device AVD, like 'android-wear', required if 'specificImage' is 'true'
emulatorMSBuildArgs: # Extra args to pass to the emulator configuration like '-p:TestAvdExtraBootArgs=-writable-system', optional
launchTimeoutMin: 20 # Minutes to wait for the emulator to start
xaSourcePath: $(System.DefaultWorkingDirectory) # working directory

Expand All @@ -16,9 +17,21 @@ steps:
inputs:
projects: ${{ parameters.xaSourcePath }}/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Emulator.csproj
${{ if eq(parameters.specificImage, true) }}:
arguments: -c $(XA.Build.Configuration) -t:"InstallAvdImage;AcquireAndroidTarget" -p:TestDeviceName=${{ parameters.deviceName }} -p:TestAvdApiLevel=${{ parameters.avdApiLevel }} -p:TestAvdAbi=${{ parameters.avdAbi }} -p:TestAvdType=${{ parameters.avdType }} -p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }} -bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-${{ parameters.avdApiLevel }}.binlog
arguments: >-
-c $(XA.Build.Configuration) -t:"InstallAvdImage;AcquireAndroidTarget"
-p:TestDeviceName=${{ parameters.deviceName }}
-p:TestAvdApiLevel=${{ parameters.avdApiLevel }}
-p:TestAvdAbi=${{ parameters.avdAbi }}
-p:TestAvdType=${{ parameters.avdType }}
${{ parameters.emulatorMSBuildArgs }}
-p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }}
-bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/install-emulator-${{ parameters.avdApiLevel }}.binlog
${{ else }}:
arguments: -c $(XA.Build.Configuration) -t:AcquireAndroidTarget -p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }} -bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/start-emulator.binlog
arguments: >-
-c $(XA.Build.Configuration) -t:AcquireAndroidTarget
${{ parameters.emulatorMSBuildArgs }}
-p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }}
-bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/start-emulator.binlog
- ${{ if eq(parameters.command, 'stop') }}:
- task: DotNetCoreCLI@2
Expand All @@ -28,6 +41,16 @@ steps:
inputs:
projects: ${{ parameters.xaSourcePath }}/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Emulator.csproj
${{ if eq(parameters.specificImage, true) }}:
arguments: -c $(XA.Build.Configuration) -t:"AcquireAndroidTarget,ReleaseAndroidTarget" -p:TestDeviceName=${{ parameters.deviceName }} -p:TestAvdApiLevel=${{ parameters.avdApiLevel }} -p:TestAvdAbi=${{ parameters.avdAbi }} -p:TestAvdType=${{ parameters.avdType }} -p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }} -bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
arguments: >-
-c $(XA.Build.Configuration) -t:"AcquireAndroidTarget,ReleaseAndroidTarget"
-p:TestDeviceName=${{ parameters.deviceName }}
-p:TestAvdApiLevel=${{ parameters.avdApiLevel }}
-p:TestAvdAbi=${{ parameters.avdAbi }}
-p:TestAvdType=${{ parameters.avdType }}
-p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }}
-bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
${{ else }}:
arguments: -c $(XA.Build.Configuration) -t:"AcquireAndroidTarget,ReleaseAndroidTarget" -p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }} -bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog
arguments: >-
-c $(XA.Build.Configuration) -t:"AcquireAndroidTarget,ReleaseAndroidTarget"
-p:AvdLaunchTimeoutMinutes=${{ parameters.launchTimeoutMin }}
-bl:$(System.DefaultWorkingDirectory)/bin/Test$(XA.Build.Configuration)/shutdown-emulator.binlog

0 comments on commit 1cfee36

Please sign in to comment.