使用Jenkins Pipeline插件和Docker打造容器化构建环境_第1页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第2页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第3页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第4页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用JenkinsPipeline插件和Docker打造容器化构建环境Docker和Jenkins像DevOps界的巧克力和花生酱那样,它们的组合产生了无数的机会,当然也产生了很多难题,笔者将提及这两个方面。本文中,我假定读者已经熟悉Jenkins和Docker,我将把焦点放在特定的配置上而不是把笔墨花费在许多博文已经介绍过的入门概念上。设定目标我所要达成的目标其实非常简单:在一个容器中搭建Jenkins主节点,并且在多个主机上搭建多个JNLP代理容器。这些代理节点可以运行在不同的AWSVPC或者ECS上。我的目标是得到一个能在任何主机上部署的通用配置,而每个项目分别定义各自的构建环境。这样各个开发团队就可以掌控这份配置,而不用经由Jenkins的构建团队。我会尽量避免构建一个特定工具集的代理节点。容器技术能实现这样的构建环境,但是要真正把每个细节都做好绝对是一个挑战。为了实现这个目标,我还使用了JenkinsPipeline/Workflow插件。这个插件让你能非常优雅地使用DSL语言描述构建过程,例如这样简单地定义:node('test-agent'){stage"ContainerPrep

这个pipeline会在一个名为”test-agent”的Jenkins代理上执行,它会基于“maven”3.3.3-jdk-8”镜像构建一个容器。这个pipeline在物理节点上能正常运行,但是在容器中运行则会报错。运行在Docker中的Docker在容器中运行Jenkins的主或从节点,可能有人会以为我需要特权模式来使用"DockerinDocker”,但是我并没有,JQr6mePetazzoni发表了一篇文章《使用Docker-in-Docker来运行Cl或集成测试环境?三思》,你应该参考一下这篇文章。如果你还在使用wrapdocker的脚本,你应该问问自己为什么,因为这样用起来更简单:这个命令会启动Jenkins并且可以拥有所有的容器操作功能,所以并不需要特权模式来启动容器,也不需要”Docker-in-Docker”模式。有个地方需要注意:在这里你不能用官方的Jenkins镜像,因为jenkins用户需要属于docker用户组,这样才能使用socket,从而能在容器中的Jenkins调用docker,最终实现通过Jenkins构建和运行其他容器。

JenkinsJNLP代理容器在“系统管理”=>“管理节点”页面,点击“新建节点”,可以添加slave:an«S只 an«S只 4机卑的JobH融W逵 LiiinehtUh*半肿心啊J・^Wt<5笑❻Avari!biSrT 而q 負酣*Ofl-iirflumuch^po^^W'ltMDdcPTopormEjivrw-nipn阳阳les"fe&Jl<xr#lcngJenkins从节点的启动方式与主节点类似,它也需要连接docker的socket接口你可以这样启动:test-agent与Jenkins主节点一样,你需要确保jenkins用户有权限访问dockersocket接口,我使用的是Jenkinsjnlp从节点容器,这样,这个slave容器就可以执行构建操作了,注意secret参数需要从master上的某个slave里查看。准备就绪,开始构建在容器中开始一个构建过程不难,问题是你必需让这个代理容器绑定一个宿主机上的路径${JENKINS_HOME}:/var/jenkins_home,而且被构建的容器也需要这个目录的访问权限。这个容器会把宿主机上的/var/jenkins_home/workspace/uri-templates-in-docker目录挂载到容器化环境以供Maven使用,并且会把这个路径设置成当前工作路径,这些在物理机上都能正常运行,但是要在容器中执行,我需要尝试这样做:这样明显不行,因为我把dockersocket端口映射到了Jenkins代理容器上,挂载到Jenkinsagent容器的所有卷实际上都是引用宿主上的路径,假定宿主上的${JENKINS_HOME}是/opt/jenkins_home,以下的命

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论