Jenkins(结合Docker)任务(Jenkins与Docker位于不同机器上)
注:Docker与Jenkins可以各自单独使用,也可以联合使用。声明:浏览此博客,最好先掌握一些Docker、Jenkins的基础知识。本文不会讲Docker、Jenkins如何安装等基本知识,相关基础知识可参考《程序员成长笔记(三)》第七章第五节。环境说明:注:为了避免不必要的麻烦,此两台机器的防火墙都是关闭了的;如果不想关闭防火墙,那么只开放需要用...
注:Docker与Jenkins可以各自单独使用,也可以联合使用。
声明:浏览此博客,最好先掌握一些Docker、Jenkins的基础知识。本文不会讲Docker、Jenkins如何安装等基本知
识,相关基础知识可参考《程序员成长笔记(三)》第七章第五节。
环境说明:
注:为了避免不必要的麻烦,此两台机器的防火墙都是关闭了的;如果不想关闭防火墙,那么只开放需要用到的端
口也行。
准备工作之10.8.109.76上准备好对应的运行jar包的容器:
第一步:从Docker官方仓库搜索镜像docker search justrydeng
注:此镜像是本人制作并上传到仓库中的;所以如果想自己做同样功能的镜像,那么可以参考本人的这篇博客
https://blog.csdn.net/justry_deng/article/details/84064697。
第二步:docker pull justrydeng/common-run-jar抓取(下载)此镜像
第三步:以该镜像为基础,根据项目端口,定制化生成docker容器
docker run -p 8080:8080 --name jenkins-docker-test -d justrydeng/common-run-jar
注:如果在执行此步骤时,出现了类似docker: Error response from daemon: driver这样的错误,那么需要
systemctl restart docker重启一下Docker。
说明:因为知道要运行的jar包需要的端口为docker中的8080,所以本人将docker中的8080端口,与宿主机的端
口(这里干脆也8080)映射起来。其中,指令-p 8080/8080里,前面的8080为宿主机端口,后面的8080为容
器端口。
此时,我们已经创建了一个名为jenkins-docker-test的容器了。如果此时我们只想在docker中运行jar包的话,那么只需将xxx.jar包改名为app.jar,放入jenkins-docker-test容器的/jarAppDir/目录下,再start启动容器即可实现docker中运行jar包了。如果需要更新jar包,那么需要:第一步:stop该容器,第二步:以新的app.jar替换容器中旧的app.jar,第三步:再次start启动该容器即可。
准备工作之安装Push Over SSH插件、配置远程Linux:
说明:由于涉及到了一个Linux连接另一个Linux,所以我们需要安装辅助插件。
第一步:进入【系统管理】>【插件管理】,安装Push Over SSH插件
注:安装此插件时,会自动先安装Push Over;如果不自动安装Push Over的话,那么需要我们先手动安装Push Over,
然后再安装Push Over SSH,否者Push Over SSH的安装可能会出问题。
第二步:安装Push Over SSH后,进入【系统管理】>【系统设置】
点击【新增】
点击【高级】
填写连接信息:
提示:如果配置有SSH公钥、私钥认证的话,那么可以不选用户名、密码认证的方式;本人为了省事,直接使用了账号密
码进行认证。
测试一下:
Success说明远程连接Linux配置成功了。
注:如果后面需要连接多个机器,那么需要多次进行第二步配置。
Jenkins结合Docker(处于不同机器上的集成)示例:
第一步:新建一个maven风格的任务
第二步:配置各个参数
注:如果这里配置指定了Local module directory目录的话,那么后面的mvn打包指令需要切换到此目录下。
Push Over SSH的Source file也要对应上。
【Pre Steps】此处完成项目打包操作
【构建后操作】此处完成将新的jar包推送至其他Linux上,并编写Exec command指令,让目标Linux执行相关指令。
对上图说明:
Name:是一个下拉选项,选择的是我们在前面准备工作中配置好了的Push Over SSH机器。
Source file:是Jnekins所在机器上的要进行拷贝的文件;
此处填写相对路径。相对的Base(基)路径为:Jenkin主目录下workspase目录下的任务同名文件夹中。
如:Jenkins主目录为/var/lib/jenkins,任务名为【jenkins-docker-不同机器中】,那么这里Source file
就应该填相对/var/lib/jenkins/workspace/jenkins-docker-不同机器中/的相对路径。
Remote directory:是远程Linux上的文件夹(无则自动创建),会将Source file指向的文件(含该文件所涉及的
文件夹),复制到该文件夹中;如:Source file为target/abc.jar,Remote directory为/myjar,那么
拷贝后,远程Linux上该jar包的位置为/myjar/target/abc.jar。
Exec command:远程Linux要执行的shell指令。
填写完成后,应用保存,构建该任务!
第三步:访问测试http://10.8.109.76:8080/jenkins/test?name=张三
修改源代码为:
并提交至SVN,然后在10.8.109.60上重新构建Jenkins任务,最后再次访问http://10.8.109.76:8080/jenkins/test?name=张三
由此可见:Jenkins与Docker位于不同台电脑上的联合使用,演示成功!
^_^ 如有不当之处,欢迎指正
^_^ 参考链接
https://www.cnblogs.com/zhaojiankai/p/7828181.html
https://www.cnblogs.com/zz0412/p/jenkins_jj_10.html
https://www.cnblogs.com/jager/p/5986563.html
https://www.cnblogs.com/wangqianqiann...m_medium=referral
^_^ 参考书籍
《循序渐进学Docker》,李金榜 尹烨 刘天斯等 著
《Jenkins权威中文指南》,Jobn Ferguson Smart 著 郝树伟 于振苓 熊熠 译
^_^ 本文已经被收录进程序员成长笔记,笔者JustryDeng
更多推荐
所有评论(0)