diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml deleted file mode 100644 index 68697feb..00000000 --- a/.github/workflows/build-apk.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: Build Android APK - -on: - push: - tags: - - 'v*.*.*' # 只在以 v 开头的标签推送时触发,例如 v1.0.0 - workflow_dispatch: - inputs: - version: - description: 'Version number (e.g., 1.0.0)' - required: true - default: 'dev' - create_release: - description: 'Create GitHub Release' - required: false - default: true - type: boolean - -jobs: - build-android: - name: Build Android APK - runs-on: ubuntu-latest - permissions: - contents: write - packages: write - id-token: write - issues: write - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 10.10.0 - run_install: false - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '18' - cache: 'pnpm' - cache-dependency-path: 'main/manager-mobile/pnpm-lock.yaml' - - - name: Extract version from tag or input - id: get_version - run: | - if [[ "$GITHUB_REF" =~ ^refs/tags/v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then - # 从标签获取版本号 - echo "VERSION=${BASH_REMATCH[1]}" >> $GITHUB_ENV - echo "IS_VERSION=true" >> $GITHUB_ENV - echo "BUILD_TYPE=tag" >> $GITHUB_ENV - echo "CREATE_RELEASE=true" >> $GITHUB_ENV - elif [ "${{ github.event_name }}" = "workflow_dispatch" ]; then - # 手动触发时从输入获取版本号 - echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV - echo "IS_VERSION=${{ github.event.inputs.create_release }}" >> $GITHUB_ENV - echo "BUILD_TYPE=manual" >> $GITHUB_ENV - echo "CREATE_RELEASE=${{ github.event.inputs.create_release }}" >> $GITHUB_ENV - else - # 其他情况使用默认版本 - echo "VERSION=latest" >> $GITHUB_ENV - echo "IS_VERSION=false" >> $GITHUB_ENV - echo "BUILD_TYPE=other" >> $GITHUB_ENV - echo "CREATE_RELEASE=false" >> $GITHUB_ENV - fi - - echo "Version: ${{ env.VERSION }}" - echo "Is Version: ${{ env.IS_VERSION }}" - echo "Build Type: ${{ env.BUILD_TYPE }}" - echo "Create Release: ${{ env.CREATE_RELEASE }}" - - - name: Install dependencies - run: | - cd main/manager-mobile - pnpm install --frozen-lockfile - - - name: Build uni-app project - run: | - cd main/manager-mobile - pnpm build:app-android - env: - NODE_ENV: production - - - name: Check build output - run: | - cd main/manager-mobile - echo "=== Build output directory structure ===" - find . -name "unpackage" -type d - if [ -d "unpackage" ]; then - echo "=== unpackage directory contents ===" - find unpackage -type f 2>/dev/null || echo "unpackage directory not found" - fi - - # 检查dist目录 - if [ -d "dist" ]; then - echo "=== dist directory contents ===" - find dist -type f 2>/dev/null - fi - - - name: Create build package - id: create_package - run: | - cd main/manager-mobile - - # 创建构建包目录 - mkdir -p build-package - - # 复制构建产物 - if [ -d "unpackage" ]; then - cp -r unpackage build-package/ - echo "Copied unpackage directory" - fi - - if [ -d "dist" ]; then - cp -r dist build-package/ - echo "Copied dist directory" - fi - - # 创建构建信息文件 - cat > build-package/build-info.json << EOF - { - "version": "${{ env.VERSION }}", - "buildType": "${{ env.BUILD_TYPE }}", - "buildDate": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")", - "commit": "${{ github.sha }}", - "branch": "${{ github.ref_name }}" - } - EOF - - # 创建ZIP包 - cd build-package - zip -r "../xiaozhi-mobile-${{ env.VERSION }}.zip" . - cd .. - - echo "PACKAGE_PATH=xiaozhi-mobile-${{ env.VERSION }}.zip" >> $GITHUB_ENV - echo "PACKAGE_FOUND=true" >> $GITHUB_ENV - - echo "Created build package: xiaozhi-mobile-${{ env.VERSION }}.zip" - - - name: Create Release (for version tags or manual with create_release=true) - if: env.CREATE_RELEASE == 'true' - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.BUILD_TYPE == 'tag' && github.ref || format('v{0}', env.VERSION) }} - release_name: Release ${{ env.VERSION }} - body: | - ## What's Changed - - ### 🚀 New Features - - Mobile app build package included - - ### 📱 Mobile App - - Build Package: `xiaozhi-mobile-${{ env.VERSION }}.zip` - - Contains uni-app build artifacts for Android - - ### 🔧 Build Info - - Build Type: ${{ env.BUILD_TYPE }} - - Version: ${{ env.VERSION }} - - Build Date: ${{ github.event.head_commit.timestamp || 'Manual build' }} - - Commit: ${{ github.sha }} - - ### 📋 Installation Instructions - 1. Download the build package - 2. Extract the ZIP file - 3. Use HBuilderX to open the project - 4. Build for Android platform - - ### 📋 Full Changelog - ${{ env.BUILD_TYPE == 'tag' && format('See the [commit history](https://github.com/{0}/compare/...{1})', github.repository, github.ref) || 'Manual build - no changelog available' }} - draft: false - prerelease: ${{ env.BUILD_TYPE == 'manual' }} - - - name: Upload Build Package to Release - if: steps.create_release.outputs.upload_url != '' && env.PACKAGE_FOUND == 'true' - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: main/manager-mobile/${{ env.PACKAGE_PATH }} - asset_name: xiaozhi-mobile-${{ env.VERSION }}.zip - asset_content_type: application/zip - - - name: Upload Build Package as Artifact - if: env.PACKAGE_FOUND == 'true' - uses: actions/upload-artifact@v4 - with: - name: mobile-build-${{ env.VERSION }} - path: main/manager-mobile/${{ env.PACKAGE_PATH }} - retention-days: 30 - - - name: Show build info - run: | - echo "Build completed!" - echo "Version: ${{ env.VERSION }}" - echo "Build Type: ${{ env.BUILD_TYPE }}" - echo "Package found: ${{ env.PACKAGE_FOUND }}" - echo "Create Release: ${{ env.CREATE_RELEASE }}" - - if [ "${{ env.PACKAGE_FOUND }}" = "true" ]; then - echo "Package path: ${{ env.PACKAGE_PATH }}" - fi - - if [ "${{ env.CREATE_RELEASE }}" = "true" ]; then - echo "✅ Release will be created" - else - echo "ℹ️ No Release created (manual build with create_release=false or no version)" - fi