原文地址:https://itxiaozhang.com//github-actions-sync-specific-folder-to-ubuntu-server-complete-guide/
如果您需要远程电脑维修或者编程开发,请加我微信咨询。
需求分析#
源:
- GitHub 仓库:[你的仓库地址]
- 需同步的文件夹:public/
目标:
- 服务器:[服务器IP]
- SSH 端口:[SSH端口]
- 用户:[用户名]
- 目标路径:/var/www/html/[你的域名]
功能要求:
- 当 push 到 main 分支时自动部署
- 只同步 public 文件夹内容
- 部署前清空目标目录
- 无需构建步骤
- 无需部署后操作
工作流程#
- 生成新的 public 文件夹中的文件
- 提交并推送到 GitHub
- GitHub Actions 自动触发
- Actions 通过 SSH 连接服务器
- 清空目标目录
- 同步新文件到服务器
详细教程#
1. 服务器配置#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # 1.1 SSH 登录服务器
ssh [用户名]@[服务器IP] -p [SSH端口]
# 1.2 生成 SSH 密钥对
ssh-keygen -t ed25519 -C "github-actions-deploy"
# 按三次回车,使用默认设置
# 1.3 设置 SSH 目录权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 1.4 配置授权
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 1.5 查看私钥(需要复制这个内容)
vim ~/.ssh/id_ed25519
# 使用 y 复制内容
# 使用 :q 退出
# 1.6 创建并设置部署目录
mkdir -p /var/www/html/[你的域名]
chmod 755 /var/www/html/[你的域名]
|
2. GitHub 配置#
添加 Repository Secrets
创建 GitHub Actions 配置
- 在仓库中创建
.github/workflows/deploy.yml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| name: Deploy to Server
on:
push:
branches: [ main ]
paths:
- 'public/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SERVER_SSH_KEY }}
known_hosts: unnecessary
if_key_exists: replace
- name: Adding Known Hosts
run: ssh-keyscan -p ${{ secrets.SERVER_PORT }} -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts
- name: Clear target directory
run: ssh -p ${{ secrets.SERVER_PORT }} ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }} "rm -rf ${{ secrets.DEPLOY_PATH }}/*"
- name: Deploy with rsync
run: rsync -avz -e "ssh -p ${{ secrets.SERVER_PORT }}" ./public/ ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }}:${{ secrets.DEPLOY_PATH }}
|
3. 提交配置#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 如果是新仓库,先克隆
git clone [你的仓库地址]
cd [仓库名]
# 创建 workflows 目录
mkdir -p .github/workflows
# 创建并编辑配置文件
vim .github/workflows/deploy.yml
# 粘贴上面的配置内容
# 提交更改
git add .github/workflows/deploy.yml
git commit -m "Add deployment workflow"
git push
# 如果遇到 GitHub 认证提示,输入 yes
|
4. 验证部署#
- 访问 GitHub 仓库的 Actions 标签页
- 应该能看到一个新的 workflow 运行
- 检查服务器目标目录:
1
| ls -la /var/www/html/[你的域名]
|
5. 故障排查#
如果部署失败:
- 检查 GitHub Actions 日志
- 验证 SSH 连接:
1
| ssh -p [SSH端口] [用户名]@[服务器IP]
|
- 检查目标目录权限
- 确认 Secrets 是否正确设置