name: Magisk Build on: push: branches: [master] paths: - "app/**" - "native/**" - "buildSrc/**" - "build.py" - "gradle.properties" - ".github/workflows/build.yml" pull_request: branches: [master] workflow_dispatch: jobs: build: name: Build Magisk artifacts runs-on: ubuntu-latest env: SCCACHE_DIRECT: false strategy: fail-fast: false steps: - name: Check out uses: actions/checkout@v4 with: submodules: "recursive" fetch-depth: 0 - name: Setup environment uses: ./.github/actions/setup - name: Build release run: ./build.py -vr all - name: Build debug run: ./build.py -v all - name: Stop gradle daemon run: ./gradlew --stop - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: ${{ github.sha }} path: out compression-level: 9 - name: Upload mapping and native debug symbols uses: actions/upload-artifact@v4 with: name: ${{ github.sha }}-symbols path: app/apk/build/outputs compression-level: 9 test-build: name: Test building on ${{ matrix.os }} runs-on: ${{ matrix.os }} env: SCCACHE_DIRECT: false strategy: fail-fast: false matrix: os: [macos-14] steps: - name: Check out uses: actions/checkout@v4 with: submodules: "recursive" fetch-depth: 0 - name: Setup environment uses: ./.github/actions/setup - name: Build debug run: python build.py -v all - name: Stop gradle daemon run: ./gradlew --stop avd-test: name: Test API ${{ matrix.version }} (x86_64) runs-on: ubuntu-latest needs: build strategy: fail-fast: false matrix: version: [23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34] type: [""] include: - version: 35 type: "google_apis" steps: - name: Check out uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download build artifacts uses: actions/download-artifact@v4 with: name: ${{ github.sha }} path: out - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - name: Run AVD test timeout-minutes: 10 env: AVD_TEST_LOG: 1 run: scripts/avd_test.sh ${{ matrix.version }} ${{ matrix.type }} - name: Upload logs on error if: ${{ failure() }} uses: actions/upload-artifact@v4 with: name: "avd-logs-${{ matrix.version }}" path: | kernel.log logcat.log avd-test-32: name: Test API ${{ matrix.version }} (x86) runs-on: ubuntu-latest needs: build strategy: fail-fast: false matrix: version: [23, 24, 25, 26, 27, 28, 29, 30] steps: - name: Check out uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download build artifacts uses: actions/download-artifact@v4 with: name: ${{ github.sha }} path: out - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - name: Run AVD test timeout-minutes: 10 env: FORCE_32_BIT: 1 AVD_TEST_LOG: 1 run: scripts/avd_test.sh ${{ matrix.version }} - name: Upload logs on error if: ${{ failure() }} uses: actions/upload-artifact@v4 with: name: "avd32-logs-${{ matrix.version }}" path: | kernel.log logcat.log cf_test: name: Test ${{ matrix.branch }} (${{ matrix.target }}) runs-on: ubuntu-24.04 needs: build env: CF_HOME: /home/runner/aosp_cf_phone strategy: fail-fast: false matrix: include: - branch: "aosp-main" target: "aosp_cf_x86_64_phone-trunk_staging-userdebug" steps: - name: Check out uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download build artifacts uses: actions/download-artifact@v4 with: name: ${{ github.sha }} path: out - name: Setup Cuttlefish environment run: | scripts/cuttlefish.sh setup scripts/cuttlefish.sh download ${{ matrix.branch }} ${{ matrix.target }} - name: Run Cuttlefish test timeout-minutes: 10 run: su $USER -c 'scripts/cuttlefish.sh test' - name: Upload logs on error if: ${{ failure() }} uses: actions/upload-artifact@v4 with: name: "cvd-logs" path: | /home/runner/aosp_cf_phone/cuttlefish/instances/cvd-1/logs /home/runner/aosp_cf_phone/cuttlefish/instances/cvd-1/cuttlefish_config.json