前言
Jenkins是开源的持续集成持续部署的组件,也是该领域的世界范围内的领导者。
随着Docker技术的不断成熟和普及,让持续集成持续部署的技术也有了长足的发展。通过Docker能够屏蔽各种底层的环境的差异,能够保证跨机器运行环境的统一。
使用Docker环境运行Jenkins具有以下优点:
1.快速部署。
2.方便迁移,能够快速的在新的机器上部署和转移数据。
3.Jenkins利用Docker plugin,可以动态的生成jenkins slave运行环境,节约资源。
4.可以指定不同的docker镜像为运行环境,避免了在宿主机上过多的配置而产生对环境的依赖。
安装
我们采用docker hub上的官方镜像进行部署
这里我们使用latest版本,默认是使用。官方为不同的版本封装了镜像,例如有centos的版本,alpine的版本以及封装了JDK11的版本。大家可以根据需要进行选择。
我们这里选择lts的版本,因为比较稳定。从dockerfile上看,lts版本目前支持的版本号是: 2.222.1
然后我们就可以设计我们的启动的docker命令了。
这里注意,因为我们之后的操作都是以docker的方式运行,所以务必要求jenkins内部能运行docker命令。运行命令之后我们可以看到容器已经在运行了。并且本地生成了相应的jenkins home内的文件。
访问http://ip:8080/jenkins即可看到相应的界面。
这里我们需要输入管理员密码,相应的内容在jenkins home 下的/secrets/initialAdminPassword。
我们也可以用docker logs -f jenkins
查看jenkins的日志拿到该信息
然后根据提示要求完成安装。
下面我们开始配置一个简单的流水线。
我们新建一个简单的流水线示例
使用helloword示例,保存并触发构建
还记得我们将docker命令也挂载到容器中了吗,我们尝试添加运行docker命令的步骤。
修改pipeline, 添加docker -v尝试运行docker
我们可以看到成功运行并打印出宿主机的docker版本信息。
以上只是一个简单的例子,jenkins已经安装好,并且能够运行我们指定的pipeline。但是这仍然不够。真实的使用场景中,需要配置很多额外的环境,例如安装maven,git等。
如果登录到容器内部进行安装操作,确实可以实现这样的场景。但是如果jenkins容器重启后就需要重新安装和配置,这样会增加很多复杂的工作而且无法重用。
我们需要更加灵活的方式做我们流水线运行的环境。 例如使用docker容器跑流水线的方式。jenkins pipeline原生的提供了这样的功能,可以指定docker的agent去运行流水线。
默认的jenkins镜像中不含有maven工具,这里我们使用官方的maven镜像尝试在流水线中运行mvn命令。
修改流水线如下:
这里我们看到maven的镜像中成功看到mvn命令的输出。证明,该流水线是在我们指定的docker容器中运行的。
具体有关pipeline中docker的语法请查看:
https://jenkins.io/doc/book/pipeline/syntax/#agent
使用这种docker的定义的方法好处是可以灵活配置好不同的构建环境,以镜像的形式去维护。
总结
本文介绍了如何使用纯docker的方式去运行Jenkins,以及jenkins流水线中“docker"的语法去运行流水线。之后的文章我会介绍如何使用docker plugin去实现动态的jenkins slave添加。
上一篇: Python 邮件收发
下一篇: 软件测试之手工测试人员如何转测试开发?