📦 Youyu-Github Pack backups_SNL_20251208_18_7 Sesame-TK CI #667
Workflow file for this run
This file contains hidden or 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: 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 }} |