如何在搭建好的git代码私服中使用webhooks功能

文章 未结 置顶 精帖 0 3.57w
无法显示用户头像
作者:ECode1024官方,责任编辑:ECode1024官方 5 钻石
发布于 2019-07-13
通常情况下我们都是将项目托管到 a(https://www.xinke.org.cn/tag/16/info)[Github], a(https://www.xinke.org.cn/tag/89/info)[Coding] 等服务商。如果你有一台自己的 a(https://www.xinke.org.cn/tag/98/info)[Linux] 云服务器,在上面搭建 a(https://www.xinke.org.cn/tag/119/info)[Git] 服务器比想象中要简单的多。这篇文章讲解如何使用git版本控制工具的 a(https://www.xinke.org.cn/tag/235/info)[Webhook] 机制,使用post-receive这个hook,在git服务器受到push请求时,并且接受完代码提交时触发相应的动作。 img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/1766a9a4-c0bd-49e6-8baa-1814f14ac0eb.jpg]  有关git私服的搭建这里就不介绍了,还没有搭建git私服的可以参考前面的两篇文章即可: a(https://www.xinke.org.cn/article/detail/221)[CentOS 搭建 Git 代码服务器]  a(https://www.xinke.org.cn/article/detail/1497)[阿里云上搭建自己的git服务器]  使用服务器的hook,每当本地push代码,还得在服务器上git pull。这样太麻烦了。git支持hook机制,类似事件通知,比如git服务器收到push请求,并且接受完代码提交时触发。需要在hooks目录下创建post-receive文件。 服务器操作 [pre] $ cd /usr/git_repo/gittest.git/hooks $ sudo cp post-update.sample  post-receive $ echo $(date) >> hook.log [/pre] 这样push代码到服务器,就会多出一个记录时间的hook.log,你可以优化内容,比如执行代码检查,git pull代码到/var/www,npm install,等操作。比如,在 a(https://www.xinke.org.cn/tag/170/info)[SpringCloud] 架构中,我们有一个配置中心。而配置中心读取的则是git远端项目的配置,我们需要在git远端项目提交代码后通知配置中心更新配置供其他微服务使用,可以将post-receive文件改成这样: [pre] curl -X POST "配置中心地址:配置中心端口/actuator/bus-refresh" [/pre] 以上配置意思是,当监测到有代码push动作的时候,使用POST方式调用一下配置中心提供的刷新消息总线的接口通知其他微服务重新调整配置信息,这样可以做到配置的动态刷新。 另外,也可以使用托管网站的webhooks功能。以bitbucket为例,我在上面创建一个nodejs项目叫git-deploy-demo,暴露一个接口叫deploy,必须是post方法。项目跑在我自己的主机叫cloud。每次push代码,我让他调用这个deploy接口: img[https://newecode1024.oss-cn-hongkong.aliyuncs.com/c91b0d38-7a6c-4f65-8307-9a82b3a25e6f.png]  [pre] 作者:ECode1024官方 来源:ECode1024网 [/pre]

声明:本文所有观点仅代表创作者本人,ECode1024系信息收集发布平台,ECode1024仅提供信息存储以及展示服务。若有侵权,请联系我们删除。
回复
  • 暂无任何回复,抢个沙发吧~~
推荐阅读
ECode1024 QQ交流群

打开手机QQ扫码加入 ECode1024 交流群

ECode1024 微信交流群

打开手机微信扫码关注 ECode1024 公众号