{ "output": "# GMD smoke tests on CI.\n#\n# GitHub-hosted `ubuntu-latest` runners expose `/dev/kvm` for CPU acceleration\n# (the \"Enable KVM\" step installs a udev rule so the runner user can access\n# it), but they have no GPU/Vulkan driver — so the GPU mode is forced to\n# `swiftshader_indirect`. Note: swiftshader is documented to crash on Linux\n# kernel >= 6.17 (see TESTING_SETUP.md). GitHub-hosted runners are currently\n# on kernel ~6.8, but if that changes this workflow will need a different\n# harness.\n#\n# To keep Free-tier Actions minutes in budget, this workflow is path-filtered\n# on PRs — it only runs when files that could affect the smoke surface change.\nname: Smoke\npermissions:\n contents: read\n\non:\n push:\n branches: [ \"master\" ]\n pull_request:\n branches: [ \"master\" ]\n paths:\n - 'app/src/androidTest/**'\n - 'app/src/main/**/ui/**'\n - 'app/build.gradle.kts'\n - 'gradle/libs.versions.toml'\n - 'gradle.properties'\n - '.github/workflows/smoke.yml'\n workflow_dispatch:\n\nconcurrency:\n group: smoke-${{ github.ref }}\n cancel-in-progress: true\n\njobs:\n smoke:\n name: GMD Smoke Tests\n runs-on: ubuntu-latest\n timeout-minutes: 45\n steps:\n - name: Checkout code\n uses: actions/checkout@v4\n\n - name: Set up JDK 17\n uses: actions/setup-java@v4\n with:\n java-version: '17'\n distribution: 'temurin'\n cache: gradle\n\n - name: Grant execute permission for gradlew\n run: chmod +x gradlew\n\n - name: Enable KVM\n run: |\n echo 'KERNEL==\"kvm\", GROUP=\"kvm\", MODE=\"0666\", OPTIONS+=\"static_node=kvm\"' \\\n | sudo tee /etc/udev/rules.d/99-kvm4all.rules\n sudo udevadm control --reload-rules\n sudo udevadm trigger --name-match=kvm\n\n - name: Run GMD Smoke Tests\n run: ./gradlew pixel2api33Check -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect\n\n - name: Upload Managed Device Reports\n if: failure()\n uses: actions/upload-artifact@v4\n with:\n name: gmd-test-reports\n path: |\n app/build/reports/androidTests/managedDevice/\n app/build/outputs/androidTest-results/managedDevice/\n if-no-files-found: warn\n retention-days: 7\n" }