搭建git服务器&部署钩子
文章目录
一般我们在写好文档后,会生成一份apidoc发给前端同学,好让前端同学了解接口格式,进行开发。一直以来,我都是在本机搭建了一个服务器,让其他同学访问本机,但是这样会有一个问题,由于ip是DHCP分出来的,有时候就会产生变化,这个时候,我就要重新发一下本机的ip,因为ip变动频率不高,工作又很多事,一直以来也都这么忍受了,今天突然想起这码事,又正好有空,于是折腾折腾。
这个问题的核心在于,需要一个固定的ip,而正好发现同事的开发机我也可以访问,于是以这台开发机为核心,开搞。
我想达成的目标是:写好apidoc之后,在本机执行一个命令,就可以部署到开发机。
首先,在开发机上建立一个裸仓库:
|
|
然后去本机初始化git并添加远程地址
|
|
这样,在本机执行git push origin master
的时候,就会提交到这个裸仓库。
然后在开发机上建立一个目录,例如www/apidoc
来存放文件。
|
|
这样开发机的git也配置好了,在apidoc目录执行git pull origin master
就能把文档拉下来了,然后在nginx新建一个端口,指到这个目录,并且添加
|
|
以保证可以直接列出目录。
做完上面这些事,我们就有了一个可以使用的文档服务器,但是,这离我们的目标还有一些距离,因为现在发布一次文档,我们需要很多命令,还需要登录开发机,不爽。
首先,在srv/apidoc.git/hooks
目录,添加文件post-receive
,这个文件在每次有文件提交到服务器的时候触发。
|
|
这样,每次在本地push之后,就会自动触发钩子,更新开发机上的文件。然后,使用ssh-keygen
生成秘钥对,在开发机添加ssh认证登陆,这样每次push的时候就不需要敲一次密码了。
现在,我们在本地的apidoc目录,敲一下git push origin master
,就可以刷新网页看效果了。
但是,还是不爽,因为我要先执行apidoc
生成文档,切换目录,再执行git。不过这个就没多少说的啦,写一个sh文件即可,然后起一个帅气的名字~
至此,目标完成,我们就拥有了一个,可以一键发布文档的文档服务器。