修复安卓自动更新无法发起安装的问题 #153
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: Release | |
on: | |
push: | |
tags: [ 'v*' ] | |
jobs: | |
create-release: | |
name: Create Release | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Get Tag # usage: ${{ steps.tag.outputs.tag }} | |
id: tag | |
uses: dawidd6/action-get-tag@v1 | |
- uses: bhowell2/[email protected] | |
id: tag-version # usage: ${{ steps.tag-version.outputs.substring }} | |
with: | |
value: ${{ steps.tag.outputs.tag }} | |
index_of_str: "v" | |
default_return_value: ${{ steps.tag.outputs.tag }} | |
- name: Create Release | |
id: create_release | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.tag.outputs.tag }} | |
name: ${{ steps.tag-version.outputs.substring }} | |
# 修改 release-template.md 然后复制过来 | |
body: | | |
Automatically created from tag ${{ steps.tag.outputs.tag }}. Do not change anything until assets are uploaded. | |
---- | |
### 下载 | |
[github-win-x64]: https://github.com/open-ani/ani/releases/download/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-windows-x86_64.zip | |
[github-mac-x64]: https://github.com/open-ani/ani/releases/download/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-macos-x86_64.dmg | |
[github-mac-aarch64]: https://github.com/open-ani/ani/releases/download/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-macos-aarch64.dmg | |
[github-android]: https://github.com/open-ani/ani/releases/download/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}.apk | |
[cf-win-x64]: https://d.myani.org/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-windows-x86_64.zip | |
[cf-mac-x64]: https://d.myani.org/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-macos-x86_64.dmg | |
[cf-mac-aarch64]: https://d.myani.org/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}-macos-aarch64.dmg | |
[cf-android]: https://d.myani.org/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}.apk | |
[qb-enhanced]: https://github.com/c0re100/qBittorrent-Enhanced-Edition/releases/latest | |
PC 目前默认只使用在线数据源。 | |
若本机装有 qBittorrent 或 [qBittorrent Enhanced][qb-enhanced] (建议), 则可额外支持 BT 数据源。 | |
可在设置中配置 qBittorrent 连接方式, 随后可在数据源设置中启用 BT 数据源。 | |
PC 首次播放在线数据源时, 可能需要加载 10-30 秒。 | |
| 操作系统 | 全球 | 中国大陆 | | |
|-------------------------|------------------------------|---------------------------------| | |
| Windows x86_64 | [GitHub][github-win-x64] | [Cloudflare 分流][cf-win-x64] | | |
| macOS x86_64 (Intel 芯片) | [GitHub][github-mac-x64] | [Cloudflare 分流][cf-mac-x64] | | |
| macOS aarch64 (M 系列芯片) | [GitHub][github-mac-aarch64] | [Cloudflare 分流][cf-mac-aarch64] | | |
| Android APK aarch64 | [GitHub][github-android] | [Cloudflare 分流][cf-android] | | |
扫描二维码下载 Android 版本: | |
[github-android-qr]: https://github.com/open-ani/ani/releases/download/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}.apk.github.qrcode.png | |
[cf-android-qr]: https://d.myani.org/${{steps.tag.outputs.tag}}/ani-${{steps.tag-version.outputs.substring}}.apk.cloudflare.qrcode.png | |
| 全球 | 中国大陆 | | |
|------------------------------|---------------------------------| | |
| ![GitHub][github-android-qr] | ![Cloudflare 分流][cf-android-qr] | | |
draft: true | |
prerelease: false | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
id: ${{ steps.create_release.outputs.id }} | |
release: | |
needs: [ create-release ] | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2022 | |
# - ubuntu-20.04 | |
- macos-12 # x86_64 | |
- macos-14 # aarch64 | |
include: | |
- os: windows-2022 | |
name: Windows x86_64 | |
uploadApk: false | |
arch: x64 | |
- os: macos-12 | |
name: macOS x86_64 | |
uploadApk: false | |
arch: x64 | |
- os: macos-14 | |
name: macOS aarch64 | |
uploadApk: true | |
arch: aarch64 | |
env: | |
enableLocalPublishingTest: 'false' | |
gradleArgs: >- | |
--scan | |
"-Dorg.gradle.jvmargs=-Xmx4096m" | |
"-Dfile.encoding=UTF-8" | |
--no-daemon | |
--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 }}" | |
isMac: ${{ startsWith(matrix.os, 'macos') }} | |
isWindows: ${{ startsWith(matrix.os, 'windows') }} | |
isUbuntu: ${{ startsWith(matrix.os, 'ubuntu') }} | |
isUnix: ${{ startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') }} | |
uploadApk: ${{ matrix.uploadApk == 'true' || matrix.uploadApk == true }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Get Tag # usage: ${{ steps.tag.outputs.tag }} | |
id: tag | |
uses: dawidd6/action-get-tag@v1 | |
- uses: bhowell2/[email protected] | |
id: tag-version # usage: ${{ steps.tag-version.outputs.substring }} | |
with: | |
value: ${{ steps.tag.outputs.tag }} | |
index_of_str: "v" | |
default_return_value: ${{ steps.tag.outputs.tag }} | |
- if: ${{ env.isUnix == 'true' }} | |
uses: actions/setup-java@v2 | |
with: | |
distribution: zulu | |
java-version: 17 | |
architecture: ${{ matrix.arch }} | |
- if: ${{ env.isWindows == 'true' }} | |
uses: actions/setup-java@v2 | |
with: | |
distribution: microsoft | |
java-version: 17 | |
architecture: ${{ matrix.arch }} | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Cache Konan | |
uses: pat-s/always-upload-cache@v3 | |
with: | |
path: ~/.konan | |
key: ${{ runner.os }}-konan-${{ hashFiles('*.gradle.kts') }} | |
restore-keys: | | |
${{ runner.os }}-konan- | |
- name: Cache Gradle | |
uses: pat-s/always-upload-cache@v3 | |
with: | |
path: ~/.gradle | |
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Cache Maven | |
uses: pat-s/always-upload-cache@v3 | |
with: | |
path: ~/.m2 | |
key: ${{ runner.os }}-maven-${{ hashFiles('*.gradle.kts') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- if: ${{ env.isUnix == 'true' }} | |
run: chmod -R 777 * | |
- name: Update version name | |
run: ./gradlew updateReleaseVersionNameFromGit ${{ env.gradleArgs }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }} | |
CI_RELEASE_ID: ${{ needs.create-release.outputs.id }} | |
CI_TAG: ${{ steps.tag.outputs.tag }} | |
- name: Explicitly generate Compose resources | |
run: ./gradlew generateComposeResClass ${{ env.gradleArgs }} | |
- if: ${{ env.uploadApk == 'true' }} | |
name: Prepare Android Signing Key | |
id: android_signing_key | |
uses: timheuer/[email protected] | |
with: | |
fileName: 'android_signing_key' | |
fileDir: './' | |
encodedString: ${{ secrets.SIGNING_RELEASE_STOREFILE }} | |
- name: Check | |
run: ./gradlew check ${{ env.gradleArgs }} | |
- if: ${{ env.uploadApk == 'true' }} | |
name: Build Android 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: ${{ env.uploadApk == 'true' }} | |
name: Upload Android APK | |
run: "./gradlew :ci-helper:uploadAndroidApk ${{ env.gradleArgs }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }} | |
CI_RELEASE_ID: ${{ needs.create-release.outputs.id }} | |
CI_TAG: ${{ steps.tag.outputs.tag }} | |
UPLOAD_TO_S3: true | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_BASEURL: ${{ secrets.AWS_BASEURL }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
AWS_BUCKET: ${{ secrets.AWS_BUCKET }} | |
- if: ${{ env.uploadApk == 'true' }} | |
name: Generate QR code for APK (GitHub) | |
uses: snow-actions/[email protected] | |
with: | |
text: https://github.com/Him188/ani/releases/download/${{ steps.tag.outputs.tag }}/ani-${{ steps.tag-version.outputs.substring }}.apk | |
path: apk-qrcode-github.png | |
- if: ${{ env.uploadApk == 'true' }} | |
name: Generate QR code for APK (Cloudflare) | |
uses: snow-actions/[email protected] | |
with: | |
text: https://d.myani.org/${{ steps.tag.outputs.tag }}/ani-${{ steps.tag-version.outputs.substring }}.apk | |
path: apk-qrcode-cloudflare.png | |
- if: ${{ env.uploadApk == 'true' }} | |
name: Upload QR code | |
run: "./gradlew :ci-helper:uploadAndroidApkQR ${{ env.gradleArgs }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }} | |
CI_RELEASE_ID: ${{ needs.create-release.outputs.id }} | |
CI_TAG: ${{ steps.tag.outputs.tag }} | |
UPLOAD_TO_S3: true | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_BASEURL: ${{ secrets.AWS_BASEURL }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
AWS_BUCKET: ${{ secrets.AWS_BUCKET }} | |
# createReleaseDistributable | |
# packageReleaseDistributionForCurrentOS | |
# packageReleaseUberJarForCurrentOS | |
# Upload assets for release | |
- name: Upload Desktop Installers | |
run: "./gradlew :ci-helper:uploadDesktopInstallers ${{ env.gradleArgs }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }} | |
CI_RELEASE_ID: ${{ needs.create-release.outputs.id }} | |
CI_TAG: ${{ steps.tag.outputs.tag }} | |
UPLOAD_TO_S3: true | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_BASEURL: ${{ secrets.AWS_BASEURL }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
AWS_BUCKET: ${{ secrets.AWS_BUCKET }} | |
# apk-qrcode: | |
# needs: [ release ] | |
# runs-on: ubuntu-22.04 | |
# steps: | |
# - id: update_release | |
# uses: tubone24/[email protected] | |
# env: | |
# GITHUB_TOKEN: ${{ github.token }} | |
# with: | |
# body: \n\n![](${{ needs.release.outputs.apk_qr_url }}) | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v2 | |
# | |
# - name: Set up JDK 11 | |
# uses: actions/setup-java@v1 | |
# with: | |
# java-version: 11 | |
# | |
# - name: Grant Execute Permission for gradlew | |
# run: chmod +x gradlew | |
# | |
# - run: ./gradlew mirai-api-http:checkMavenCentralPublication --info --scan | |
# env: | |
# PUBLICATION_CREDENTIALS: ${{ secrets.PUBLICATION_CREDENTIALS }} | |
# | |
# - name: Build with Gradle | |
# run: ./gradlew buildCiJar | |
# | |
# - name: Get Tag | |
# id: tag | |
# uses: dawidd6/action-get-tag@v1 | |
# | |
# - name: Generate Line Temp File | |
# run: "cat CHANGELOG.md | grep -n '## \\\\' | cut -d: -f1 | head -n 2 >> line.tmp" | |
# | |
# - name: Generate Release Log | |
# run: "cat CHANGELOG.md | head -n $((`tail -n 1 line.tmp`-1)) | tail -n +`head -n 1 line.tmp` >> release.log" | |
# | |
# - name: Create Release | |
# id: create_release | |
# uses: actions/create-release@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# tag_name: ${{ github.ref }} | |
# release_name: mirai-api-http-${{ steps.tag.outputs.tag }} | |
# body_path: release.log | |
# draft: false | |
# prerelease: false |