Skip to content

ci: 看构建日志显示 CPU architecture: x86 #22

ci: 看构建日志显示 CPU architecture: x86

ci: 看构建日志显示 CPU architecture: x86 #22

name: Check & Build & Test
on:
workflow_call:
push:
branches:
- avd_on_linux
jobs:
check-commit-message:
name: 提交日志格式化检查
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: wagoid/commitlint-github-action@v6
with:
configFile: ./.commitlintrc.yml
check-code-format:
name: 代码格式化检查
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: Cache android-studio
id: cache-android-studio
uses: actions/cache@v4
with:
path: android-studio
key: ${{ runner.os }}-android-studio
- name: download android-studio
if: steps.cache-android-studio.outputs.cache-hit != 'true'
run: |
wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2021.1.1.20/android-studio-2021.1.1.20-linux.tar.gz
tar -xvzf android-studio-2021.1.1.20-linux.tar.gz
rm -rf android-studio-2021.1.1.20-linux.tar.gz
- name: use android-studio format all files
run: ./android-studio/bin/format.sh -s .idea/codeStyles/Project.xml -r -m \*.java,\*.kt,\*.xml .
- name: show diff for files not formated
run: |
if ! git diff --quiet; then
git diff --exit-code
fi
build-sdk:
needs: [ check-commit-message, check-code-format ]
name: 构建SDK
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- name: buildSdk
run: ./gradlew buildSdk -S
- name: post-build
uses: ./.github/actions/post-build
build-sample-maven:
needs: [ check-commit-message, check-code-format ]
name: 构建maven依赖SDK的sample
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
cache: 'gradle'
- name: revert gradle wrapper mirror setting for sample host-project
working-directory: projects/sample/maven/host-project
run: echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip' > gradle/wrapper/gradle-wrapper.properties
- name: revert gradle wrapper mirror setting for sample manager-project
working-directory: projects/sample/maven/manager-project
run: echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip' > gradle/wrapper/gradle-wrapper.properties
- name: revert gradle wrapper mirror setting for sample plugin-project
working-directory: projects/sample/maven/plugin-project
run: echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip' > gradle/wrapper/gradle-wrapper.properties
- name: build sample/maven/host-project
working-directory: projects/sample/maven/host-project
run: ./gradlew assemble
- name: build sample/maven/manager-project
working-directory: projects/sample/maven/manager-project
run: ./gradlew assemble
- name: build sample/maven/plugin-project
working-directory: projects/sample/maven/plugin-project
run: ./gradlew assemble
- name: post-build
uses: ./.github/actions/post-build
build-all:
needs: build-sdk
name: 构建所有源码
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- name: buildSdk
run: ./gradlew build
- name: post-build
uses: ./.github/actions/post-build
test-agp-compatibility:
needs: build-sdk
name: AGP兼容性自动化测试
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- name: revert gradle wrapper mirror setting
working-directory: projects/test/gradle-plugin-agp-compat-test
run: echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip' > gradle/wrapper/gradle-wrapper.properties
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- name: JDK17环境下AGP测试
working-directory: projects/test/gradle-plugin-agp-compat-test
run: ./test_JDK17.sh
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
cache: 'gradle'
- name: JDK11环境下AGP测试
working-directory: projects/test/gradle-plugin-agp-compat-test
run: ./test_JDK11.sh
- name: post-build
uses: ./.github/actions/post-build
test-sdk-jvm:
needs: build-all
name: 自动化测试-JVM部分
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- name: jvmTestSdk
run: ./gradlew jvmTestSdk -S
- name: post-build
uses: ./.github/actions/post-build
test-sdk-avd:
needs: build-all
name: 自动化测试-AVD部分
runs-on: ubuntu-latest
strategy:
matrix:
include:
- api-level: 16 #16是最低支持的API
arch: x86
- api-level: 28 #28是项目长期使用的测试API
arch: x86
- api-level: 31 #31是目前最新的稳定API
arch: x86
steps:
- name: checkout
uses: actions/checkout@v4
- name: pre-build
uses: ./.github/actions/pre-build
- name: jvmTestSdk
run: ./gradlew jvmTestSdk -S
- name: Enable KVM
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: Gradle cache
uses: gradle/actions/setup-gradle@v3
- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.api-level }}
- name: create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
script: echo "Generated AVD snapshot for caching."
- name: run AVD tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: ${{ matrix.arch }}
profile: pixel_xl
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./gradlew androidTestSdk
- name: post-build
uses: ./.github/actions/post-build