所以我在一台ubuntu服务器上运行一个docker容器。我已经启用了绑定挂载,所以当服务器上的文件发生变化时,它也会在运行的容器中发生变化,这很酷!
我已经将存储库从GitHub克隆到了我的ubuntu服务器上。
但是现在我想要一个更好的开发工作流程。
每次我将另一个分支与我的主分支合并,或者直接编辑主分支时,我都会将代码推送到GitHub。
然后,我通过SSH连接到我的ubuntu服务器并转到存储库,然后通过简单的"git pull“在GitHub上收集我的主分支的更新版本。服务器上的所有内容都会更新。
但我想要的是,服务器上的存储库监听GitHub上的存储库(主)上的更改。当GitHub上的主分支发生更改时,我希望服务器更新(或者更准确地说,从GitHub中拉出主分支)。
怎样才能实现这样的结构呢?如果侦听部分不可能,我是否应该推送到两个git存储库(GitHub和服务器)?既然服务器上的存储库是克隆的,这有可能吗?如果是这样,我应该怎么做呢?
我很感谢你的帮助。
发布于 2019-06-07 05:42:07
为了实现这一点,我使用了Jenkins。Jenkins是一个具有很多功能的大型工具,其中一个功能可以让Jenkins在主服务器(或任何其他分支)发生更改时监听GitHub发出的Webhooks。然后它会自动拉动。
这个工作流程太棒了!
发布于 2019-06-06 06:48:01
GitHub提供了webhooks,当某些事件发生时,这些webhooks可用于获取对给定端点的HTTP POST请求。你可以在GitHub webhook documentation上阅读更多关于这方面的内容。然后,您可以创建一个作业,该作业在收到通知时执行以下操作:
git fetch origin
git reset --hard origin/master # works better than pull if you force-push
git submodule update --init # only if you have submodules
然而,这确实需要你有一个监听webhook请求并检查事情的服务。如果您不想这样做,您可以简单地推送到远程服务器。您需要在服务器端将receive.denyCurrentBranch
设置为updateInstead
,这将确保即使分支已经签出,也可以进行签出。
https://stackoverflow.com/questions/56465299
复制相似问题