设为首页 收藏本站
查看: 989|回复: 0

[经验分享] 基于Docker容器的,Jenkins、GitLab构建持续集成CI 之一 Jenkins容器构建

[复制链接]

尚未签到

发表于 2018-1-9 15:23:38 | 显示全部楼层 |阅读模式
  一、场景:
  开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布。
  二、准备:
  基于Docker,创建一个私有GitLab的容器,创建一个jenkins的容器
  三、步骤
  1、构建Jenkins容器
  Jenkins容器安装Jenkins的rpm包,Jenkins依赖 JDK,所以需要在Jenkins的容器中安装配置jdk,本人使用jdk1.8,同时需要Jenkins的容器调用maven的打包命令,所以也需要配置安装maven,本人使用maven 3.3.9。
  a.通过Dockerfile构建一个jenkins容器,基于centos7的镜像。
  

这里不推荐将一个基础镜像一次性打包成完整的应用镜像,建议构建三层镜像模型。  
所谓三层镜像就是,基础镜像,中间件镜像,应用镜像。例如我要构建一个Jenkins 的镜像,打包一个基于Centos7 和一些常用工具的镜像就是基础镜像,例如叫Centos7-base。然后这里Jenkins依赖Java和Maven,所以在基于Centos7-base的基础上安装配置java及maven后,再打包的镜像为中间件镜像,例如叫Centos7-jdk8-mvn3,这层中间件的镜像我们为来的复用会很高,以后只要有基于java1.8和maven3的,就可以直接使用这个镜像进行构建。最后我们再在Centos7-jdk8-mvn3的基础上安装配置jenkins,最后打包运用在生产环境。
  

  

  b.构建基础镜像,整合jdk及mvn。配置PATH ,安装所需要的工具,Dockerfile如下:
  

#base on centos 7 image  

  
FROM daocloud.io/centos:7
  
MAINTAINER hoewon
  
LABEL JDK \ 1.8
  

  
COPY jdk1.8 /usr/local/jdk1.8/  \
  maven /usr/local/maven/
  

  
RUN yum install -y openssh-server openssh-clients git
  

  
RUN yum install -y iproute  net-tools
  

  
ENV JAVA_HOME /usr/local/jdk1.8
  

  

  
ENV PATH $JAVA_HOME/bin:$PATH
  

  
EXPOSE 8080
  

  

  
ENTRYPOINT /bin/bash
  

  

将要复制进镜像里的jdk和maven文件放到与Dockerfile相同的目录下  

  

  执行命令打包镜像
  

#最后 . 是当前目录的意思,不可省略,或自定义Dockerfile所在目录  

  
docker build -t repo/name:tag  .
  

  
#成功后查看本地镜像
  

  
docker images
  

  

  c.通过基础镜像安装jenkins,也是通过Dockerfile
  

#A jenkins 2.7.4 on centos 7 image  
#基于刚才做好的基础镜像
  
FROM 127.0.0.1:5000/env/centos7-jdk8-mvn:1.3
  
MAINTAINER hoewon
  
LABEL JDK1.8 \ Jenkins-2.7.4
  
#复制jenkins rpm至镜像
  
COPY jenkins.rpm /usr/local/
  

  
#创建jenkins用户,并更改密码
  

  
RUN useradd jenkins && echo "jenkins password"  > passwd jenkins --stdin
  

  
#安装jenkins
  

  
RUN rpm -ivh /usr/local/jenkins.rpm
  

  
#更改jenkins安装文件的所有者
  

  
RUN rpm -ql jenkins | xargs chown -R jenkins:jenkins
  

  
#创建jenkins日志文件
  

  
RUN touch /usr/lib/jenkins/jenkins-logs
  

  
#更改日志文件所有者
  

  
RUN chown jenkins:jenkins /usr/lib/jenkins/jenkins-logs
  

  
#曝光8080端口
  

  
EXPOSE 8080
  

  
#启动容器时使用jenkins用户
  

  
USER jenkins
  

  
#定义用户空间为工作空间
  

  
WORKDIR /home/jenkins
  

  
#启动容器时启动jenkins
  

  
ENTRYPOINT java -jar /usr/lib/jenkins/jenkins.war &> /usr/lib/jenkins/jenkins-logs
  

  

  d.运行jenkins容器,这里需要将container的网络设置跟GtiLab同网络的环境下

查看
  

# --net 指定docker的网桥,  
docker run -idt --name jenkins -p 8888:8080 --net mygitlib_default repo/jenkins_img:tag  /bin/bash
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433269-1-1.html 上篇帖子: Jenkins+Ant+TestNG+Testlink自动化构建集成 下篇帖子: jenkins学习 02 jenkins安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表