使用Jenkins Pipeline插件和Docker打造容器化构建环境

上传人:cn****1 文档编号:508349046 上传时间:2022-08-31 格式:DOCX 页数:5 大小:228.19KB
返回 下载 相关 举报
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第1页
第1页 / 共5页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第2页
第2页 / 共5页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第3页
第3页 / 共5页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第4页
第4页 / 共5页
使用Jenkins Pipeline插件和Docker打造容器化构建环境_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《使用Jenkins Pipeline插件和Docker打造容器化构建环境》由会员分享,可在线阅读,更多相关《使用Jenkins Pipeline插件和Docker打造容器化构建环境(5页珍藏版)》请在金锄头文库上搜索。

1、使用 Jenkins Pipeline 插件和 Docker 打造容器化构 建环境Docker 和 Jenkins 像 DevOps 界的巧克力和花生酱那样,它们的组合产生了无 数的机会,当然也产生了很多难题,笔者将提及这两个方面。本文中,我假定读者已经熟悉Jenkins和Docker,我将把焦点放在特定的配置 上而不是把笔墨花费在许多博文已经介绍过的入门概念上。设定目标我所要达成的目标其实非常简单:在一个容器中搭建Jenkins主节点,并且在 多个主机上搭建多个JNLP代理容器。这些代理节点可以运行在不同的AWS VPC或者ECS上。我的目标是得到一个能在任何主机上部署的通用配置,而每个项目

2、分别定义各 自的构建环境。这样各个开发团队就可以掌控这份配置,而不用经由 Jenkins 的构建团队。我会尽量避免构建一个特定工具集的代理节点。容器技术能实现 这样的构建环境,但是要真正把每个细节都做好绝对是一个挑战。为了实现这个目标,我还使用了 Jenkins Pipeline / Workflow插件。这个插件 让你能非常优雅地使用DSL语言描述构建过程,例如这样简单地定义:node(test-agent) stage Container Prep这个pipeline会在一个名为”test-agent”的Jenkins代理上执行,它会基于 “maven”3.3.3-jdk-8”镜像构建一个

3、容器。这个pipeline在物理节点上能正常运 行,但是在容器中运行则会报错。运行在 Docker 中的 Docker在容器中运行Jenkins的主或从节点,可能有人会以为我需要特权模式来使 用Docker in Docker”,但是我并没有,JQr6me Petazzoni发表了一篇文章使 用 Docker-in-Docker来运行 Cl或集成测试环境? 三思,你应该参考一下这 篇文章。如果你还在使用 wrapdocker 的脚本,你应该问问自己为什么,因为这样用起 来更简单:这个命令会启动Jenkins并且可以拥有所有的容器操作功能,所以并不需要特 权模式来启动容器,也不需要”Docker

4、-i n-Docker”模式。有个地方需要注意:在这里你不能用官方的Jenkins镜像,因为jenkins用户需 要属于docker用户组,这样才能使用socket,从而能在容器中的Jenkins调用 docker,最终实现通过Jenkins构建和运行其他容器。Jenkins JNLP 代理容器在“系统管理”=“管理节点”页面,点击“新建节点”,可以添加 slave:anS只4 机卑的JobH融W逵Liiineh tUh*半肿 心啊 J Wt5笑Avari!biSrT而q負酣* Ofl-iirfl u much poWltMDdc PTopormEjivrw-nipn 阳 阳lesfe&J l

5、xr#lcngJenkins 从节点的启动方式与主节点类似,它也需要连接 docker 的 socket 接口 你可以这样启动:test-agent与 Jenkins 主节点一样,你需要确保 jenkins 用户有权限访问 docker socket 接 口,我使用的是 Jenkins jnlp 从节点容器,这样,这个 slave 容器就可以执行构 建操作了,注意 secret 参数需要从 master 上的某个 slave 里查看。准备就绪,开始构建在容器中开始一个构建过程不难,问题是你必需让这个代理容器绑定一个宿主 机上的路径$JENKINS_HOME:/var/jenkins_home,

6、 而且被构建的容器也需要这个 目录的访问权限。这个容器会把宿主机上的 /var/jenkins_home/workspace/uri-templates-in- docker目录挂载到容器化环境以供Maven使用,并且会把这个路径设置成当 前工作路径,这些在物理机上都能正常运行,但是要在容器中执行,我需要尝 试这样做:这样明显不行,因为我把 docker socket 端口映射到了 Jenkins 代理容器上,挂 载到Jenkins age nt容器的所有卷实际上都是引用宿主上的路径,假定宿主上 的$JENKINS_HOME是 /opt/jenkins_home, 以下的命令应该生效:总结把构建环境容器化是一个非常好的主意,这样节省了很多时间。注意,这份代码可能不正正满足你的需求,但是起码是一个demo,我希望本 文能帮助更多人用上Jenkins的容器来构建应用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号