|
@@ -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
|