使用GitLab CI持续交付

时间:2014-08-11 05:25:27

标签: git continuous-integration webhooks continuous-delivery gitlab-ci

我一直在努力探讨如何使用GitLab CI实现持续交付?

我为CD阅读的每个解决方案都依赖于多步骤管道(例如Jenkins),或者是一个侦听webhooks并提供自己的部署界面的自定义应用程序(例如,GitHub' s HuBot + Heaven + Janky )。

如果我们只关心在Master分支上执行CD,并且我们的测试套件/部署步骤非常快,您可以简单地将其作为由GitLab CI运行的shell脚本的一部分包含....但是,什么如果你的测试套件不快?或者您的部署可能需要几分钟才能下载软件包等?然后你的CI Runner正在忙着做事。

我能想出的最佳解决方案是:

  1. 创建一个Web应用程序,该应用程序接受来自GitLab和GitLab CI的Web Hook,并跟踪每个单独的提交和构建状态。
  2. 启动自己的自定义运行程序,尝试为收到的每个传递的webhook执行交付到登台站点。应用程序可以使用例如fabistrano,以便于部署/回滚。
  3. 听取合并请求合并到GitLab中接受通过所有测试的母版。
  4. 有什么想法?有没有人用GitLab CI实现CD?

1 个答案:

答案 0 :(得分:3)

我会从gitlab CI开发一个webhooks的监听器,只处理跟踪分支的成功构建,然后需要签出和交付。特别是,我没有看到需要从gitlab和corrdination处理webhooks,来自gitlab CI的信息似乎已经足够(它包含构建状态,引用分支和提交ID)。

根据您的repositoy布局,您可以通过

下载存档
  

gitlab.example.net/namespace/repository/archive.zip?ref=githash

或签出相关提交并调用您的CD脚本。

如果要整合CD脚本的反馈(部署是否有效),您可以从跑步者那里调用所有内容。请注意,如果设置时间过长,您可以拥有多个参与者。