Jenkins(结合Docker)任务(Jenkins与Docker位于不同机器上)

注: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


版权声明:本文为justry_deng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>