GitHub-Actions

在 GitHub 中找到 Actions选项卡

image-20251113094819310

然后选择 New workflow

image-20251113094922194

然后创建一个 .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
name: Deploy to Server

on:
push:
branches: [ main ]

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Deploy to Server
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /home/www/kluhten-blog
git pull origin main
pm2 restart hexo

具体工作流就是,通过密钥连接到服务器,然后执行命令,先进入到工程目录,再拉取 GitHub 最新代码,然后通过 pm2 重启项目

这里还需要配置一下 SERVER_HOST,SERVER_USER 和 SERVER_SSH_KEY,找到代码后面的 Settings

image-20251113100323698

然后创建3个密钥对,分别是 主机 用户名 和 SSH私钥,我这里用了腾讯云服务器,所以 SSH 私钥是从腾讯云上创建并下载的

image-20251113100702469

注意:这里要填写的是私钥而不是公钥


服务器端

先安装 pm2

1
npm install pm2 -g

image-20251113095623554

安装好后,进入你的 Hexo 博客根目录,并创建脚本文件

1
cd /path/to/your/hexo/blog

脚本如下:

1
2
3
4
5
6
7
8
9
const { exec } = require('child_process');
exec('hexo server -p 4000', (error, stdout, stderr) => { // 确保端口与你的一致
if (error) {
console.error(`执行错误: ${error}`);
return;
}
console.log(`标准输出: ${stdout}`);
console.log(`标准错误: ${stderr}`);
});

然后通过这个脚本文件,启动 Hexo 工程

1
pm2 start hexo_run.js --name "hexo"

image-20251113100134353


测试一下

image-20251113100955207

image-20251113101228987

image-20251113101300339

成功!