Repository navigation
chore(main): release 1.15.0 #262
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: Build Release Artifacts | |
| on: | |
| release: | |
| types: [published] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| jobs: | |
| android: | |
| name: Android APK/AAB | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Setup Android SDK | |
| uses: android-actions/setup-android@v3 | |
| - name: Detect Android project directory | |
| id: detect-app | |
| run: | | |
| if [ -f "EveryTalk/app1/gradlew" ]; then | |
| APP_DIR="EveryTalk/app1" | |
| elif [ -f "app1/gradlew" ]; then | |
| APP_DIR="app1" | |
| elif [ -f "app/gradlew" ]; then | |
| APP_DIR="app" | |
| else | |
| echo "::error::Unable to locate gradlew under EveryTalk/app1, app1, or app" | |
| exit 1 | |
| fi | |
| echo "Resolved app directory: $APP_DIR" | |
| echo "APP_DIR=$APP_DIR" >> $GITHUB_ENV | |
| # 从 Secrets 还原 keystore(你已经有签名) | |
| # 在仓库 Settings → Secrets and variables → Actions 中配置: | |
| # ANDROID_KEYSTORE_BASE64 / ANDROID_KEYSTORE_PASSWORD / ANDROID_KEY_ALIAS / ANDROID_KEY_PASSWORD | |
| - name: Restore keystore from base64 | |
| env: | |
| ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | |
| ANDROID_KEYSTORE_PATH: ${{ secrets.ANDROID_KEYSTORE_PATH }} | |
| if: ${{ env.ANDROID_KEYSTORE_BASE64 != '' }} | |
| run: | | |
| echo "Secrets ANDROID_KEYSTORE_PATH='${ANDROID_KEYSTORE_PATH}'" | |
| # Default to ${APP_DIR}/everytalk-release.jks if not specified | |
| KEYPATH=${ANDROID_KEYSTORE_PATH:-${APP_DIR}/everytalk-release.jks} | |
| # Use absolute path to avoid relative path issues in Gradle | |
| ABS_KEYPATH=$GITHUB_WORKSPACE/$KEYPATH | |
| echo "Writing keystore to $ABS_KEYPATH" | |
| echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > "$ABS_KEYPATH" | |
| echo "ANDROID_KEYSTORE_PATH=$ABS_KEYPATH" >> $GITHUB_ENV | |
| - name: Grant Gradle permissions | |
| run: chmod +x "./${{ env.APP_DIR }}/gradlew" | |
| - name: Extract Version from Tag | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| TAG_NAME=${GITHUB_REF#refs/tags/} | |
| # Remove 'v' prefix if present (e.g. v1.7.5 -> 1.7.5) | |
| VERSION_NAME=${TAG_NAME#v} | |
| echo "Detected version from tag: $VERSION_NAME" | |
| echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV | |
| - name: Create local.properties with Secrets | |
| env: | |
| # ===== 直连模式 API 配置 ===== | |
| GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} | |
| GOOGLE_API_BASE_URL: ${{ secrets.GOOGLE_API_BASE_URL }} | |
| GOOGLE_CSE_ID: ${{ secrets.GOOGLE_CSE_ID }} | |
| GOOGLE_SEARCH_API_KEY: ${{ secrets.GOOGLE_SEARCH_API_KEY }} | |
| DEFAULT_OPENAI_API_BASE_URL: ${{ secrets.DEFAULT_OPENAI_API_BASE_URL }} | |
| DEFAULT_TEXT_API_KEY: ${{ secrets.DEFAULT_TEXT_API_KEY }} | |
| DEFAULT_TEXT_API_URL: ${{ secrets.DEFAULT_TEXT_API_URL }} | |
| DEFAULT_TEXT_MODELS: ${{ secrets.DEFAULT_TEXT_MODELS }} | |
| SILICONFLOW_API_KEY: ${{ secrets.SILICONFLOW_API_KEY }} | |
| SILICONFLOW_IMAGE_API_URL: ${{ secrets.SILICONFLOW_IMAGE_API_URL }} | |
| SILICONFLOW_DEFAULT_IMAGE_MODEL: ${{ secrets.SILICONFLOW_DEFAULT_IMAGE_MODEL }} | |
| VITE_API_URLS: ${{ secrets.VITE_API_URLS }} | |
| QWEN_EDIT_API_URLS: ${{ secrets.QWEN_EDIT_API_URLS }} | |
| QWEN_EDIT_API_SECRET: ${{ secrets.QWEN_EDIT_API_SECRET }} | |
| SEEDREAM_API_URL: ${{ secrets.SEEDREAM_API_URL }} | |
| ZHIPU_API_KEY: ${{ secrets.ZHIPU_API_KEY }} | |
| run: | | |
| echo "Creating local.properties..." | |
| cat > ${{ env.APP_DIR }}/local.properties <<EOF | |
| sdk.dir=$ANDROID_HOME | |
| GOOGLE_API_KEY=$GOOGLE_API_KEY | |
| GOOGLE_API_BASE_URL=$GOOGLE_API_BASE_URL | |
| GOOGLE_CSE_ID=$GOOGLE_CSE_ID | |
| GOOGLE_SEARCH_API_KEY=$GOOGLE_SEARCH_API_KEY | |
| DEFAULT_OPENAI_API_BASE_URL=$DEFAULT_OPENAI_API_BASE_URL | |
| DEFAULT_TEXT_API_KEY=$DEFAULT_TEXT_API_KEY | |
| DEFAULT_TEXT_API_URL=$DEFAULT_TEXT_API_URL | |
| DEFAULT_TEXT_MODELS=$DEFAULT_TEXT_MODELS | |
| SILICONFLOW_API_KEY=$SILICONFLOW_API_KEY | |
| SILICONFLOW_IMAGE_API_URL=$SILICONFLOW_IMAGE_API_URL | |
| SILICONFLOW_DEFAULT_IMAGE_MODEL=$SILICONFLOW_DEFAULT_IMAGE_MODEL | |
| VITE_API_URLS=$VITE_API_URLS | |
| QWEN_EDIT_API_URLS=$QWEN_EDIT_API_URLS | |
| QWEN_EDIT_API_SECRET=$QWEN_EDIT_API_SECRET | |
| SEEDREAM_API_URL=$SEEDREAM_API_URL | |
| ZHIPU_API_KEY=$ZHIPU_API_KEY | |
| EOF | |
| echo "local.properties created." | |
| - name: Build Release APK | |
| working-directory: ${{ env.APP_DIR }} | |
| env: | |
| # 签名配置 | |
| ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
| ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} | |
| ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} | |
| VERSION_NAME: ${{ env.VERSION_NAME }} | |
| run: | | |
| ./gradlew :app:assembleRelease --parallel --build-cache --stacktrace | |
| - name: Upload Android artifacts to Release | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| ${{ env.APP_DIR }}/app/build/outputs/apk/release/*.apk | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get Commit Message | |
| id: get_commit_msg | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| # 获取最近一次提交的信息 | |
| COMMIT_MSG=$(git log -1 --pretty=%B) | |
| echo "COMMIT_MSG<<EOF" >> $GITHUB_ENV | |
| echo "$COMMIT_MSG" >> $GITHUB_ENV | |
| echo "EOF" >> $GITHUB_ENV | |
| - name: Install Python dependencies | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| pip install requests | |
| - name: Send Telegram Notification (APK) | |
| if: startsWith(github.ref, 'refs/tags/') | |
| env: | |
| TG_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} | |
| TG_CHAT_ID: ${{ secrets.TELEGRAM_TO }} | |
| REPO: ${{ github.repository }} | |
| BRANCH: ${{ github.ref_name }} | |
| RUN_ID: ${{ github.run_id }} | |
| SHA: ${{ github.sha }} | |
| APK_DIR: ${{ env.APP_DIR }}/app/build/outputs/apk/release | |
| run: | | |
| # 脚本位于仓库根目录的 .github/scripts 下 | |
| python3 .github/scripts/send_telegram.py | |
| - name: Upload artifacts for manual runs | |
| if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: android-release-apk | |
| path: | | |
| ${{ env.APP_DIR }}/app/build/outputs/apk/release/*.apk |