ci: 看构建日志显示 CPU architecture: x86 #22
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |