github
github workflow打通服务器

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 "部署完成!"