Skip to content

fix test on windows #2266

fix test on windows

fix test on windows #2266

Workflow file for this run

name: Build
on:
push:
paths-ignore:
- '**/*.md'
pull_request:
paths-ignore:
- '**/*.md'
jobs:
build:
name: "${{ matrix.name }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- windows-2019
- ubuntu-20.04
- macos-12 # x86_64
- macos-14 # aarch64
include:
# matrix properties can be booleans. Check for plain true and false.
- os: windows-2019
name: Windows x86_64
uploadApk: false
arch: x64
anitorrent: true
anitorrent_separate_build: false # windows 单线程构建 anitorrent, 要一起跑节约时间
compose_resource_triple: windows-x64
run_tests: true
- os: ubuntu-20.04
name: Ubuntu x86_64
uploadApk: false
arch: x64
anitorrent: false
anitorrent_separate_build: false
compose_resource_triple: linux-x64
run_tests: false
- os: macos-12
name: macOS x86_64
uploadApk: false
arch: x64
anitorrent: true
anitorrent_separate_build: true # macOS 构建快, 先构建 anitorrent, 再 assemble
compose_resource_triple: macos-x64
run_tests: true
- os: macos-14
name: macOS aarch64
uploadApk: true
arch: aarch64
anitorrent: true
anitorrent_separate_build: true
compose_resource_triple: macos-arm64
run_tests: true
env:
enableLocalPublishingTest: 'false'
gradleArgs: >-
--scan
"-Dorg.gradle.jvmargs=-Xmx4096m"
"-Dfile.encoding=UTF-8"
--no-configuration-cache
"-Pbangumi.oauth.client.android.appId=${{ secrets.BANGUMI_OAUTH_CLIENT_ANDROID_ID }}"
"-Pbangumi.oauth.client.android.secret=${{ secrets.BANGUMI_OAUTH_CLIENT_ANDROID_SECRET }}"
"-Pbangumi.oauth.client.desktop.appId=${{ secrets.BANGUMI_OAUTH_CLIENT_DESKTOP_ID }}"
"-Pbangumi.oauth.client.desktop.secret=${{ secrets.BANGUMI_OAUTH_CLIENT_DESKTOP_SECRET }}"
${{ matrix.anitorrent == true && '"-Dani.enable.anitorrent=true"' || '' }}
${{ matrix.anitorrent == true && '"-DCMAKE_BUILD_TYPE=Release"' || '' }}
${{ startsWith(matrix.os, 'windows') && '"-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"' || '' }}
${{ startsWith(matrix.os, 'windows') && '"-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include"' || '' }}
# envs are strings, so check for 'true' or 'false'
isMac: ${{ startsWith(matrix.os, 'macos') }}
isWindows: ${{ startsWith(matrix.os, 'windows') }}
isUbuntu: ${{ startsWith(matrix.os, 'ubuntu') }}
isUnix: ${{ startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') }}
doSigning: ${{ github.event_name != 'pull_request' && github.repository == 'open-ani/ani' }} # fork 和 PR 不使用签名
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- uses: actions/setup-java@v4
if: ${{ env.isWindows != 'true' }}
with:
distribution: zulu
java-version: 17
architecture: ${{ matrix.arch }}
- uses: actions/setup-java@v4
if: ${{ env.isWindows == 'true' }}
with:
distribution: zulu
java-version: 17
architecture: ${{ matrix.arch }}
- if: ${{ env.isMac == 'true' }}
name: Install Native Dependencies
run: chmod +x ./ci-helper/install-deps-macos.sh && ./ci-helper/install-deps-macos.sh
- if: ${{ env.isWindows == 'true' }}
name: Setup vcpkg cache
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- if: ${{ env.isWindows == 'true' }}
name: Install Native Dependencies
run: ./ci-helper/install-deps-windows.cmd
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
cache-disabled: ${{ env.isWindows == 'true' }} # Windows 上这个缓存会花费 8 分钟, 还不如直接下载
- if: ${{ env.isUnix == 'true' }}
run: chmod -R 777 *
- name: Clean and download dependencies
run: ./gradlew clean ${{ env.gradleArgs }}
- name: Update version name
run: ./gradlew updateDevVersionNameFromGit ${{ env.gradleArgs }}
# 备注: 这个可能已经不需要了, Compose 可能已经修复了这个 bug
- name: Explicitly generate Compose resources
run: ./gradlew generateComposeResClass ${{ env.gradleArgs }}
- if: ${{ env.isMac == 'true' }}
name: Prepare signing key
id: android_signing_key
uses: timheuer/base64-to-file@v1.1
with:
fileName: 'android_signing_key'
fileDir: './'
encodedString: ${{ secrets.SIGNING_RELEASE_STOREFILE }}
continue-on-error: true
- name: Build Anitorrent
if: ${{ matrix.anitorrent && matrix.anitorrent_separate_build }}
run: ./gradlew :torrent:anitorrent:build :torrent:anitorrent:buildAnitorrent ${{ env.gradleArgs }}
- name: Assemble
run: ./gradlew assemble ${{ env.gradleArgs }}
- if: ${{ matrix.uploadApk }}
name: Build Android Debug APK
run: ./gradlew assembleDebug ${{ env.gradleArgs }}
- if: ${{ matrix.uploadApk }}
name: Upload Android Debug APK
uses: actions/upload-artifact@v4
with:
name: ani-android-debug
path: app/android/build/outputs/apk/debug/android-debug.apk
- if: ${{ matrix.uploadApk && env.doSigning == 'true' }}
name: Build Android Release APK
run: ./gradlew assembleRelease ${{ env.gradleArgs }}
env:
"signing_release_storeFileFromRoot": ${{ steps.android_signing_key.outputs.filePath }}
"signing_release_storePassword": ${{ secrets.SIGNING_RELEASE_STOREPASSWORD }}
"signing_release_keyAlias": ${{ secrets.SIGNING_RELEASE_KEYALIAS }}
"signing_release_keyPassword": ${{ secrets.SIGNING_RELEASE_KEYPASSWORD }}
- if: ${{ matrix.uploadApk }}
name: Upload Android Release APK arm64-v8a
uses: actions/upload-artifact@v4
with:
name: ani-android-arm64-v8a-release
path: app/android/build/outputs/apk/release/android-arm64-v8a-release.apk
- if: ${{ matrix.uploadApk }}
name: Upload Android Release APK armeabi-v7a
uses: actions/upload-artifact@v4
with:
name: ani-android-armeabi-v7a-release
path: app/android/build/outputs/apk/release/android-armeabi-v7a-release.apk
- if: ${{ matrix.uploadApk }}
name: Upload Android Release APK x86_64
uses: actions/upload-artifact@v4
with:
name: ani-android-x86_64-release
path: app/android/build/outputs/apk/release/android-x86_64-release.apk
- if: ${{ matrix.uploadApk }}
name: Upload Android Release APK universal
uses: actions/upload-artifact@v4
with:
name: ani-android-universal-release
path: app/android/build/outputs/apk/release/android-universal-release.apk
- name: Check
if: ${{ matrix.run_tests }}
run: ./gradlew check ${{ env.gradleArgs }}
- name: Package Desktop
run: ./gradlew createReleaseDistributable ${{ env.gradleArgs }}
- if: ${{ matrix.anitorrent }}
name: Upload Anitorrent CMakeCache.txt
uses: actions/upload-artifact@v4
with:
name: anitorrent-cmake-cache-${{ matrix.os }}-${{ matrix.arch }}
path: torrent/anitorrent/build-ci/CMakeCache.txt
- if: ${{ matrix.anitorrent }}
name: Upload Anitorrent ${{ matrix.compose_resource_triple }}
uses: actions/upload-artifact@v4
with:
name: anitorrent-${{ matrix.compose_resource_triple }}
path: app/desktop/appResources/${{ matrix.compose_resource_triple }}/anitorrent
- if: ${{ env.isMac == 'true' }}
name: Upload macOS packages
uses: actions/upload-artifact@v4
with:
name: ani-macos-dmg-${{ matrix.arch }}
path: app/desktop/build/compose/binaries/main-release/dmg
- if: ${{ env.isWindows == 'true' }}
name: Upload Windows packages
uses: actions/upload-artifact@v4
with:
name: ani-windows-portable
path: app/desktop/build/compose/binaries/main-release/app