![git push 之后是否可以使用 Ansible 进行自动部署?](https://linux22.com/image/703434/git%20push%20%E4%B9%8B%E5%90%8E%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20Ansible%20%E8%BF%9B%E8%A1%8C%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%EF%BC%9F.png)
我对 Ansible 和整个 DevOps 团队都很陌生。之前我有使用 Laravel 提供的 Envoyer 的经验。现在我想使用 Ansible 或类似的服务来处理自动部署任务。我的意思是我希望能够仅使用单个命令来部署我的应用程序git push
,并且根据我推送到应用程序的分支将其部署到不同的服务器。
在我阅读了有关 Ansible 的内容后,我似乎至少需要运行额外的命令,例如执行 playbook,另外,任何在同一个项目上工作的开发人员都需要在本地机器上安装 ansible。
因此 Envoyer 或 CodeShip 使用 git hooks 来实现这一点,推送完成后,CodeShip 会执行 git pull 并运行必要的命令。不确定 Ansible 能否在这里提供帮助。
另外,重要的是,当我部署由构建的前端应用程序时npm run build
,我意识到我只需要部署此命令的结果,例如包含连接和最小化等文件的文件夹,保存构建的结果。构建过程本身可能应该在另一台机器上完成。所以我想 Ansible 在这里不会帮助我?
答案1
持续集成工具的主要用例是构建和测试软件包。配置管理工具(如 Ansible)的主要用例是安装和配置主机。
但是,由于两者都可以运行任意命令,因此您可以让它们相互调用。您选择的 CI 可以监视特定的存储库,构建软件,并将其暂存到某个位置。CI 还可以监视不同的存储库,并定期从中调用 ansible-playbook 进行部署和配置。提交对软件存储库的更改并构建修复包,在清单文件中提交新的测试 VM,它将使用标准配置进行部署。
开发人员不必安装 ansible。他们可以从 UNIX 服务器测试他们的剧本,只需要 Python。或者使用 Tower 产品的 Web 界面。
答案2
对于个人或非常小的用例,git hooks 和 ansible 可能会有用,但你真的应该测试在部署代码(持续部署)之前,请先检查代码(持续集成)。如果您想要符合行业最佳实践的 CI 和 CD 管道,那么像 GitLab w/GitLab CI 这样的工具是理想的解决方案(https://about.gitlab.com/features/gitlab-ci-cd/)。使用 GitLab CI,您可以在一个文件中指定测试和部署逻辑.gitlab-ci.yml
,该文件可以根据 git 分支有条件地运行。GitLab 是开源的,可以免费自托管。
注意:我不是 GitLab 的员工,我只是该工具的忠实粉丝!