Sfoglia il codice sorgente

添加ci 工作流,在windows上运行,构建h5 静态资源,上传到服务器

dengdx 5 giorni fa
parent
commit
472105b30b
1 ha cambiato i file con 84 aggiunte e 0 eliminazioni
  1. 84 0
      .github/workflows/build-win-h5-only.yml

+ 84 - 0
.github/workflows/build-win-h5-only.yml

@@ -0,0 +1,84 @@
+name: CI 自动构建win h5,并上传到服务器
+
+on:
+  push:
+    branches:
+      - master
+  repository_dispatch:
+    types:
+      - webhook_trigger
+
+# 并发控制:自动取消旧的运行
+concurrency:
+  group: build-win-h5-only-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  build-h5-production:
+    runs-on: [win-h5-only]
+    steps:
+      - name: Test SSH key
+        run: |
+          echo "${{ secrets.DEPLOY_KEY }}" > /tmp/test_key
+          chmod 600 /tmp/test_key
+          ssh -i /tmp/test_key -o StrictHostKeyChecking=no deploy@${{ secrets.DEPLOY_HOST }} "echo 'SSH key works!'"
+          rm /tmp/test_key
+          
+      - 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: Set timestamp version
+        run: echo "VERSION=$(date +%Y%m%d-%H%M%S)" >> $GITHUB_ENV
+
+      - name: Upload dist/h5/ to server
+        run: |
+          # 1. 将私钥写入临时文件
+          echo "${{ secrets.DEPLOY_KEY }}" > /tmp/deploy_key
+          chmod 600 /tmp/deploy_key
+          
+          # 2. 创建远程目录
+          ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no \
+            "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
+            "mkdir -p ${{ secrets.DEPLOY_PATH }}/${{ env.VERSION }}/"
+          
+          # 3. 上传文件(不删除本地)
+          rsync -avz -e "ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no" \
+            dist/h5/ \
+            "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_PATH }}/${{ env.VERSION }}/"
+          
+          # 4. 清理密钥文件
+          rm -f /tmp/deploy_key
+
+      - name: Update latest symlink
+        run: |
+          echo "${{ secrets.DEPLOY_KEY }}" > /tmp/deploy_key
+          chmod 600 /tmp/deploy_key
+          
+          ssh -i /tmp/deploy_key -o StrictHostKeyChecking=no \
+            "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
+            "cd ${{ secrets.DEPLOY_PATH }} && ln -sfn ${{ env.VERSION }} latest"
+          
+          rm -f /tmp/deploy_key