github actions部署项目示例
·
文章目录
服务器配置
1、生成SSH密钥对
ssh-keygen -t rsa -b 4096 -C "github-deploy"
2、编辑或创建authorized_keys 文件:
vim ~/.ssh/authorized_keys
# 将公钥黏贴进去(新的一行)
# 设置权限
chmod 600 ~/.ssh/authorized_keys
3、确认SSH 服务是否限制了 root 登录
# 允许使用 root 用户通过 SSH 登录
PermitRootLogin yes
# 允许使用密码进行 SSH 登录
PasswordAuthentication yes
# 允许使用 SSH 公钥进行登录
PubkeyAuthentication yes
# 保存,重启ssh服务
systemctl restart sshd
4、本地连接测试
# 1、将私钥复制到本地电脑并保存为id_rsa文件
vim id_rsa
# 2、保存之后设置文件权限
chmod 600 ./id_rsa
# 3、测试使用私钥链接是否需要密码
ssh -i ./id_rsa root@47.xxx.xx.xx
如下图就成功了

github 配置
1、在GitHub仓库添加Secrets,在Settings > Secrets and variables > Actions > New repository secret
| Secret 名称 | 内容说明 |
|---|---|
DEPLOY_KEY |
私钥(你的 id_rsa 内容,注意包括 -----BEGIN... 到 END-----) |
HOST |
服务器 IP,比如 127.0.0.1 |
USER |
登录用户名,通常是 root 或其他有权限的用户 |
TARGET |
目标路径,比如 /www/wwwroot/blog |
如图:
2、添加 GitHub Actions 工作流
代码仓库 > Actions > set up a workflow yourself
# 自定义名称
name: Deploy to Server
# 触发条件:当 push 到 main 分支时自动触发
on:
push:
branches:
- main
jobs:
deploy:
# 在 GitHub 提供的 Ubuntu 最新版本的虚拟机上运行
runs-on: ubuntu-latest
steps:
# 第一步:检出代码仓库内容到 runner 上
- name: Checkout code
uses: actions/checkout@v4
# 第二步:设置 SSH 密钥,用于远程连接服务器
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.HOST }} >> ~/.ssh/known_hosts
# 第三步:使用 rsync 将本地代码同步到远程服务器指定目录
- name: Deploy via rsync
run: |
# -a 保持文件权限等信息,-v 显示详细过程,-z 开启压缩加快传输
rsync -avz ./ ${{ secrets.USER }}@${{ secrets.HOST }}:${{ secrets.TARGET }}



3、点击查看Actions

这样每次推送新的代码到main都会更新到配置的服务器了
这里可以查看同步的文件
多台服务器参考:
name: Deploy to Multiple Servers
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: server1
HOST: ${{ secrets.HOST1 }}
USER: ${{ secrets.USER1 }}
TARGET: ${{ secrets.TARGET1 }}
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY1 }}
- name: server2
HOST: ${{ secrets.HOST2 }}
USER: ${{ secrets.USER2 }}
TARGET: ${{ secrets.TARGET2 }}
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY2 }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ matrix.DEPLOY_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H "${{ matrix.HOST }}" >> ~/.ssh/known_hosts
- name: Deploy to ${{ matrix.name }}
run: |
rsync -avz --delete ./ "${{ matrix.USER }}@${{ matrix.HOST }}:${{ matrix.TARGET }}"
更多推荐
所有评论(0)