Skip to content

github

github workflow打通服务器

img

name: docs

on:
  # 每当 push 到 main 分支时触发部署
  push:
    branches: [main]
  # 手动触发部署
  workflow_dispatch:

jobs:
  docs:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: 18
          cache: 'npm'
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run docs:build

      # 方案1: 打包为 tar.gz 后传输
      - name: 打包构建文件
        run: |
          cd docs/.vuepress/dist
          tar -czf ../../../docs-dist.tar.gz *
          cd ../../../

      - name: 上传并解压到服务器
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: catpd.cn
          username: root
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            # 创建临时目录
            mkdir -p /tmp/deploy

      - name: 传输压缩包
        uses: wlixcc/SFTP-Deploy-Action@v1.2.6
        with:
          username: 'root'
          server: 'catpd.cn'
          ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
          local_path: 'docs-dist.tar.gz'
          remote_path: '/tmp/deploy/'
          sftpArgs: '-o ConnectTimeout=5'

      - name: 解压并部署
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: catpd.cn
          username: root
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            # 备份旧版本(可选)
            if [ -d "/root/ddstudy/dist" ]; then
              mv /root/ddstudy/dist /root/ddstudy/dist.backup.$(date +%Y%m%d_%H%M%S)
            fi

            # 创建目标目录
            mkdir -p /root/ddstudy/dist

            # 解压到目标目录
            cd /root/ddstudy/dist
            tar -xzf /tmp/deploy/docs-dist.tar.gz

            # 清理临时文件
            rm -f /tmp/deploy/docs-dist.tar.gz

            # 设置权限(如果需要)
            chown -R www-data:www-data /root/ddstudy/dist || true

            echo "部署完成!"