Browse Source

feat: 重构 CI 流程并增强 Android 构建自动化

- 将 Linux ARM Electron 构建流程重构为并行作业:工作空间准备、H5 生产构建、部署、PKG 构建、Android APK 构建
- 增加 ARM 平台 Taro 构建依赖文件的特殊处理
- 在 Android 构建完成后自动执行 adb install 将 APK 安装到连接设备

改动文件:
- .build/build-android.js
- .github/workflows/build-linux-arm-appimage.yml
dengdx 3 days ago
parent
commit
8d791dff91
2 changed files with 49 additions and 12 deletions
  1. 5 1
      .build/build-android.js
  2. 44 11
      .github/workflows/build-linux-arm-appimage.yml

+ 5 - 1
.build/build-android.js

@@ -46,4 +46,8 @@ const src = path.join(__dirname, 'dros/platforms/android/app/build/outputs/apk/d
 const dst = path.join(__dirname, `dros/platforms/android/app/build/outputs/apk/debug/${pkg}-v${version}.apk`);
 const dst = path.join(__dirname, `dros/platforms/android/app/build/outputs/apk/debug/${pkg}-v${version}.apk`);
 
 
 fs.copyFileSync(src, dst);
 fs.copyFileSync(src, dst);
-console.log(`✅ 已生成 ${dst}`);
+console.log(`✅ 已生成 ${dst}`);
+
+// 安装到连接的安卓设备
+execSync(`adb install "${dst}"`, { stdio: 'inherit' });
+console.log(`✅ 已安装到安卓设备 ${dst}`);

+ 44 - 11
.github/workflows/build-linux-arm-appimage.yml

@@ -14,9 +14,8 @@ concurrency:
   cancel-in-progress: true
   cancel-in-progress: true
 
 
 jobs:
 jobs:
-  build:
+  prepare-workspace:
     runs-on: self-hosted
     runs-on: self-hosted
-
     steps:
     steps:
       - name: 检出代码
       - name: 检出代码
         uses: actions/checkout@v4
         uses: actions/checkout@v4
@@ -29,10 +28,31 @@ jobs:
       - name: 安装依赖
       - name: 安装依赖
         run: npm install --force
         run: npm install --force
 
 
-      - name: 运行自定义构建脚本
+  build-h5-production:
+    needs: prepare-workspace
+    runs-on: self-hosted
+    steps:
+      - name: 构建 H5 (生产环境)
         env:
         env:
-          GH_TOKEN: ${{ secrets.GH_TOKEN }}   # 关键:把 secret 映射成环境变量
-        run: node .build/h5_for_production.js
+          GH_TOKEN: ${{ secrets.GH_TOKEN }}
+          TARO_API_URL: 'http://localhost:6001'
+          TARO_MQTT_URL: 'ws://localhost:8083/mqtt'
+        run: |
+          echo "当前操作系统平台: $(uname -s)"
+          echo "当前CPU架构: $(uname -m)"
+          if [ "$(uname -s)" = "Linux" ] && [ "$(uname -m)" = "aarch64" ]; then
+            echo "复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置"
+            cp .build/taro.linux-arm64-gnu.node node_modules/@tarojs/binding/taro.linux-arm64-gnu.node
+            echo "复制完成"
+          fi
+          npm run build:h5
+
+  deploy-h5-production:
+    needs: build-h5-production
+    runs-on: self-hosted
+    steps:
+      - name: 检出代码
+        uses: actions/checkout@v4
 
 
       - name: 复制构建结果到部署目录
       - name: 复制构建结果到部署目录
         run: |
         run: |
@@ -41,16 +61,29 @@ jobs:
           rsync -av --delete dist/h5/ /home/ccos/dros/linux-arm64-unpacked/h5/
           rsync -av --delete dist/h5/ /home/ccos/dros/linux-arm64-unpacked/h5/
           echo "✅ 文件已成功复制到 /home/ccos/dros/linux-arm64-unpacked/h5"
           echo "✅ 文件已成功复制到 /home/ccos/dros/linux-arm64-unpacked/h5"
 
 
-      - name: 切换 Node.js 18 环境
+  build-pkg:
+    needs: deploy-h5-production
+    runs-on: self-hosted
+    steps:
+      - name: 检出代码
+        uses: actions/checkout@v4
+
+      - name: 设置 Node.js 环境(PKG 需要 Node 18)
         uses: actions/setup-node@v4
         uses: actions/setup-node@v4
         with:
         with:
           node-version: '18'
           node-version: '18'
 
 
+      - name: 安装依赖
+        run: npm install --force
+
       - name: 构建 PKG
       - name: 构建 PKG
         run: npm run pkg
         run: npm run pkg
 
 
-      # - name: 上传构建结果
-      #   uses: actions/upload-artifact@v4
-      #   with:
-      #     name: build-output
-      #     path: ./dist
+  build-android:
+    needs: prepare-workspace
+    runs-on: self-hosted
+    tags:
+      - win-android
+    steps:
+      - name: 构建 Android APK
+        run: npm run build:android