分离 torrent 连接管理逻辑, helps #1606 #4777
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
# This file was generated using Kotlin DSL (.github/workflows/src.main.kts). | |
# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file. | |
# Generated with https://github.com/typesafegithub/github-workflows-kt | |
name: 'Build' | |
on: | |
push: | |
paths-ignore: | |
- '**/*.md' | |
pull_request: | |
paths-ignore: | |
- '**/*.md' | |
jobs: | |
consistency-check: | |
name: 'Workflow YAML Consistency Check' | |
runs-on: 'ubuntu-latest' | |
permissions: {} | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
run: 'pip3 install PyYAML' | |
- id: 'step-2' | |
run: 'cp ".github/workflows/build.yml" ".github/workflows/build.yml-check.yml" ' | |
- id: 'step-3' | |
run: '.github/workflows/src.main.kts' | |
- id: 'step-4' | |
run: 'python .github/workflows/check_yaml_equivalence.py .github/workflows/build.yml .github/workflows/build.yml-check.yml' | |
build_self-hosted-windows-10: | |
name: 'Build (Windows 10 x86_64 (Self-Hosted))' | |
runs-on: | |
- 'self-hosted' | |
- 'Windows' | |
- 'X64' | |
permissions: | |
actions: 'write' | |
if: '${{ github.repository == ''open-ani/animeko'' }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
with: | |
submodules: 'recursive' | |
- id: 'step-1' | |
continue-on-error: true | |
run: 'rm local.properties' | |
- id: 'step-2' | |
name: 'Get JBR (Windows)' | |
env: | |
RUNNER_TOOL_CACHE: '${{ runner.tool_cache }}' | |
JBR_URL: 'https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-windows-x64-b750.29.tar.gz' | |
JBR_CHECKSUM_URL: 'https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-windows-x64-b750.29.tar.gz.checksum' | |
shell: 'cmd' | |
run: 'python .github/workflows/download_jbr.py' | |
- id: 'step-3' | |
name: 'Setup JBR 21 for Windows' | |
uses: 'gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d' | |
with: | |
java-version: '21' | |
distribution: 'jdkfile' | |
jdkFile: '${{ steps.step-2.outputs.jbrLocation }}' | |
env: | |
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
- id: 'step-4' | |
name: 'Dump Local Properties' | |
run: 'echo "jvm.toolchain.version=21" >> local.properties' | |
- id: 'step-5' | |
name: 'Setup Gradle' | |
uses: 'gradle/actions/setup-gradle@v3' | |
with: | |
cache-disabled: 'true' | |
- id: 'step-6' | |
name: 'Clean and download dependencies' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '3' | |
command: './gradlew "--stacktrace" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-7' | |
name: 'Update dev version name' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew updateDevVersionNameFromGit "--no-configuration-cache" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-8' | |
name: 'Compile Kotlin' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileKotlin compileCommonMainKotlinMetadata compileJvmMainKotlinMetadata compileKotlinDesktop compileKotlinMetadata "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-9' | |
name: 'Compile Kotlin Android' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileDebugKotlinAndroid compileReleaseKotlinAndroid "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-10' | |
name: 'Check' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '2' | |
command: './gradlew check "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
build_github-windows-2019: | |
name: 'Build (Windows Server 2019 x86_64)' | |
runs-on: | |
- 'windows-2019' | |
permissions: | |
actions: 'write' | |
outputs: | |
windowsX64PortableSuccess: '${{ steps.step-13.outcome == ''success'' }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
with: | |
submodules: 'recursive' | |
- id: 'step-1' | |
continue-on-error: true | |
run: 'rm local.properties' | |
- id: 'step-2' | |
name: 'Get JBR (Windows)' | |
env: | |
RUNNER_TOOL_CACHE: '${{ runner.tool_cache }}' | |
JBR_URL: 'https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-windows-x64-b750.29.tar.gz' | |
JBR_CHECKSUM_URL: 'https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-windows-x64-b750.29.tar.gz.checksum' | |
shell: 'cmd' | |
run: 'python .github/workflows/download_jbr.py' | |
- id: 'step-3' | |
name: 'Setup JBR 21 for Windows' | |
uses: 'gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d' | |
with: | |
java-version: '21' | |
distribution: 'jdkfile' | |
jdkFile: '${{ steps.step-2.outputs.jbrLocation }}' | |
env: | |
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
- id: 'step-4' | |
name: 'Dump Local Properties' | |
run: 'echo "jvm.toolchain.version=21" >> local.properties' | |
- id: 'step-5' | |
name: 'Setup Gradle' | |
uses: 'gradle/actions/setup-gradle@v3' | |
with: | |
cache-disabled: 'true' | |
- id: 'step-6' | |
name: 'Clean and download dependencies' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '3' | |
command: './gradlew "--stacktrace" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-7' | |
name: 'Update dev version name' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew updateDevVersionNameFromGit "--no-configuration-cache" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-8' | |
name: 'Compile Kotlin' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileKotlin compileCommonMainKotlinMetadata compileJvmMainKotlinMetadata compileKotlinDesktop compileKotlinMetadata "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-9' | |
name: 'Compile Kotlin Android' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileDebugKotlinAndroid compileReleaseKotlinAndroid "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-10' | |
name: 'Check' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '2' | |
command: './gradlew check "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-11' | |
name: 'Package Desktop' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew createReleaseDistributable "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DBoost_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include" "-Dorg.gradle.jvmargs=-Xmx4g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=x86_64"' | |
- id: 'step-12' | |
name: 'Upload compose logs' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'compose-logs-github-windows-2019' | |
path: 'app/desktop/build/compose/logs' | |
if: '${{ always() }}' | |
- id: 'step-13' | |
name: 'Upload Windows packages' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-windows-portable' | |
path: 'app/desktop/build/compose/binaries/main-release/app' | |
if-no-files-found: 'error' | |
overwrite: 'true' | |
build_github-macos-13: | |
name: 'Build (macOS 13 x86_64 (GitHub))' | |
runs-on: | |
- 'macos-13' | |
permissions: | |
actions: 'write' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
with: | |
submodules: 'recursive' | |
- id: 'step-1' | |
name: 'Free space for macOS' | |
continue-on-error: true | |
run: 'chmod +x ./ci-helper/free-space-macos.sh && ./ci-helper/free-space-macos.sh' | |
- id: 'step-2' | |
continue-on-error: true | |
run: 'rm local.properties' | |
- id: 'step-3' | |
name: 'Resolve JBR location' | |
shell: 'bash' | |
run: |- | |
# Expand jbrLocationExpr | |
jbr_location_expr='${{ runner.tool_cache }}/jbrsdk_jcef-21.0.5-osx-x64-b631.8.tar.gz' | |
echo "jbrLocation=$jbr_location_expr" >> $GITHUB_OUTPUT | |
- id: 'step-4' | |
name: 'Get JBR 21 for macOS AArch64' | |
env: | |
jbrLocation: '${{ steps.step-3.outputs.jbrLocation }}' | |
shell: 'bash' | |
run: |- | |
jbr_location="$jbrLocation" | |
checksum_url="https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-osx-x64-b631.8.tar.gz.checksum" | |
checksum_file="checksum.tmp" | |
wget -q -O $checksum_file $checksum_url | |
expected_checksum=$(awk '{print $1}' $checksum_file) | |
file_checksum="" | |
if [ -f "$jbr_location" ]; then | |
file_checksum=$(shasum -a 512 "$jbr_location" | awk '{print $1}') | |
fi | |
if [ "$file_checksum" != "$expected_checksum" ]; then | |
wget -q --tries=3 https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-osx-x64-b631.8.tar.gz -O "$jbr_location" | |
file_checksum=$(shasum -a 512 "$jbr_location" | awk '{print $1}') | |
fi | |
if [ "$file_checksum" != "$expected_checksum" ]; then | |
echo "Checksum verification failed!" >&2 | |
rm -f $checksum_file | |
exit 1 | |
fi | |
rm -f $checksum_file | |
file "$jbr_location" | |
- id: 'step-5' | |
name: 'Setup JBR 21 for macOS ' | |
uses: 'gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d' | |
with: | |
java-version: '21' | |
distribution: 'jdkfile' | |
jdkFile: '${{ steps.step-3.outputs.jbrLocation }}' | |
env: | |
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
- id: 'step-6' | |
name: 'Dump Local Properties' | |
run: 'echo "jvm.toolchain.version=21" >> local.properties' | |
- id: 'step-7' | |
run: 'chmod -R 777 .' | |
- id: 'step-8' | |
name: 'Setup Gradle' | |
uses: 'gradle/actions/setup-gradle@v3' | |
with: | |
cache-disabled: 'true' | |
- id: 'step-9' | |
name: 'Clean and download dependencies' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '3' | |
command: './gradlew "--stacktrace" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
- id: 'step-10' | |
name: 'Update dev version name' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew updateDevVersionNameFromGit "--no-configuration-cache" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
- id: 'step-11' | |
name: 'Prepare signing key' | |
continue-on-error: true | |
uses: 'timheuer/[email protected]' | |
with: | |
fileName: 'android_signing_key' | |
fileDir: './' | |
encodedString: '${{ secrets.SIGNING_RELEASE_STOREFILE }}' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
- id: 'step-12' | |
name: 'Compile Kotlin' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileKotlin compileCommonMainKotlinMetadata compileJvmMainKotlinMetadata compileKotlinDesktop compileKotlinMetadata "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
- id: 'step-13' | |
name: 'Compile Kotlin Android' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileDebugKotlinAndroid compileReleaseKotlinAndroid "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
- id: 'step-14' | |
name: 'Build Android Debug APKs' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew assembleDebug "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
- id: 'step-15' | |
name: 'Upload Android Debug APK arm64-v8a' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-android-arm64-v8a-debug' | |
path: 'app/android/build/outputs/apk/debug/android-arm64-v8a-debug.apk' | |
overwrite: 'true' | |
- id: 'step-16' | |
name: 'Upload Android Debug APK x86_64' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-android-x86_64-debug' | |
path: 'app/android/build/outputs/apk/debug/android-x86_64-debug.apk' | |
overwrite: 'true' | |
- id: 'step-17' | |
name: 'Upload Android Debug APK armeabi-v7a' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-android-armeabi-v7a-debug' | |
path: 'app/android/build/outputs/apk/debug/android-armeabi-v7a-debug.apk' | |
overwrite: 'true' | |
- id: 'step-18' | |
name: 'Upload Android Debug APK universal' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-android-universal-debug' | |
path: 'app/android/build/outputs/apk/debug/android-universal-debug.apk' | |
overwrite: 'true' | |
- id: 'step-19' | |
name: 'Build Android Release APKs' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew assembleRelease "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
env: | |
signing_release_storeFileFromRoot: '${{ steps.step-11.outputs.filePath }}' | |
signing_release_storePassword: '${{ secrets.SIGNING_RELEASE_STOREPASSWORD }}' | |
signing_release_keyAlias: '${{ secrets.SIGNING_RELEASE_KEYALIAS }}' | |
signing_release_keyPassword: '${{ secrets.SIGNING_RELEASE_KEYPASSWORD }}' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
- id: 'step-20' | |
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' | |
overwrite: 'true' | |
- id: 'step-21' | |
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' | |
overwrite: 'true' | |
- id: 'step-22' | |
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' | |
overwrite: 'true' | |
- id: 'step-23' | |
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' | |
overwrite: 'true' | |
- id: 'step-24' | |
name: 'Check' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '2' | |
command: './gradlew check "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx6g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}"' | |
build_self-hosted-macos-15: | |
name: 'Build (macOS 15 AArch64 (Self-Hosted))' | |
runs-on: | |
- 'self-hosted' | |
- 'macOS' | |
- 'ARM64' | |
permissions: | |
actions: 'write' | |
if: '${{ github.repository == ''open-ani/animeko'' }}' | |
outputs: | |
macosAarch64DmgSuccess: '${{ steps.step-18.outcome == ''success'' }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
with: | |
submodules: 'recursive' | |
- id: 'step-1' | |
continue-on-error: true | |
run: 'rm local.properties' | |
- id: 'step-2' | |
name: 'Resolve JBR location' | |
shell: 'bash' | |
run: |- | |
# Expand jbrLocationExpr | |
jbr_location_expr='${{ runner.tool_cache }}/jbrsdk_jcef-21.0.5-osx-aarch64-b631.8.tar.gz' | |
echo "jbrLocation=$jbr_location_expr" >> $GITHUB_OUTPUT | |
- id: 'step-3' | |
name: 'Get JBR 21 for macOS AArch64' | |
env: | |
jbrLocation: '${{ steps.step-2.outputs.jbrLocation }}' | |
shell: 'bash' | |
run: |- | |
jbr_location="$jbrLocation" | |
checksum_url="https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-osx-aarch64-b631.8.tar.gz.checksum" | |
checksum_file="checksum.tmp" | |
wget -q -O $checksum_file $checksum_url | |
expected_checksum=$(awk '{print $1}' $checksum_file) | |
file_checksum="" | |
if [ -f "$jbr_location" ]; then | |
file_checksum=$(shasum -a 512 "$jbr_location" | awk '{print $1}') | |
fi | |
if [ "$file_checksum" != "$expected_checksum" ]; then | |
wget -q --tries=3 https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-21.0.5-osx-aarch64-b631.8.tar.gz -O "$jbr_location" | |
file_checksum=$(shasum -a 512 "$jbr_location" | awk '{print $1}') | |
fi | |
if [ "$file_checksum" != "$expected_checksum" ]; then | |
echo "Checksum verification failed!" >&2 | |
rm -f $checksum_file | |
exit 1 | |
fi | |
rm -f $checksum_file | |
file "$jbr_location" | |
- id: 'step-4' | |
name: 'Setup JBR 21 for macOS ' | |
uses: 'gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d' | |
with: | |
java-version: '21' | |
distribution: 'jdkfile' | |
jdkFile: '${{ steps.step-2.outputs.jbrLocation }}' | |
env: | |
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
- id: 'step-5' | |
name: 'Dump Local Properties' | |
run: 'echo "jvm.toolchain.version=21" >> local.properties' | |
- id: 'step-6' | |
run: 'chmod -R 777 .' | |
- id: 'step-7' | |
name: 'Setup Gradle' | |
uses: 'gradle/actions/setup-gradle@v3' | |
with: | |
cache-disabled: 'true' | |
- id: 'step-8' | |
name: 'Clean and download dependencies' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '3' | |
command: './gradlew "--stacktrace" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-9' | |
name: 'Update dev version name' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew updateDevVersionNameFromGit "--no-configuration-cache" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-10' | |
name: 'Compile Kotlin' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileKotlin compileCommonMainKotlinMetadata compileJvmMainKotlinMetadata compileKotlinDesktop compileKotlinMetadata "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-11' | |
name: 'Compile Kotlin Android' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew compileDebugKotlinAndroid compileReleaseKotlinAndroid "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-12' | |
name: 'Check' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '60' | |
max_attempts: '2' | |
command: './gradlew check "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-13' | |
name: 'Build Android Instrumented Tests' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew assembleDebugAndroidTest "-Pandroid.min.sdk=30" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-14' | |
name: 'Android Instrumented Test (api=30, arch=arm64-v8a)' | |
uses: 'reactivecircus/android-emulator-runner@v2' | |
with: | |
api-level: '30' | |
arch: 'arm64-v8a' | |
emulator-boot-timeout: '1800' | |
script: './gradlew connectedDebugAndroidTest "-Pandroid.min.sdk=30" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-15' | |
name: 'Android Instrumented Test (api=35, arch=arm64-v8a)' | |
uses: 'reactivecircus/android-emulator-runner@v2' | |
with: | |
api-level: '35' | |
arch: 'arm64-v8a' | |
emulator-boot-timeout: '1800' | |
script: './gradlew connectedDebugAndroidTest "-Pandroid.min.sdk=30" "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-16' | |
name: 'Package Desktop' | |
uses: 'nick-fields/retry@v3' | |
with: | |
timeout_minutes: '120' | |
max_attempts: '2' | |
command: './gradlew packageReleaseDistributionForCurrentOS "--scan" "-Porg.gradle.daemon.idletimeout=60000" "-Pkotlin.native.ignoreDisabledTargets=true" "-Dfile.encoding=UTF-8" "-Dorg.gradle.jvmargs=-Xmx6g" "-Dkotlin.daemon.jvm.options=-Xmx4g" "-Pani.dandanplay.app.id=${{ secrets.DANDANPLAY_APP_ID }}" "-Pani.dandanplay.app.secret=${{ secrets.DANDANPLAY_APP_SECRET }}" "--parallel" "-Pani.android.abis=arm64-v8a"' | |
- id: 'step-17' | |
name: 'Upload compose logs' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'compose-logs-self-hosted-macos-15' | |
path: 'app/desktop/build/compose/logs' | |
if: '${{ always() }}' | |
- id: 'step-18' | |
name: 'Upload macOS dmg' | |
uses: 'actions/upload-artifact@v4' | |
with: | |
name: 'ani-macos-dmg-aarch64' | |
path: 'app/desktop/build/compose/binaries/main-release/dmg/Ani-*.dmg' | |
if-no-files-found: 'error' | |
overwrite: 'true' | |
- id: 'step-19' | |
name: 'Cleanup temp files' | |
continue-on-error: true | |
run: 'chmod +x ./ci-helper/cleanup-temp-files-macos.sh && ./ci-helper/cleanup-temp-files-macos.sh' | |
verify_github-windows-2019: | |
name: 'Verify (Windows Server 2019 x86_64 (GitHub))' | |
runs-on: | |
- 'windows-2019' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_github-windows-2019' | |
if: '${{ needs.build_github-windows-2019.outputs.windowsX64PortableSuccess }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Delete libraries from system' | |
continue-on-error: true | |
shell: 'powershell' | |
run: |- | |
Remove-Item -Path "C:\vcpkg\installed\x64-windows\lib\libssl*" -Recurse -Force -Verbose | |
Remove-Item -Path "C:\vcpkg\installed\x64-windows\lib\libcrypto*" -Recurse -Force -Verbose | |
- id: 'step-2' | |
name: 'Download Windows x64 Portable' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-windows-portable' | |
path: '${{ github.workspace }}/ci-helper/verify' | |
- id: 'step-3' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "anitorrent-load-test"' | |
- id: 'step-4' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "dandanplay-app-id"' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
verify_github-windows-2022: | |
name: 'Verify (Windows Server 2022 x86_64 (GitHub))' | |
runs-on: | |
- 'windows-2022' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_github-windows-2019' | |
if: '${{ needs.build_github-windows-2019.outputs.windowsX64PortableSuccess }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Delete libraries from system' | |
continue-on-error: true | |
shell: 'powershell' | |
run: |- | |
Remove-Item -Path "C:\vcpkg\installed\x64-windows\lib\libssl*" -Recurse -Force -Verbose | |
Remove-Item -Path "C:\vcpkg\installed\x64-windows\lib\libcrypto*" -Recurse -Force -Verbose | |
- id: 'step-2' | |
name: 'Download Windows x64 Portable' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-windows-portable' | |
path: '${{ github.workspace }}/ci-helper/verify' | |
- id: 'step-3' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "anitorrent-load-test"' | |
- id: 'step-4' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "dandanplay-app-id"' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
verify_self-hosted-windows-10: | |
name: 'Verify (Windows 10 x86_64 (Self-Hosted))' | |
runs-on: | |
- 'self-hosted' | |
- 'Windows' | |
- 'X64' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_github-windows-2019' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (needs.build_github-windows-2019.outputs.windowsX64PortableSuccess) }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Download Windows x64 Portable' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-windows-portable' | |
path: '${{ github.workspace }}/ci-helper/verify' | |
- id: 'step-2' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "anitorrent-load-test"' | |
- id: 'step-3' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
shell: 'powershell' | |
run: 'powershell.exe -NoProfile -ExecutionPolicy Bypass -File "${{ github.workspace }}/ci-helper/verify/run-ani-test-windows-x64.ps1" "${{ github.workspace }}\ci-helper\verify" "dandanplay-app-id"' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
verify_self-hosted-macos-15: | |
name: 'Verify (macOS 15 AArch64 (Self-Hosted))' | |
runs-on: | |
- 'self-hosted' | |
- 'macOS' | |
- 'ARM64' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_self-hosted-macos-15' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (needs.build_self-hosted-macos-15.outputs.macosAarch64DmgSuccess) }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Download DMG' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-macos-dmg-aarch64' | |
- id: 'step-2' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg anitorrent-load-test' | |
- id: 'step-3' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg dandanplay-app-id' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
verify_github-macos-14: | |
name: 'Verify (macOS 14 AArch64 (GitHub))' | |
runs-on: | |
- 'macos-14' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_self-hosted-macos-15' | |
if: '${{ needs.build_self-hosted-macos-15.outputs.macosAarch64DmgSuccess }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Delete libraries from system' | |
continue-on-error: true | |
run: |- | |
sudo rm -rfv /usr/local/lib/libssl* || true | |
sudo rm -rfv /usr/local/lib/libcrypto* || true | |
sudo rm -rfv /opt/homebrew/lib/libssl* || true | |
sudo rm -rfv /opt/homebrew/lib/libcrypto* || true | |
- id: 'step-2' | |
name: 'Download DMG' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-macos-dmg-aarch64' | |
- id: 'step-3' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg anitorrent-load-test' | |
- id: 'step-4' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg dandanplay-app-id' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' | |
verify_github-macos-15: | |
name: 'Verify (macOS 15 AArch64 (GitHub))' | |
runs-on: | |
- 'macos-15' | |
permissions: | |
actions: 'read' | |
needs: | |
- 'build_self-hosted-macos-15' | |
if: '${{ needs.build_self-hosted-macos-15.outputs.macosAarch64DmgSuccess }}' | |
steps: | |
- id: 'step-0' | |
uses: 'actions/checkout@v4' | |
- id: 'step-1' | |
name: 'Delete libraries from system' | |
continue-on-error: true | |
run: |- | |
sudo rm -rfv /usr/local/lib/libssl* || true | |
sudo rm -rfv /usr/local/lib/libcrypto* || true | |
sudo rm -rfv /opt/homebrew/lib/libssl* || true | |
sudo rm -rfv /opt/homebrew/lib/libcrypto* || true | |
- id: 'step-2' | |
name: 'Download DMG' | |
uses: 'actions/download-artifact@v4' | |
with: | |
name: 'ani-macos-dmg-aarch64' | |
- id: 'step-3' | |
name: 'Check that Anitorrent can be loaded' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg anitorrent-load-test' | |
- id: 'step-4' | |
name: 'Check that Dandanplay APP ID is valid' | |
timeout-minutes: 5 | |
run: '"$GITHUB_WORKSPACE/ci-helper/verify/run-ani-test-macos-aarch64.sh" "$GITHUB_WORKSPACE"/*.dmg dandanplay-app-id' | |
if: '${{ (github.repository == ''open-ani/animeko'') && (!(github.event_name == ''pull_request'')) }}' |