使用Gitlab进行自动部署(可能是Ansible)

时间:2016-12-28 01:00:25

标签: git deployment ansible gitlab

感谢您抽出宝贵时间阅读我的问题。我正在通过新的工作流程寻找经验的一点方向。我最近一直在更新东西,并为一些devops任务添加了Ansible,并将我们的repos移动到专用的GitLab服务器。

当前节点

  • 5个生产服务器
  • 2个开发服务器
  • 2个DB服务器
  • 1个专用Gitlab服务器托管所有网站的回购
  • 1 Ansible控制服务器(库存中的所有盒子)

我想要完成的是一个自动化过程,但我不确定我是否应该使用标准的webhooks,跑步者,或者我是否应该使用我们的Ansible控制服务器来管理部署任务。

基本上,每个repo都有master(生产)和develop(开发)分支。我想在有人推送时自动部署develop分支到这个分支。此外,当合并请求获得批准并合并到我们的生产线中时,我想手动将master部署到生产环境中。

我是Ansible的新手,并且现在使用devops任务可以很好地运行,但我不确定Git的潜力以及像我这样的情况。来自有经验的人的任何指导都会非常有帮助,也非常感激。

1 个答案:

答案 0 :(得分:0)

我们在所有类型的服务器上使用ansible进行部署。 Ansible与git有很好的集成,git是Ansible的内置模块。所有你需要的是你的ansible剧本中的一些片段:

- git: repo=<your_git_repo> dest=<destination_directory_for_code> clone=yes version={{ branch_name }} depth=1
  tags:
   - <any_tags>
  sudo: no

根据我的经验,我可以告诉你两件事:

  1. 仅部署所需的分支而不是克隆整个仓库有帮助,尤其是当回购很大时。 (见上面的代码)

  2. 使用depth = 1指定您基本上保留最后一次提交的提交日志。这不仅有助于保持克隆大小更小,而且还有助于了解最后一次提交是为了确定部署的代码是否正确。

  3. 在自动部署部分,您可以在CI上保留相同的脚本,可以是jenkins / bamboo / travis ci /任何其他ci,以便为相同部署作业中的任何更改轮询特定分支。每个ci都与git(例如Jenkins git插件)有很好的集成。

    我感觉很幸运google结果显示Example Provisioning and Deployment using ANsible,我觉得这很有趣。

    我建议你阅读一份非常广泛的ansible文档。我个人使用ansible命令行文档:)

    希望这有帮助。

    编辑: 我忘了添加git插件与github / gitlab / bitbucket完美配合,所以你可以在ci中使用git插件来获取gitlab而不会有任何问题。