如何在git push时自动拉取最新代码并重启服务

65次阅读
没有评论

问题描述

在一个运行在Linux虚拟机上的应用程序(Logstash)中,使用GitLab存储配置文件。他希望在推送更新到仓库时,虚拟机能够自动拉取最新的配置文件并重启服务。用户想知道实现这个需求最简单的方法是什么。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用配置管理工具如Chef或Puppet(pull模型)可以实现自动拉取最新代码并重启服务。这些工具已经有相应的资源来配置和处理Logstash的重启。
另外,Logstash本身也能够监视配置文件的变化并自动重新加载,引用elastic.co的文档:

从Logstash 2.3开始,你可以设置Logstash自动检测和重新加载配置文件的更改。
要启用自动配置重新加载,可以在启动Logstash时指定--config.reload.automatic(或-r)命令行选项。例如:
bin/logstash –f apache.config --config.reload.automatic
因此,你可以设置一个定时任务(crontab)来定期执行git pull命令拉取仓库的最新代码,并让Logstash自动重新加载配置文件。

方案2

使用Jenkins可以很容易地与GitHub、GitLab或其他版本控制系统集成。你可以设置Jenkins任务,使其在你推送到GitLab仓库时自动构建。在任务中,你可以指定更新Linux虚拟机上的Logstash配置文件,并重新加载/重启服务。
以下是一些可以帮助你进一步操作的文章:
http://fourkitchens.com/blog/article/trigger-jenkins-builds-pushing-github/
https://oncomputingwell.princeton.edu/2018/01/triggering-a-jenkins-build-every-time-changes-are-pushed-to-a-git-branch-on-github/
注意:如果你只想为单个节点设置这个功能,你也可以创建一个非常简单的脚本,每隔5分钟从GitHub拉取代码,如果有变更,它可以更新Logstash配置并简单地重启Logstash服务。

正文完