Step by step and focus on explaining to build a docker jenkins

 

  Mirror image version: jenkins / jenkins 

  Reference article: https://www.jianshu.com/p/12c9a9654f83

  1, we must docker pull jenkins / jenkins, do not docker pull jenkins, jenkins too old version is no longer maintained. (Thanks Articles: https://www.jianshu.com/p/9a3814c88bf2 )

  

  2, to view mirror docker images of pulling.

   

  3. Create a folder my_jenkins / under www, mount the file used to store Jenkins.

  

  4, to give permission for the my_jenkins folder.

  

  Create a folder for the default permissions of the current registrants, I created here is the root, so also for root privileges, but requires that the container rights jenkins jenkins, so here need to my_jenkins given jenkins rights. (About adding permission, we would like to thank at this article: https://blog.csdn.net/fenglailea/article/details/82698596 )

  

    5, jenkins start a container, named my_jenkins_2020 , file folder you created and mounted above the container. After the successful launch docker ps can view the already successful start jenkins container. And the default is mapped to 50,000 ports. 

docker run -d --name my_jenkins_2020 -p 8080:8080 --restart=always -e TZ="Asia/Shanghai" -e JENKINS_OPTS="--prefix=/my_jenkins" -e JENKINS_ARGS="--prefix=/my_jenkins" -v /etc/localtime:/etc/localtime:ro -v /www/my_jenkins:/var/jenkins_home jenkins/jenkins
参数解析:
-d 后台运行容器,并返回容器ID;
--name 为容器起一个容易区分且容易书写的名字
-p 映射宿主机端口到容器端口,宿主机端口:容器端口
--restart=always 机器重启时自动启动容器
-e       设定一些必须的环境变量。
          -e TZ="Asia/Shanghai" 设定时区为上海,强烈建议国内设定,否则容器内打印的所有日志时间都会差8小时。
          -e JENKINS_OPTS="--prefix=/my_jenkins" -e JENKINS_ARGS="--prefix=/my_jenkins" 设定jenkins反向代理的路径,非必选,如果是直接根目录或ip地址访问,则不需要添加,如果是nginx反向代理且不在根目录下,则必须,此处名字应与文件夹名称一致。此处特别感谢两篇文章:https://blog.csdn.net/whh18254122507/article/details/81783430https://www.jianshu.com/p/8315657465ac
-v       挂载宿主机文件到容器。本例三个分别为:
          -v /etc/localtime:/etc/localtime:ro 挂载宿主机时间,保持容器时间正确。
          -v /www/my_jenkins:/var/jenkins_home 绑定挂载文件

   

  6、浏览器中访问自己的centos宿主机ip:8080/my_jenkins 反向代理路径,则进入jenkins配置页面。

  

  上图中提示要去/var/jenkins_home/secrets/initialAdminPassword 中查看初始密码,但由于我们已经将对应文件夹挂载到宿主机了,所以可以直接在宿主机中查看 more /www/my_jenkins/secrets/initialAdminPassword ~~如下,则显示初始密码,每个人的都不同,请使用你自己的初始密码,将该值复制到上面的管理员密码中,点击“继续”。

  

  7、等待初始化完成,继续选择“安装推荐的插件”,开始安装默认插件,根据网速不同安装速度可能会很慢,耐心等待完成。

    

  我这K级龟速,大约1小时20分钟后。。。。

    

  创建账号,既然是来学习这篇文章的,多数是第一次使用,可以创建一个通俗的账号admin,密码也可以简单点,我这里也是admin,正式环境可不要这么随便哟~,邮箱必填,点击“保存并完成”,继续,点击“开始使用jenkins"进入。

    

  进入后我们选择左侧的”Manage Jenkins“,发现还是英文版的,需要重启下容器:docker restart my_jenkins_2020,并重新刷新你的jenkins页面,输入创建的账号密码。

    

  

    

 

  8、安装全局工具配置。本文不讲解 git方式获取代码,所以删除git配置。

    

  本文将以一个存储在svn下的srping mvc项目介绍搭建一个maven构建项目,所以我们需要安装jdk和maven全局工具。默认配置jdk已经安装在/usr/local/openjdk-8,我们只需改成手动配置即可,maven默认没有安装,我们选择自动安装。然后点击保存。

  

  

   9、插件管理。选择系统管理中的“插件管理”——> “可选插件” ——> 输入Maven Integration 过滤,选中多选框,点击底部的直接安装。耐心等待安装完成~~

     

  (非必选)同样的方式过滤安装Deploy to container 插件。该插件用于将项目发布到tomcat下,如果不需要的可以不安装。

   

   安装完成后选中“安装完成后重启jenkins” 。

    

   10、重启后我们创建第一个jenkins任务~~

      如果不进行上一步的maven插件安装,则无法创建maven项目,现在则可以啦。

    

  上面说了,本次我们构建的是svn上的项目,输入svn项目地址后需要绑定访问svn的账号。只需要输入账号密码保存即可,然后下拉菜单中便可以选择新添加的svn账号。

    

  Build 中配置构建方式,输入 clean install(也可以输入其它mvn构建方式,不需要输入mvn package)

  

 

  本篇我们的项目最终要放到tomcat里运行,上面我们已经安装了Deploy to container 插件,便是为此做的准备。最底部选择“添加构建后的操作步骤” ——> “Deploy war/ear to a container”。输入对应内容,此处tomcat URL为tomcat服务的地址,对应的账号为tomcat的访问账号,添加方式如上面的svn账号,不再重复。以上填写完毕后点击保存。

    

  

  回到主页后准备构建。任务后面的下拉菜单选择立即构建,构建开始左侧会有进度,点击进度条查看构建详情,

  

  正常应该就可以执行成功了,配置结束。

 

生活不止眼前的苟且,还有诗和远方~~
原文地址:https://www.cnblogs.com/jying/p/12173090.html
作者:一定会去旅行
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

  

  ~~~~ 手动分割线  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

  但由于我的项目用到了微软的 sqlserver 数据库(别问为什么,问就是必须,不得不,have to),而微软的 com.microsoft.sqlserver:sqljdbc4:jar 默认是不能从maven仓库找到的,所以构建中报错,需要手动添加sqljdbc4.jar到jenkins环境。

   

  11、解决以上问题。需要手动添加sqljdbc.jar 对应版本到jenkins容器中,首先docker jenkins 中虽然已经安装了maven,但是没有放到系统环境变量里,需要设置maven的环境变量才能使用mvn。

    A、将对应版本的sqljdbc.jar 上传到宿主机/www文件夹。(此处我已经上传了sqljdbc42.jar到宿主机,本文不详细讲如何获取并上传该文件)然后复制到docker jenkins容器。

    

    B、复制docker jenkins 的/etc/profile 文件到宿主机文件夹/www/my_jenkins。(为什么要复制到宿主机?因为docker jenkins 容器中默认不能使用vim,不想复制到本地也可以在docker jenkins容器中安装vim直接编辑,可以参考 https://www.cnblogs.com/jying/p/12082929.html 中的jenkins部分。)

    

    C、编辑复制来的profile文件,vi profile,在最后添加maven环境变量。(不会编辑的自己先学习下~~)因为我们用的是jenkins自动安装的maven,所以安装路径在/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3,版本改成自己上面安装maven插件时对应的版本。

    

    D、编辑完成后退出并保存,然后再复制回docker jenkins容器。((强烈建议且必须)同样的方式需要复制docker jenkins容器中的/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf/setting.xml 文件到宿主机,并修改其镜像为国内阿里镜像,再复制回jenkins容器。但由于我们已经将/var/jenkins_home挂载到宿主机/www/my_jenkins,所以可以直接修改宿主机的/www/my_jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf/setting.xml。) 

       

   <!-- 阿里云中央仓库 ,将此段代码放在setting.xml的mirrors内-->
    <mirror>
        <id>nexus-aliyun</id>
        <name>Nexus aliyun</name>
        <mirrorOf>central</mirrorOf>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

       最后以root用户权限登录进jenkins容器,此处注意登录角色,否则可能会提示没有权限。 

    

    E、使设置生效需要执行下:source profile,然后再查看mvn -v,已经有信息了。

    

    F、将sqljdbc.jar加入docker jenkins容器maven仓库。    

mvn install:install-file -Dfile=sqljdbc42.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0

这里记得改成自己的版本  -Dfile="jar包的绝对路径+完整文件名称版本"
此处假设你已经将sqljdbc.jar复制进docker jenkins容器文件夹/var/jenkins_home下。

   

   G、退出docker jenkins容器,再次回到页面重新构建maven项目。

   

 正常情况下应该可以了~~

 

 ~~~~~~~~~~ 手动分割线 ~~~~~~~~~~~~~~~~~~~~~~~~

 

  but,我的因为是自己搭建的vmware 虚拟机中centos7.7 ,结果又构建失败:Caused by: java.net.NoRouteToHostException: No route to host (Host unreachable) 

  

   网上查找原因,是防火墙问题,但是按照某些说法直接关掉防火墙后无法连接内网的svn了,,,那些失败的方法我就不贴出来误导大家了,,最后自己在虚拟机上手动添加了8080和8081端口到防火墙,再次构建,终于成功!!!

  

   

  配置完成!!!

  

  

 

Guess you like

Origin www.cnblogs.com/jying/p/12173090.html