我是CI / CD的新手,并试图了解为什么我们在CI / CD中确实需要docker。
由于CI服务器将编译测试并构建apk,并通过shell脚本将此apk推送到HockeyApp到各自的环境存储桶中,那么在整个过程中到底需要什么码头以及为什么需要docker?
答案 0 :(得分:1)
在CI / CD管道中,您可能需要诸如maven之类的构建工具,或诸如sshpass,jq,ansible等任何其他必需的软件。因此,除了在运行时安装所有必需的软件之外,您还可以将它们放在docker映像中您可以使用它们。
示例(.gitlab-ci.yml):
build:
stage: build
image: $DOCKER_REGISTRY/maven/v3.5
script:
- mvn $MAVEN_CLI_OPTS compile
答案 1 :(得分:0)
您可以通过https://www.docker.com/use-cases/cicd。
据我对Docker的了解,您可以实现2个主要目标 1.运行应用程序的相同环境,即轻量级虚拟化。 2.由于Docker基于层架构,因此分发更容易。
对于开发,您可以在微服务架构上构建解决方案
对于CI,在可以并行执行测试的多台机器/同一台机器中复制同一环境会更容易。
对于CD而言,更容易将更改部署到生产环境中,并且还将为生产中的应用程序提供与开发中相同的环境,从而解决“它在我的机器上有效但在生产中不起作用”的问题。
您还可以浏览Docker swarm,这将帮助您进行蓝色/绿色部署 https://technologyconversations.com/2017/01/31/blue-green-deployments-with-docker-services-running-inside-a-swarm-cluster/