本文介绍利用docker、docker gitlab/gitlab-ce、docker Jenkins 来实现CI环境
1.安装docker 参照[url=http://fengyilin.iteye.com/admin/blogs/2351357]docker install[/url]
2.安装gitlab参照[url=http://fengyilin.iteye.com/admin/blogs/2351357]docker gitlab install[/url]
3.安装Jenkins参照[url="http://fengyilin.iteye.com/blog/2353147"]docker jenkins install[/url]
4.在Jenkins中配置自己的项目
[list]
[*]在Jenkins中创建新的item
[img]http://dl2.iteye.com/upload/attachment/0122/7322/c1629fc0-84be-3eb8-aa01-746f9c7271e1.png[/img]
[*]在Jenkins配置项目源码路径
[img]http://dl2.iteye.com/upload/attachment/0122/7324/09629da0-b41e-3550-9bac-0c6e776077d0.png[/img]
所选Credentials必须有访问gitlab上对应工程的权限。
[*]在Jenkins配置自动执行策略(触发器),我们想配置成每次gitlab上项目有提交、mearge请求后都自动把最新的代码重新打包,所以此处只需把Poll SCM打开就可以了
[img]http://dl2.iteye.com/upload/attachment/0122/7326/72ed9315-af04-3a20-be78-ff36e8b2f2d7.png[/img]
[*]在Jenkins配置打包执行命令,注意maven工程默认是mvn命令执行,所以我们在build中只需输入我们要执行的mvn goals 就可以了,不用加mvn
[img]http://dl2.iteye.com/upload/attachment/0122/7328/c3a6c012-080d-3bc3-9b90-b41df75bbd3b.png[/img]
[*] 在gitlab项目中配置webhook
[img]http://dl2.iteye.com/upload/attachment/0122/7330/c25d1f83-f120-3515-9106-97bc2a42b69f.png[/img]
[*] webhook创建成功后点击,test然后到Jenkins上刚创建的item中,会发现Jenkins已经在自动帮我们打包了,之后当gitlab上代码有变更时都会自动重新打包
[img]http://dl2.iteye.com/upload/attachment/0122/7332/9b422777-0f07-3075-a015-b11f9358bb4a.png[/img]
[/list]
5.jenkins 实现参数化构建
当我们在git上有很多分支的时候,在构建的时候可以自主选择构建的版本
5.1 安装插件 extensible-choice-parameter.jpi
5.2 对jenkins工程追加参数化构建
[img]http://dl2.iteye.com/upload/attachment/0126/0708/c3cd9ddd-d1c0-3b0c-a6c0-ea19c6979e69.jpg[/img]
红色框中是对应构建工程的git地址
5.3 效果图
追加完后 原来的立即构建就变成了 build with parameters
[img]http://dl2.iteye.com/upload/attachment/0126/0712/934fd881-4ab8-33bb-912f-9c802436edd5.jpg[/img]
下拉列表中是自己工程对应的版本号,选择后再构建,另外在 源码管理 选择分支构建处写上此处设定的变量名称
[img]http://dl2.iteye.com/upload/attachment/0126/0714/1e55e4b5-2634-3d02-bdf2-601e60480cf0.jpg[/img]
[img]http://dl2.iteye.com/upload/attachment/0126/0716/f33bb791-6ebf-3d3e-942e-2a90414a5d84.png[/img]
6.触发下游工程,并且传入当前工程中选定的分支版本
6.1 安装插件 pam-auth.jpi,run-condtion.jpi,conditional-buildstep.jpi,parameterized-trigger.jpi
6.2 追加post steps
[img]http://dl2.iteye.com/upload/attachment/0126/0710/3519613f-8c8d-317e-871d-fff321cc4910.jpg[/img]
这样当前工程构建完成后会把选定的分支版本号传递到子工程中
7.直接在jenkins中打镜像,采用将宿主机docker.sock挂载到jenkins镜像内部的方式,而不是docker in docker 的方式
1.安装docker 参照[url=http://fengyilin.iteye.com/admin/blogs/2351357]docker install[/url]
2.安装gitlab参照[url=http://fengyilin.iteye.com/admin/blogs/2351357]docker gitlab install[/url]
3.安装Jenkins参照[url="http://fengyilin.iteye.com/blog/2353147"]docker jenkins install[/url]
4.在Jenkins中配置自己的项目
[list]
[*]在Jenkins中创建新的item
[img]http://dl2.iteye.com/upload/attachment/0122/7322/c1629fc0-84be-3eb8-aa01-746f9c7271e1.png[/img]
[*]在Jenkins配置项目源码路径
[img]http://dl2.iteye.com/upload/attachment/0122/7324/09629da0-b41e-3550-9bac-0c6e776077d0.png[/img]
所选Credentials必须有访问gitlab上对应工程的权限。
[*]在Jenkins配置自动执行策略(触发器),我们想配置成每次gitlab上项目有提交、mearge请求后都自动把最新的代码重新打包,所以此处只需把Poll SCM打开就可以了
[img]http://dl2.iteye.com/upload/attachment/0122/7326/72ed9315-af04-3a20-be78-ff36e8b2f2d7.png[/img]
[*]在Jenkins配置打包执行命令,注意maven工程默认是mvn命令执行,所以我们在build中只需输入我们要执行的mvn goals 就可以了,不用加mvn
[img]http://dl2.iteye.com/upload/attachment/0122/7328/c3a6c012-080d-3bc3-9b90-b41df75bbd3b.png[/img]
[*] 在gitlab项目中配置webhook
[img]http://dl2.iteye.com/upload/attachment/0122/7330/c25d1f83-f120-3515-9106-97bc2a42b69f.png[/img]
[*] webhook创建成功后点击,test然后到Jenkins上刚创建的item中,会发现Jenkins已经在自动帮我们打包了,之后当gitlab上代码有变更时都会自动重新打包
[img]http://dl2.iteye.com/upload/attachment/0122/7332/9b422777-0f07-3075-a015-b11f9358bb4a.png[/img]
[/list]
5.jenkins 实现参数化构建
当我们在git上有很多分支的时候,在构建的时候可以自主选择构建的版本
5.1 安装插件 extensible-choice-parameter.jpi
5.2 对jenkins工程追加参数化构建
[img]http://dl2.iteye.com/upload/attachment/0126/0708/c3cd9ddd-d1c0-3b0c-a6c0-ea19c6979e69.jpg[/img]
红色框中是对应构建工程的git地址
5.3 效果图
追加完后 原来的立即构建就变成了 build with parameters
[img]http://dl2.iteye.com/upload/attachment/0126/0712/934fd881-4ab8-33bb-912f-9c802436edd5.jpg[/img]
下拉列表中是自己工程对应的版本号,选择后再构建,另外在 源码管理 选择分支构建处写上此处设定的变量名称
[img]http://dl2.iteye.com/upload/attachment/0126/0714/1e55e4b5-2634-3d02-bdf2-601e60480cf0.jpg[/img]
[img]http://dl2.iteye.com/upload/attachment/0126/0716/f33bb791-6ebf-3d3e-942e-2a90414a5d84.png[/img]
6.触发下游工程,并且传入当前工程中选定的分支版本
6.1 安装插件 pam-auth.jpi,run-condtion.jpi,conditional-buildstep.jpi,parameterized-trigger.jpi
6.2 追加post steps
[img]http://dl2.iteye.com/upload/attachment/0126/0710/3519613f-8c8d-317e-871d-fff321cc4910.jpg[/img]
这样当前工程构建完成后会把选定的分支版本号传递到子工程中
7.直接在jenkins中打镜像,采用将宿主机docker.sock挂载到jenkins镜像内部的方式,而不是docker in docker 的方式
docker run -i -t -d -u root --name jenkins -p 8080:8080 -p 5000:5000 -v /jenkins/data/.m2:/root/.m2 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /jenkins/data:/var/jenkins_home -v /soft/jdk1.8:/var/local/jdk1.8 -v /home/data/soft/apache-maven-3.3.9:/var/local/apache-maven-3.3.9 -v /etc/localtime:/etc/localtime -v ./timezone:/etc/timezone jenkins