zoukankan      html  css  js  c++  java
  • 基于Docker容器的,Jenkins、GitLab构建持续集成CI 之一 Jenkins容器构建

    摘要: 一、场景: 开发者将代码提交(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。

    一、场景:
    开发者将代码提交(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
    

    用云栖社区APP,舒服~

    原文链接

  • 相关阅读:
    03server
    Storm介绍(一)
    storm总结
    Spring源码分析(七)扩展接口BeanPostProcessors源码分析
    技术大牛养成指南
    02装配bean
    02Activity
    maven构建项目
    IDEA使用
    从GIt上导出Maven项目
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/6928857.html
Copyright © 2011-2022 走看看