我是 CI/CD 的新手,并试图理解为什么我们在 CI/CD 中需要 Docker。
由于 CI 服务器将编译测试并构建 APK,并通过 shell 脚本,此 APK 将被推送到 HockeyApp 到各自的环境存储桶。那么整个过程中究竟在哪里以及为什么需要Docker?
您可以通过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/
在 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