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

容器的管理可以选择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镜像的时候没有出现这类问题) 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容