Skip to content

Sync APK

Sync APK #109

Workflow file for this run

name: Sync APK
on:
schedule:
# 每天UTC时间00:00自动检查新release,可以根据需要调整cron表达式
- cron: '0 0 * * *'
workflow_dispatch:
# 允许手动触发workflow
jobs:
check-releases:
runs-on: ubuntu-latest
steps:
# 检出仓库代码
- name: Checkout repo
uses: actions/checkout@v2
# 设置GitHub CLI
- name: Set up GitHub CLI
run: |
echo "${{ secrets.MY_GITHUB_TOKEN }}" | gh auth login --with-token
# 设置Node.js环境
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
# 下载最新的预发布版本的APK文件
- name: Get latest prerelease APK
run: |
LATEST_PRE_RELEASE=$(gh api repos/chenzyadb/CuprumTurbo-Scheduler/releases --jq '.[] | select(.prerelease == true) | .tag_name' | head -n 1)
if [ -n "$LATEST_PRE_RELEASE" ]; then
echo "Downloading Prerelease: $LATEST_PRE_RELEASE"
gh release download $LATEST_PRE_RELEASE --repo chenzyadb/CuprumTurbo-Scheduler --pattern "*.apk" --dir ./downloads
else
echo "No prerelease found."
fi
# 安装Android SDK命令行工具
- name: Install Android SDK
run: |
sudo apt-get update && sudo apt-get install -y android-sdk
# 设置ANDROID_HOME环境变量
- name: Set ANDROID_HOME
run: |
echo "ANDROID_HOME=/usr/lib/android-sdk" >> $GITHUB_ENV
# 提取APK版本号并写入到version文件
- name: Extract APK Version and Write to File
run: |
APK_FILE=$(ls ./downloads/*.apk | head -n 1)
VERSION_CODE=$(aapt dump badging "$APK_FILE" | grep versionCode | awk '{print $3}' | sed 's/versionCode=//g' | tr -d "'")
VERSION_NAME=$(aapt dump badging "$APK_FILE" | grep versionName | awk '{print $4}' | sed 's/versionName=//g' | tr -d "'")
echo "$VERSION_NAME ($VERSION_CODE)" > version
git add version
echo "Version $VERSION_NAME ($VERSION_CODE) extracted and written to version file."
# 检查APK文件并提交到仓库
- name: Check and push APK file to repository
run: |
FILES=./downloads/*.apk
if compgen -G "$FILES" > /dev/null; then
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git fetch
git checkout ${GITHUB_REF#refs/heads/}
mv -v ./downloads/*.apk ./
git add -f *.apk version
git commit -m "Update APK file"
# 确保下面的 'main' 是要推送到的分支名称
git push origin HEAD:main
else
echo "No APK files to commit."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}