git 的hook 是一个很方便的功能,我们可以使用hook 做好多处理,比如client side hook 进行
提交格式校验,server side 进行ci/cd 处理
测试使用docker-compose 运行 git server 使用gogs
环境准备
- 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
server side hook 在custom_hooks 目录下
- 创建项目
- 配置hook
- server 端效果
测试
- clone 代码
git clone http://localhost:10080/dalong/demo.git
- 修改提交
修改index.html 即可
- 效果
heroku 应用部署类似的方式
说明
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