问题描述
想要在测试环境中使用Docker容器来运行自动化脚本。他的想法是通过Jenkins创建一个Docker容器作为slave,该容器将从git仓库中检出最新的脚本,并在容器中运行测试。由于这是API测试,他不需要任何产品代码,只需要脚本来连接API进行测试。他想知道在创建镜像文件时,最佳的方法是什么。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
你的假设是正确的,你可以按照以下步骤来创建镜像文件:
1. 使用evagra/jenkins
作为基础镜像。
2. 在基础镜像上安装Frisby。
3. 在容器中检出你的脚本。
4. 运行脚本。
这种方法的好处是,你可以预先构建镜像,而不是在每个Jenkins作业中构建镜像。然后,你的Jenkins作业将运行该镜像;在容器内部,你将检出测试脚本并运行它。
方案2
另一种常见的方法是让Jenkins负责实际的git检出,并使用bind volume将脚本传递到容器中。这样,你可以在容器外部运行测试,而无需进行任何更改。这种方法的好处是,你可以在开发过程中在自己的机器上运行测试,而不仅仅是在Jenkins中运行。如果你在容器内部进行git检出,并且需要凭据来访问git仓库,请确保安全处理这些凭据。不要将明文密码或没有密码的ssh密钥放入镜像中。
无论你选择哪种方法,都应该自动构建镜像,以避免手动步骤。你可以将构建镜像的过程作为实际作业的一部分,或者作为一个单独的作业,仅在Dockerfile(以及使用ADD
/ COPY
命令引入的文件)发生更改时才构建镜像。
结论
在使用Jenkins和Docker容器运行自动化脚本时,你可以选择预先构建镜像或让Jenkins负责git检出。无论哪种方法,都应该自动构建镜像,并确保安全处理凭据。这样,你可以在任何可用的Jenkins节点上运行测试环境,并避免为每个作业创建和分发新的镜像。