跳过oped #1908
Workflow file for this run
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: 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 | |
- os: ubuntu-20.04 | |
name: Ubuntu x86_64 | |
uploadApk: false | |
arch: x64 | |
anitorrent: false | |
anitorrent_separate_build: false | |
compose_resource_triple: linux-x64 | |
- 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 | |
- os: macos-14 | |
name: macOS aarch64 | |
uploadApk: true | |
arch: aarch64 | |
anitorrent: true | |
anitorrent_separate_build: true | |
compose_resource_triple: macos-arm64 | |
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 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ani-android-release | |
path: app/android/build/outputs/apk/release/android-release.apk | |
- name: Check | |
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 |