git 服务器发布项目,使用 Git Hooks 实现自动项目部署

  • Post author:
  • Post category:其他


最近在某服务器上面搭建 git 开发和部署环境,git 开发环境很简单,按照 ProGit 一书的相关知识就可以轻松搞定,实现了类似 Github 的使用 SSH + 私有 Clone 的方式。

关于部署,实际上是自动部署,起初的想法是使用 bash shell 制定一个定时任务去不断 git pull 产品代码,后来记得 Git 带有 Hooks,索性在 ProGit 一书翻了翻:

Git 本身可以调用自定义的挂钩脚本,其中有两组:客户端和服务器端。客户端挂钩用于客户端的操作,如提交和合并。服务器端挂钩用于 Git 服务器端的操作,如接收被推送的提交。详情请查看 ProGit 相关章节

如果这样就简单了,利用服务器端调用想要的挂钩(Hook),即可实现自动部署的方案,为了保证不被肆意部署,特加了一个对需要部署 commit 的判断,利用读取 commit subject 并匹配想要的字符串才去部署,这样我认为是一个比较安装的部署方案。

Git 的挂钩(Hook)主要包含:

applypatch-msg

post-update

pre-rebase

commit-msg

pre-applypatch

update

post-commit

pre-commit

post-receive

prepare-commit-msg

这里我们只需要使用 post-receive 这个 Hook:在接收 post(push)

请求之后执行。其他大部分我也没有大多研究,不过看名字不算难理解,我觉得其中大部分包含 comm