Skip to content

📦 Youyu-Github Pack backups_SNL_20251208_18_7 Sesame-TK CI #667

📦 Youyu-Github Pack backups_SNL_20251208_18_7 Sesame-TK CI

📦 Youyu-Github Pack backups_SNL_20251208_18_7 Sesame-TK CI #667

Workflow file for this run

name: Android CI
run-name: 📦 ${{ github.actor }} Pack ${{ github.ref_name }} Sesame-TK CI
# 需要写权限以便创建 tag / push
permissions:
contents: write
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
release:
types: [published]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 将时区设为亚洲/上海
run: |
sudo timedatectl set-timezone Asia/Shanghai
echo "当前时间: $(date)"
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.head_ref || github.ref_name }}
persist-credentials: true
- name: 设置 JDK
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "zulu"
cache: gradle
- name: 设置 Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false
gradle-version: wrapper
- name: 授予 gradlew 执行权限
run: chmod +x gradlew
- name: 使用 Gradle 构建
run: ./gradlew assembleRelease -Pversion=${{ github.ref_name }}
- name: 查找 APK 并设置输出
id: locate_apks
run: |
# APKs现在位于release目录下,按架构命名
release_dir="app/build/outputs/apk/release"
arm64_apk=$(find "$release_dir" -name "*-arm64-v8a-*.apk" | head -n 1)
universal_apk=$(find "$release_dir" -name "*-universal-*.apk" | head -n 1)
echo "arm64_apk=$arm64_apk" >> $GITHUB_OUTPUT
echo "universal_apk=$universal_apk" >> $GITHUB_OUTPUT
- name: 将 APK 复制到暂存阶段以便签名
run: |
mkdir -p app/build/outputs/apk/all
[ -n "${{ steps.locate_apks.outputs.arm64_apk }}" ] && cp "${{ steps.locate_apks.outputs.arm64_apk }}" app/build/outputs/apk/all/ || echo "arm64 APK 未找到"
[ -n "${{ steps.locate_apks.outputs.universal_apk }}" ] && cp "${{ steps.locate_apks.outputs.universal_apk }}" app/build/outputs/apk/all/ || echo "universal APK 未找到"
- name: 签名 APK 文件
id: sign_apks
uses: ilharp/sign-android-release@v2
with:
releaseDir: app/build/outputs/apk/all
signingKey: ${{ secrets.ANDROID_SIGNING_KEY }}
keyAlias: ${{ secrets.ANDROID_KEY_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
buildToolsVersion: 36.0.0
- name: 提取已签名 APK 路径
id: extract_apks
run: |
# 匹配新的架构名称
IFS=':' read -r -a files <<< "${{ steps.sign_apks.outputs.signedFiles }}"
for file in "${files[@]}"; do
if [[ "$file" == *arm64-v8a* ]]; then
echo "signed_arm64=$file" >> $GITHUB_OUTPUT
# echo "signed_armv7=$file" >> $GITHUB_OUTPUT
elif [[ "$file" == *universal* ]]; then
echo "signed_universal=$file" >> $GITHUB_OUTPUT
fi
done
- name: 更新安装包 - arm64-v8a
if: steps.extract_apks.outputs.signed_arm64 != ''
uses: actions/upload-artifact@v4
with:
name: apk-arm64-v8a
path: ${{ steps.extract_apks.outputs.signed_arm64 }}
- name: 更新安装包 - universal
if: steps.extract_apks.outputs.signed_universal != ''
uses: actions/upload-artifact@v4
with:
name: apk-universal
path: ${{ steps.extract_apks.outputs.signed_universal }}
- name: 提取版本信息
id: extract_info
run: |
# 从任意一个APK文件名中提取版本号
if [ -n "${{ steps.extract_apks.outputs.signed_arm64 }}" ]; then
file="${{ steps.extract_apks.outputs.signed_arm64 }}"
elif [ -n "${{ steps.extract_apks.outputs.signed_armv7 }}" ]; then
file="${{ steps.extract_apks.outputs.signed_armv7 }}"
elif [ -n "${{ steps.extract_apks.outputs.signed_universal }}" ]; then
file="${{ steps.extract_apks.outputs.signed_universal }}"
else
echo "未找到任何APK文件"
exit 1
fi
filename=$(basename "$file")
echo "filename=$filename" >> $GITHUB_OUTPUT
# 改进版本号提取 - 支持包含预发布标识符的版本号
# 匹配类似 v0.2.8.rc9999 或 v0.2.8 的格式
if [[ "$filename" =~ (v[0-9]+\.[0-9]+\.[0-9]+(\.[a-zA-Z0-9]+)?) ]]; then
version="${BASH_REMATCH[1]}"
else
# 如果正则匹配失败,尝试基于文件名结构提取
# 移除架构部分和-signed.apk后缀,提取中间部分作为版本号
temp_version=$(echo "$filename" | sed -E 's/.*-(arm64-v8a|universal)-(.*)-signed\.apk/\2/')
if [ "$temp_version" != "$filename" ]; then
version="$temp_version"
else
# 最终回退方案
version="v0.2.8"
echo "警告:无法从文件名提取版本号,使用默认值: $version"
fi
fi
echo "version=$version" >> $GITHUB_OUTPUT
echo "提取的版本号: $version"
# 同时提取基础版本号(不含预发布标识符)
if [[ "$version" =~ (v[0-9]+\.[0-9]+\.[0-9]+) ]]; then
base_version="${BASH_REMATCH[1]}"
else
base_version="$version"
fi
echo "base_version=$base_version" >> $GITHUB_OUTPUT
echo "基础版本号: $base_version"
- name: 生成sha256校验值
run: |
# 更新Checksum文件名,使用提取的版本号
[ -n "${{ steps.extract_apks.outputs.signed_arm64 }}" ] && sha256sum "${{ steps.extract_apks.outputs.signed_arm64 }}" > "CHECKSUMS-Sesame-TK-Y-arm64-v8a-${{ steps.extract_info.outputs.version }}-signed.apk.sha256"
[ -n "${{ steps.extract_apks.outputs.signed_universal }}" ] && sha256sum "${{ steps.extract_apks.outputs.signed_universal }}" > "CHECKSUMS-Sesame-TK-Y-universal-${{ steps.extract_info.outputs.version }}-signed.apk.sha256"
- name: 创建并推送 Git 标签
# if: github.ref == 'refs/heads/main'
run: |
VERSION_TAG="${{ steps.extract_info.outputs.version }}" # 使用完整版本号
echo "创建/更新标签: $VERSION_TAG"
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
# 使用 PAT 后,可以直接推送标签
git tag -f "$VERSION_TAG"
git push origin -f "$VERSION_TAG"
- name: 向TG发送组合消息(APK 和 说明)
# if: github.event_name == 'push' && github.ref == 'refs/heads/main'
env:
CHANNEL_ID: ${{ secrets.TG_CHAT_ID }}
BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
ARM64_FILE: ${{ steps.extract_apks.outputs.signed_arm64 }}
ARMV7_FILE: ${{ steps.extract_apks.outputs.signed_armv7 }}
UNIVERSAL_FILE: ${{ steps.extract_apks.outputs.signed_universal }}
COMMIT_MESSAGE: |+
🚀 *Github 新版本发布!*
📦 *版本号:${{ steps.extract_info.outputs.version }}*
```TXT
⚠️注意
从官方或其他作者版本切换至此非官方版本时,请务必先备份 Sesame-TK 再删除 Sesame-TK 文件夹,否则可能导致优先级设置不生效或运行错乱
7点整到40分,这个时间段只能运行循环收能量,不干其他事
📋更新日志:
提升模块稳定性
优化模块流畅性
${{ github.event.head_commit.message }}
```Branch: `${{ github.ref_name }}`
*蹲点收能量版*
📥 *下载说明:*
*- arm64-v8a:* 适用于64位设备 (主流新设备)
*- universal:* 通用版,包含所有架构 (体积较大)
*- 如果不确定,请下载 universal 版本*
run: |
# 构建媒体文件数组
media_parts=()
files=()
if [ -n "$ARM64_FILE" ] && [ -f "$ARM64_FILE" ]; then
# 使用 Markdown 而不是 MarkdownV2,避免复杂的转义问题
ESCAPED_MESSAGE=$(python3 -c 'import json, os; print(json.dumps(os.environ["COMMIT_MESSAGE"]))')
media_parts+=("{\"type\":\"document\",\"media\":\"attach://arm64.apk\",\"caption\":$ESCAPED_MESSAGE,\"parse_mode\":\"Markdown\"}")
files+=("-F" "arm64.apk=@$ARM64_FILE")
fi
if [ -n "$ARMV7_FILE" ] && [ -f "$ARMV7_FILE" ]; then
media_parts+=('{"type":"document","media":"attach://armv7.apk"}')
files+=("-F" "armv7.apk=@$ARMV7_FILE")
fi
if [ -n "$UNIVERSAL_FILE" ] && [ -f "$UNIVERSAL_FILE" ]; then
media_parts+=('{"type":"document","media":"attach://universal.apk"}')
files+=("-F" "universal.apk=@$UNIVERSAL_FILE")
fi
# 如果没有找到任何文件,退出
if [ ${#media_parts[@]} -eq 0 ]; then
echo "没有找到可发送的APK文件"
exit 1
fi
# 构建media JSON数组
media_json="["
for i in "${!media_parts[@]}"; do
if [ $i -gt 0 ]; then
media_json+=","
fi
media_json+="${media_parts[$i]}"
done
media_json+="]"
echo "发送消息到Telegram..."
# 发送到Telegram
curl -v -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMediaGroup" \
-H "Content-Type: multipart/form-data" \
-F "chat_id=${CHANNEL_ID}" \
-F "media=$media_json" \
"${files[@]}"
# 检查是否发送成功
if [ $? -eq 0 ]; then
echo "消息发送成功"
else
echo "消息发送失败"
fi
- name: 将资源整合上传到仓库发布
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.extract_info.outputs.version }} # 使用完整版本号
# name: Sesame-TK-Y-${{ steps.extract_info.outputs.version }}-SNL # 发布的名称。默认为标签名称
name: ${{ github.event.release.tag_name || steps.extract_info.outputs.version }} # 发布的名称。默认为标签名称
# name: Sesame-TK-Y-${{ steps.extract_info.outputs.version }}
files: |
${{ steps.extract_apks.outputs.signed_arm64 }}
${{ steps.extract_apks.outputs.signed_armv7 }}
${{ steps.extract_apks.outputs.signed_universal }}
CHECKSUMS-Sesame-TK-Y-arm64-v8a-${{ steps.extract_info.outputs.version }}-signed.apk.sha256
CHECKSUMS-Sesame-TK-Y-universal-${{ steps.extract_info.outputs.version }}-signed.apk.sha256
draft: false
prerelease: false
generate_release_notes: true
body: |
## ✨What's Changed
## 📦 Sesame-TK-Y-${{ github.event.release.tag_name || steps.extract_info.outputs.version }}
${{ steps.commit_details.outputs.COMMIT_MESSAGE_BODY }}
> ## 下载说明
> - **Sesame-TK-Y-arm64-v8a-${{ steps.extract_info.outputs.version }}-signed.apk**: 适用于64位ARM设备 (主流新设备)。
> - **Sesame-TK-Y-universal-${{ steps.extract_info.outputs.version }}-signed.apk**: 通用版,包含所有架构 (体积较大)。
>
> **如果不确定,请下载 `universal` 版本。**
### 使用说明
- 从官方或其他作者版本切换至此非官方版本时,请务必删除 `UID` 目录下的 `config_v2.json` 文件
- 7点整到40分,这个时间段只能运行循环收能量,不干其他事
### 更新内容
${{ github.event.head_commit.message }}