我正在与docker一起玩并尝试实现它, 当前有一个项目已完全转移到docker。 该项目位于bitbucket中,其中包含Dockerfile和docker-compose.yml。
想知道从零开始为docker实现CI / CD管道的最佳方法或最佳实践是什么,这将经历从bitbucket构建映像,将具有更新的新映像上传到存储库,进行测试的所有过程qa / stg env,然后将其部署到生产实例。
经过一些研究,我发现可以通过使用Jenkins / Ansible来启动新映像的构建过程,然后将其上载到AWS中的dockerhub或ECR之类的存储库,同时实现监视程序来监视映像的更改来实现在存储库中与主机上的运行映像进行比较。 似乎还有许多其他方法可以实现这一目标,但是我对那里的所有可用选项感到困惑。
如果有可能就此解决方案提供一些利弊,或者只是一些我可以从中进行学习的起点,就可以对此有所了解。
感谢您的帮助!
答案 0 :(得分:1)
您遇到的简单有效的方法是:
对于CI管道,您可以为Git存储库的PR应用Jenkins构建触发器,并检查所有单元测试和集成测试是否全部成功,然后将测试状态通知给git存储库。由于此通知将启用合并按钮,如果所有测试均通过,则不会。 (GitHub具有这种功能,不了解bitbucket)
对于CD部分,因为您的代码是位存储桶,您应该在回购基础目录中编写并添加Jenkinsfile,并在Jenkinsfile中进行以下阶段。
结帐SCM 在此阶段,克隆存储库(最终克隆最新的master分支)
构建代码 在此阶段,使用docker-compose文件构建服务(此文件应在使用Dockerfile创建的容器中包含最新代码)
测试您的代码 在此阶段,运行所有的单元测试和集成测试,如果所有测试均通过,则仅继续进行下一阶段,否则将使构建失败。
推送图像 在此阶段,将您的Docker映像发布到Docker注册表(例如dockerhub)
部署更改 在此阶段,使用Docker注册表中的最新映像将服务部署到生产服务器中