美文网首页运维工具docker运维监控
Jenkins+maven+docker 解决项目持续集成

Jenkins+maven+docker 解决项目持续集成

作者: szgl_lucifer | 来源:发表于2019-02-18 15:25 被阅读62次

    容器的管理可以选择rancher,jenkins可以在rancher上进行安装,本文先不介绍rancher,安装jenkins我选用的是docker安装。以后再介绍rancher的整体管理。

    1:拉取jenkins镜像。 从dockerhub上拉取jenkins镜像,我拉取的是latest版本

    docker pull jenkins

    2:建立jenkins_home文件夹,启动jenkins时挂载这个文件夹后续配置方便

    mkdir -p /docker/jenkins_home

    3:因为 jenkins user - uid 1000,所以这里我们更改目录用户组及用户(更详细的可见:https://github.com/jenkinsci/docker/blob/master/README.md#usage

    chown -R 1000:1000 /docker/jenkins_home

    4:需要在jenkins里用docker命令,把jar包打成镜像文件,可因为jenkins我们是用docker启动的,这里权限会有问题,docker.sock不让访问,网上有一些处理办法,我把我使用的写下来供大家参考

    新写一个Dockerfile文件

    FROM jenkins

    LABEL maintainer="sunlin1111@163.com"

    USER root

    ARG dockerGid=999

    RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group

    USER jenkins

    在Dockerfile文件目录下,运行docker生成镜像命令:

    docker build -t "myjenkins" .

    查看生成的镜像

    docker images

    5:给docker.sock赋读写权限

    chmod 777 /var/run/docker.sock

    6:运行jenkins容器

    docker run -d --restart unless-stopped --name jenkins -p 30000:8080 -p 30001:50000 -v /docker/jenkins_home:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 myjenkins

    -v /usr/bin/docker:/usr/bin/docke

    -v /var/run/docker.sock:/var/run/docker.sock

    -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

    这三个挂载是解决在jenkins上可以使用docker命令

    查看启动日志:

    docker logs -f jenkins

    7:启动成功后可以登陆jenkins的前台管理页面

    http://192.168.155.44:30000

    第一次登陆需要注册下,按照页面提示正常注册就可以。

    页面提示的路径,因为我的本机挂载的,所以在本机的路径是/docker/jenkins_home/secrets/initialAdminPassword

    注册完成的页面是:

    8:安装maven

    因为jenkins本身不带maven插件,所以需要自己安装下,由于我们的虚拟机中是没有直接安装maven软件的,我们可以在全局工具配置中安装maven, 选择一个合适的版本,勾选自动安装,之后直接保存,需注意的是,现在jenkins并不会立即给你安装maven软件

    接下来我们在插件管理中查找maven插件,我们选择好maven integration插件,然后点击直接安装

    Maven插件我已经安装上了

    9:配置maven

    大家都知道我们要从maven库下载代码需要配置setting.xml,用jenkins时也需要把setting.xml配置好。

    在目录/docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件。

    10:创建一个新任务

    在首页点击新建任务

    然后选择构建一个maven项目,任务名称我一般都写入项目名称

    点击构建一个maven项目,进入到项目配置页面。

    在源码管理中输入项目git仓库地址 配置5分钟检查一次,当git发生变化时,会自动启动构建 Goals and options 填写mvn命令(clean package -DskipTests=true)

    全部配置好后点击保存按钮

    点击立即构建按钮,这时就会先从git上下载项目源代码,然后进行代码编译。点击控制台输出可以看到输入日志。

    这时maven部份就全部完成了,可以把git私有仓库上的源代码打成jar包。

    打包好的文件在虚拟机上的路径:

    11:配置docker

    下载docker插件,在jenkins中安装docker插件,在系统管理->插件管理里找到并安装如下插件(Docker plugin):

    如果成功安装插件,你会在你的系统管理菜单里看见Docker菜单:

    然后在系统管理->系统设置中的最下面你会看到新增一个Docker云:

    把前面挂载的docker.sock 文件写入Docker Host URI 中:unix:///var/run/docker.sock,可以点击TestConnection按钮进行测试是否连接成功。

    连接成功后,可以在系统管理菜单里进入Docker菜单,看到如下界面,点击docker进入后,里面会向你展示你宿主机上的所有镜像以及容器:

    然后返回任务页面,选择配置,在Post Steps里把docker建立镜像的命令输入进去:

    在Post Steps里添加一个Build/Publish Docker Image选项,Directory for Dockerfile填写. (就一个点),Cloud选择先前添加docker云配置的名称,然后输入镜像名192.168.155.100/restful-api-demo

    点击保存,然后再构建工程,会发现docker构建镜像的命令已经执行了。

    Dockerfile文件是放在项目的根目录下

    在虚拟机上执行docker images命令可以看到新创建好的镜像

    12:docker镜像放到私有docker仓库

    在Post Steps这部中,需要给Push image打条,然后配置Registry Credentials(登陆私有docker仓库的用户名、密码),点击保存。

    配置好后,再次构建任务,最后就能看到项目成功的上传到了docker私服中。

    (我这里是用docker启动的jenkins,当在虚拟器上用docker login命令登陆过一次私有库后,会在根目录下生成一个.docker/config.json文件,我不清楚是否需要把这个文件放到jenkins容器中的/var/jenkins_home目录下,让容器中的环境可以找到docker上传地址。这块的测试,我用的是yum安装的jenkins,push镜像的时候没有出现这类问题) 

    相关文章

      网友评论

        本文标题:Jenkins+maven+docker 解决项目持续集成

        本文链接:https://www.haomeiwen.com/subject/etzueqtx.html