感谢您抽出宝贵时间阅读我的问题。我正在通过新的工作流程寻找经验的一点方向。我最近一直在更新东西,并为一些devops任务添加了Ansible,并将我们的repos移动到专用的GitLab服务器。
当前节点:
我想要完成的是一个自动化过程,但我不确定我是否应该使用标准的webhooks,跑步者,或者我是否应该使用我们的Ansible控制服务器来管理部署任务。
基本上,每个repo都有master
(生产)和develop
(开发)分支。我想在有人推送时自动部署develop
分支到这个分支。此外,当合并请求获得批准并合并到我们的生产线中时,我想手动将master
部署到生产环境中。
我是Ansible的新手,并且现在使用devops任务可以很好地运行,但我不确定Git的潜力以及像我这样的情况。来自有经验的人的任何指导都会非常有帮助,也非常感激。
答案 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
根据我的经验,我可以告诉你两件事:
仅部署所需的分支而不是克隆整个仓库有帮助,尤其是当回购很大时。 (见上面的代码)
使用depth = 1指定您基本上保留最后一次提交的提交日志。这不仅有助于保持克隆大小更小,而且还有助于了解最后一次提交是为了确定部署的代码是否正确。
在自动部署部分,您可以在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而不会有任何问题。