Create and use CI specific group of GMD devices

This should reduce the total CI time of `AndroidCIWithGmd` workflow.
Using the matrix strategy at the GitHub Actions level forces us to run the tests sequentially and download/rebuild everything from scratch at each iteration.
pull/702/head
Simon Marquis 2 years ago
parent ef27c050b6
commit 4550743fac

@ -10,9 +10,6 @@ jobs:
android-ci: android-ci:
runs-on: macos-12 runs-on: macos-12
strategy:
matrix:
device-config: [ "pixel4api30aospatd", "pixelcapi30aospatd" ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
@ -30,7 +27,7 @@ jobs:
- name: Run instrumented tests with GMD - name: Run instrumented tests with GMD
run: ./gradlew cleanManagedDevices --unused-only && run: ./gradlew cleanManagedDevices --unused-only &&
./gradlew ${{ matrix.device-config }}DemoDebugAndroidTest -Dorg.gradle.workers.max=1 ./gradlew ciDemoDebugAndroidTest -Dorg.gradle.workers.max=1
-Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true
- name: Upload test reports - name: Upload test reports

@ -18,7 +18,7 @@ package com.google.samples.apps.nowinandroid
import com.android.build.api.dsl.CommonExtension import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.ManagedVirtualDevice import com.android.build.api.dsl.ManagedVirtualDevice
import org.gradle.api.Project import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.invoke import org.gradle.kotlin.dsl.invoke
/** /**
@ -27,16 +27,17 @@ import org.gradle.kotlin.dsl.invoke
internal fun configureGradleManagedDevices( internal fun configureGradleManagedDevices(
commonExtension: CommonExtension<*, *, *, *>, commonExtension: CommonExtension<*, *, *, *>,
) { ) {
val deviceConfigs = listOf( val pixel4 = DeviceConfig("Pixel 4", 30, "aosp-atd")
DeviceConfig("Pixel 4", 30, "aosp-atd"), val pixel6 = DeviceConfig("Pixel 6", 31, "aosp")
DeviceConfig("Pixel 6", 31, "aosp"), val pixelC = DeviceConfig("Pixel C", 30, "aosp-atd")
DeviceConfig("Pixel C", 30, "aosp-atd"),
) val allDevices = listOf(pixel4, pixel6, pixelC)
val ciDevices = listOf(pixel4, pixelC)
commonExtension.testOptions { commonExtension.testOptions {
managedDevices { managedDevices {
devices { devices {
deviceConfigs.forEach { deviceConfig -> allDevices.forEach { deviceConfig ->
maybeCreate(deviceConfig.taskName, ManagedVirtualDevice::class.java).apply { maybeCreate(deviceConfig.taskName, ManagedVirtualDevice::class.java).apply {
device = deviceConfig.device device = deviceConfig.device
apiLevel = deviceConfig.apiLevel apiLevel = deviceConfig.apiLevel
@ -44,6 +45,13 @@ internal fun configureGradleManagedDevices(
} }
} }
} }
groups {
maybeCreate("ci").apply {
ciDevices.forEach { deviceConfig ->
targetDevices.add(devices[deviceConfig.taskName])
}
}
}
} }
} }
} }

Loading…
Cancel
Save