Skip to content

支持通过输入法动作发送弹幕 (Android), close #403 #156

支持通过输入法动作发送弹幕 (Android), close #403

支持通过输入法动作发送弹幕 (Android), close #403 #156

Workflow file for this run

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.
----
### 下载
[//]: # (注意, `checkLatestVersion` 有字符串处理, 修改标题和分隔符前务必查询)
[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
[ghproxy-win-x64]: https://mirror.ghproxy.com/?q=https%3A%2F%2Fgithub.com%2Fopen-ani%2Fani%2Freleases%2Fdownload%2F${{steps.tag.outputs.tag}}%2Fani-${{steps.tag-version.outputs.substring}}-windows-x86_64.zip
[ghproxy-mac-x64]: https://mirror.ghproxy.com/?q=https%3A%2F%2Fgithub.com%2Fopen-ani%2Fani%2Freleases%2Fdownload%2F${{steps.tag.outputs.tag}}%2Fani-${{steps.tag-version.outputs.substring}}-macos-x86_64.dmg
[ghproxy-mac-aarch64]: https://mirror.ghproxy.com/?q=https%3A%2F%2Fgithub.com%2Fopen-ani%2Fani%2Freleases%2Fdownload%2F${{steps.tag.outputs.tag}}%2Fani-${{steps.tag-version.outputs.substring}}-macos-aarch64.dmg
[ghproxy-android]: https://mirror.ghproxy.com/?q=https%3A%2F%2Fgithub.com%2Fopen-ani%2Fani%2Freleases%2Fdownload%2F${{steps.tag.outputs.tag}}%2Fani-${{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] | [主线][cf-win-x64] / [备线][ghproxy-win-x64] |
| macOS x86_64 (Intel 芯片) | [GitHub][github-mac-x64] | [主线][cf-mac-x64] / [备线][ghproxy-mac-x64] |
| macOS aarch64 (M 系列芯片) | [GitHub][github-mac-aarch64] | [主线][cf-mac-aarch64] / [备线][ghproxy-mac-aarch64] |
| Android APK aarch64 | [GitHub][github-android] | [主线][cf-android] / [备线][ghproxy-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