git 的hook 是一个很方便的功能,我们可以使用hook 做好多处理,比如client side hook 进行
提交格式校验,server side 进行ci/cd 处理

环境准备

  • docker-compose
version: '3'
services:
gogs:
image: gogs/gogs
ports:
- "10022:22"
- "10080:3000"
volumes:
- ./data/gogs:/data
depends_on:
- mysql
mysql:
image: mysql:5.7.16
volumes:
- ./gogs/mysql:/var/lib/mysql
ports:
- 3308:3306
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: dalongrong
MYSQL_DATABASE: gogs
MYSQL_USER: gogs
MYSQL_PASSWORD: dalongrong
TZ: Asia/Shanghai
  • 配置gogs
http://localhost:10080  按照提示即可

配置git server side hook

  • 创建项目

git server side hook 试用-LMLPHP

  • 配置hook

git server side hook 试用-LMLPHP

git server side hook 试用-LMLPHP

  • server 端效果

git server side hook 试用-LMLPHP

测试

  • clone 代码
git clone http://localhost:10080/dalong/demo.git
  • 修改提交
修改index.html 即可
  • 效果

git server side hook 试用-LMLPHP
heroku 应用部署类似的方式
git server side hook 试用-LMLPHP

说明

heroku 的应该部署模型也是使用类似的方式,当我们进行提交之后,触发应用的构建(nodejs npm install 容器构建,应用启动。。。)
同时我们使用hook 可以做好多比较灵活的ci/cd 开发

参考资料

https://github.com/gogs/gogs
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks
https://devcenter.heroku.com/articles/getting-started-with-nodejs#deploy-the-app

 
 
 
 
05-11 20:11