123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- name: CI 自动构建linux arm electron 包,并保存结果
- on:
- push:
- branches:
- - master
- repository_dispatch:
- types:
- - webhook_trigger
- # 并发控制:自动取消旧的运行
- concurrency:
- group: build-linux-arm-${{ github.ref }}
- cancel-in-progress: true
- jobs:
- build-h5-production:
- runs-on: [self-hosted,ARM64]
- steps:
- - name: 检出代码
- uses: actions/checkout@v4
- - name: 设置 Node.js 环境
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- - name: 安装依赖
- run: npm install --force
- - name: 构建 H5 (生产环境)
- env:
- 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
- node .build/h5_for_production.js
- - name: 复制构建结果到部署目录
- run: |
- echo "开始复制构建结果..."
- mkdir -p /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"
- # 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
- # with:
- # node-version: '18'
- # - name: 安装依赖
- # run: npm install --force
- # - name: 构建 PKG
- # run: npm run pkg
- build-android:
- runs-on: [self-hosted, win-android]
- defaults:
- run:
- shell: cmd # 全局切换到 cmd shell
- steps:
- - name: 检出代码
- uses: actions/checkout@v4
- - name: Check Android SDK on Windows (cmd)
- shell: cmd
- env:
- ANDROID_SDK_ROOT: 'C:\Users\ddx\AppData\Local\Android\Sdk' # <-- 修改为你的 SDK 安装路径
- JAVA_HOME: 'C:\Program Files\Eclipse Adoptium\jdk-17.0.16.8-hotspot\' # <-- 修改为你的 JDK 路径
- PATH: ${{ env.PATH }}';C:\Android\sdk\platform-tools;C:\Android\sdk\cmdline-tools\latest\bin'
- run: |
- echo USER: %USERNAME%
- echo ANDROID_SDK_ROOT: %ANDROID_SDK_ROOT%
-
- - name: 设置 Node.js 环境
- uses: actions/setup-node@v4
- with:
- node-version: '22'
- - name: 安装依赖
- run: npm install --force
- - name: 构建h5
- run: npm run h5_for_production
-
- - name: Set up JDK 17
- uses: actions/setup-java@v4
- with:
- java-version: '17'
- distribution: 'temurin'
- - name: Set up Android SDK (包括 build-tools 35.0.0)
- uses: android-actions/setup-android@v3
- with:
- sdk-version: '35'
- build-tools: '35.0.0'
- # Windows 上会安装到 %LOCALAPPDATA%\Android\Sdk
- - name: Cache Android SDK
- uses: actions/cache@v4
- with:
- path: |
- %LOCALAPPDATA%\Android\Sdk
- key: android-sdk-${{ runner.os }}-${{ hashFiles('**/*.xml') }}
- - name: Set up Node.js (for Cordova)
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm' # 缓存 npm 依赖
- - name: Install Cordova globally
- run: npm install -g cordova@latest --no-optional
- shell: pwsh # 显式指定 PowerShell,确保兼容
- - name: Add Cordova Android platform 14.0.1
- run: |
- cordova platform add android@14.0.1 --save
- cordova requirements android # 检查环境(PowerShell 会自动处理路径)
- - name: Verify Environment Variables (PowerShell)
- run: |
- Write-Output "JAVA_HOME: $env:JAVA_HOME"
- Write-Output "ANDROID_HOME: $env:ANDROID_HOME"
- Write-Output "PATH includes Gradle: $(if ($env:PATH -like '*gradle*') { 'Yes' } else { 'No' })"
- - name: Update Gradle Wrapper to 9.0
- run: |
- # PowerShell 语法更新 wrapper
- (Get-Content gradle/wrapper/gradle-wrapper.properties) -replace 'gradle-[0-9]+\.[0-9]+-bin\.zip', 'gradle-9.0-bin.zip' | Set-Content gradle/wrapper/gradle-wrapper.properties
- # 确保 gradlew 可执行(Windows 上是 .bat)
- if (Test-Path 'gradlew.bat') { Write-Output "Gradle wrapper ready" }
- - name: 构建 Android APK
- run: npm run build:android
|