build-linux-arm-appimage.yml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. name: CI 自动构建linux arm electron 包,并保存结果
  2. on:
  3. push:
  4. branches:
  5. - master
  6. repository_dispatch:
  7. types:
  8. - webhook_trigger
  9. # 并发控制:自动取消旧的运行
  10. concurrency:
  11. group: build-linux-arm-${{ github.ref }}
  12. cancel-in-progress: true
  13. jobs:
  14. build-h5-production:
  15. runs-on: [self-hosted,ARM64]
  16. steps:
  17. - name: Test SSH key
  18. run: |
  19. echo "${{ secrets.DEPLOY_KEY }}" > /tmp/test_key
  20. chmod 600 /tmp/test_key
  21. ssh -i /tmp/test_key -o StrictHostKeyChecking=no deploy@${{ secrets.DEPLOY_HOST }} "echo 'SSH key works!'"
  22. rm /tmp/test_key
  23. - name: 检出代码
  24. uses: actions/checkout@v4
  25. - name: 设置 Node.js 环境
  26. uses: actions/setup-node@v4
  27. with:
  28. node-version: '20'
  29. - name: 安装依赖
  30. run: npm install --force
  31. - name: 构建 H5 (生产环境)
  32. env:
  33. GH_TOKEN: ${{ secrets.GH_TOKEN }}
  34. TARO_API_URL: 'http://localhost:6001'
  35. TARO_MQTT_URL: 'ws://localhost:8083/mqtt'
  36. run: |
  37. echo "当前操作系统平台: $(uname -s)"
  38. echo "当前CPU架构: $(uname -m)"
  39. if [ "$(uname -s)" = "Linux" ] && [ "$(uname -m)" = "aarch64" ]; then
  40. echo "复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置"
  41. cp .build/taro.linux-arm64-gnu.node node_modules/@tarojs/binding/taro.linux-arm64-gnu.node
  42. echo "复制完成"
  43. fi
  44. node .build/h5_for_production.js
  45. - name: 复制构建结果到部署目录
  46. run: |
  47. echo "开始复制构建结果..."
  48. mkdir -p /home/ccos/dros/linux-arm64-unpacked/h5
  49. rsync -av --delete dist/h5/ /home/ccos/dros/linux-arm64-unpacked/h5/
  50. echo "✅ 文件已成功复制到 /home/ccos/dros/linux-arm64-unpacked/h5"
  51. - name: Set timestamp version
  52. run: echo "VERSION=$(date +%Y%m%d-%H%M%S)" >> $GITHUB_ENV
  53. - name: Upload dist/h5/ to server
  54. run: |
  55. # 1. 将私钥写入临时文件
  56. echo "${{ secrets.DEPLOY_KEY }}" > /tmp/deploy_key
  57. chmod 600 /tmp/deploy_key
  58. # 2. 创建远程目录
  59. ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no \
  60. "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
  61. "mkdir -p ${{ secrets.DEPLOY_PATH }}/${{ env.VERSION }}/"
  62. # 3. 上传文件(不删除本地)
  63. rsync -avz -e "ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no" \
  64. dist/h5/ \
  65. "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_PATH }}/${{ env.VERSION }}/"
  66. # 4. 清理密钥文件
  67. rm -f /tmp/deploy_key
  68. - name: Update latest symlink
  69. run: |
  70. echo "${{ secrets.DEPLOY_KEY }}" > /tmp/deploy_key
  71. chmod 600 /tmp/deploy_key
  72. ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no \
  73. "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
  74. "cd ${{ secrets.DEPLOY_PATH }} && ln -sfn ${{ env.VERSION }} latest"
  75. rm -f /tmp/deploy_key
  76. # build-pkg:
  77. # needs: deploy-h5-production
  78. # runs-on: self-hosted
  79. # steps:
  80. # - name: 检出代码
  81. # uses: actions/checkout@v4
  82. # - name: 设置 Node.js 环境(PKG 需要 Node 18)
  83. # uses: actions/setup-node@v4
  84. # with:
  85. # node-version: '18'
  86. # - name: 安装依赖
  87. # run: npm install --force
  88. # - name: 构建 PKG
  89. # run: npm run pkg
  90. build-android:
  91. runs-on: [self-hosted, win-android]
  92. defaults:
  93. run:
  94. shell: cmd # 全局切换到 cmd shell
  95. steps:
  96. - name: 检出代码
  97. uses: actions/checkout@v4
  98. # - name: Check Android SDK on Windows (cmd)
  99. # shell: cmd
  100. # env:
  101. # ANDROID_SDK_ROOT: 'C:\Users\ddx\AppData\Local\Android\Sdk' # <-- 修改为你的 SDK 安装路径
  102. # JAVA_HOME: 'C:\Program Files\Eclipse Adoptium\jdk-17.0.16.8-hotspot\' # <-- 修改为你的 JDK 路径
  103. # PATH: ${{ env.PATH }}';C:\Android\sdk\platform-tools;C:\Android\sdk\cmdline-tools\latest\bin'
  104. # run: |
  105. # echo USER: %USERNAME%
  106. # echo ANDROID_SDK_ROOT: %ANDROID_SDK_ROOT%
  107. - name: 设置 Node.js 环境
  108. uses: actions/setup-node@v4
  109. with:
  110. node-version: '22'
  111. cache: 'npm' # 缓存 npm 依赖
  112. - name: 安装 Android SDK (Windows)
  113. if: runner.os == 'Windows'
  114. run: node .build/setup-android-sdk.js
  115. - name: 安装依赖
  116. run: npm install --force --registry=https://registry.npmmirror.com/
  117. - name: 构建 H5(智能缓存)
  118. run: node .build/build-h5-smart.js
  119. - name: Set up JDK 17
  120. uses: actions/setup-java@v4
  121. with:
  122. java-version: '17'
  123. distribution: 'temurin'
  124. - name: 构建 Android APK
  125. run: npm run build:android