0%

Gogs 设置Git钩子实现项目自动部署

博客每次修改代码需要上传到git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子.

1.png

有三种状态分别是: pre-receive,update,post-receive分别对应接收前,接收时,接收后三种状态,希望push代码后实现更新部署则会用到post-receive

2.png

这里用到的shell命令是:

1
2
3
4
#!/bin/bash
unset $(git rev-parse --local-env-vars);
cd /usr/share/nginx/vue-blog
git pull origin master && npm i && npm run build

当然,项目运行需要的进程守护进程是pm2,由于nuxt使用npm run build会在本地生成build文件夹,就直接用pm2监听build的改动了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "blog",
"script": "/usr/local/bin/npm",
"args": "start",
"cwd": "./",
"watch": [
"build"
],
"ignore_watch": [
"node_modules"
],
"watch_options": {
"followSymlinks": false
}
}

然后就可以尝试使用git push看看是否会执行Gogs的post-receive钩子事件

相关链接: