Github Actions实现自动化部署
约 662 字大约 2 分钟
2025-10-12
本文讲述使用GitHub ACtions自动化部署个人博客项目。
使用 GitHub Actions 监听 push 事件,自动构建博客并部署到你的云服务器。
具体步骤
1. 服务器准备SSH密钥对
# 在服务器上生成 SSH 密钥对
ssh-keygen -t rsa -b 4096 -C "github-actions-deploy"
# 将公钥添加到 authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 设置权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
# 查看 SSH 私钥
vim ~/.ssh/id_rsa2. 在 GitHub 仓库添加 Secrets
在 GitHub 仓库中进入 Settings > Secrets and variables > Actions,点击 New Repository secrets:

添加
SERVER_HOST: 你的服务器IP或域名
添加
SERVER_USERNAME: 服务器用户名(服务器运行whoami命令可以查看)
添加
SERVER_SSH_KEY: 服务器私钥内容(刚才生成的id_rsa文件内容)
3. 创建 GitHub Actions 工作流文件
在项目根目录创建 .github/workflows/deploy.yml:
name: Deploy Blog to Server
on:
push:
branches: [ main ] # 根据你的主分支名称调整
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js (如果是静态站点生成器)
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies and build
run: |
npm install
npm run build
- name: Deploy to server
uses: appleboy/scp-action@v0.1.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_SSH_KEY }}
source: "dist/*" # 根据你的构建输出目录调整
target: "/path/to/your/blog" # 服务器上的目标路径
- name: Restart service (如果需要)
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
# 在这里添加服务器上需要执行的命令
# 例如重启 nginx
sudo systemctl restart nginx
# 或者重新加载配置等4. 查看自动部署结果
到自己的 Github 代码仓库, 点击顶部 Actions 可以看到工作流的运行情况和报错信息:

5. 服务器端部署脚本(可选)
可以在服务器上创建一个部署脚本 deploy.sh:
#!/bin/bash
cd /path/to/your/blog
# 备份旧版本(可选)
tar -czf backup/backup_$(date +%Y%m%d_%H%M%S).tar.gz .
# 解压或移动新文件
# 重启相关服务
sudo systemctl reload nginx然后在 GitHub Actions 中调用这个脚本:
- name: Run deployment script
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /path/to/scripts
./deploy.sh安全建议
1. 创建部署专用用户
# 创建新用户(例如命名为 deployer)
sudo adduser deployer
# 将用户添加到 sudo 组(如果需要执行特权命令)
sudo usermod -aG sudo deployer
# 切换到部署用户
sudo su - deployer设置 SSH 密钥认证
# 作为 deployer 用户生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "github-actions-deploy" -f ~/.ssh/id_rsa
# 设置正确的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
# 将公钥添加到授权列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys