• (一)jenkins+git+docker


    目录

    一、发布流程设计

    1、工作流程

    2、环境规划如下

    二、部署Git仓库

    1、创建Git用户并设置密码

    2、创建仓库

    3、免密访问

    4、在jenkins那台机上做ssh认证

    三、准备Jenkins环境

    1、       安装Java环境

    2、安装jenkins

    四、安装Docker

    1、官网安装(比较慢

    2、清华源安装docker-ce

    五、部署私有镜像仓库

    1、registry私有镜像仓库

    2、测试registry可用性

    六、构建Tomcat基础镜像

    1、安装JDK

    2、Tomcat基础镜像Dockerfile

    3、构建镜像并上传到registry

    4、查看镜像仓库的images

    5、检查镜像能否访问

    七、Jenkins配置全局工具配置

    1、安装Git

    2、安装maven

    八、Jenkins安装必要插件

    1、Jenkins插件

    2、 配置SSH插件

    九、上传JAVA项目代码到Git仓库

    1、从Github拉取JAVA系统solo:

    十、Jenkins创建项目并发布测试

    1、主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目

    2、“General”动态获取Git仓库tag,与用户交互选择Tag发布

    3、指定项目Git仓库地址

    4、设置maven构建命令选项

    5、在Jenkins本机镜像构建与推送到镜像仓库,并SSH远程连接到Docker主机使用推送的镜像创建容器  

    6、blog-yehui项目已配置完成,开始构建:

     

     

     

     

     

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程。

    一、发布流程设计

     

     

    1、工作流程

    1. 开发人员提交代码到Git版本仓库;
    2. Jenkins人工/定时触发项目构建;
    3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;
    4. Jenkins在Docker主机创建容器并发布。

    2、环境规划如下

    角色

    IP

    Jenkins/Docker

    192.168.22.132

    Docker

    192.168.22.133

    Git/Registry

    192.168.22.134

    操作系统:CentOS7.4

    二、部署Git仓库

    yum install git -y

    1、创建Git用户并设置密码

    useradd git

    passwd git

    2、创建仓库

    mkdir -p /home/git/yehui.git

    cd /home/git

    git --bare init yehui.git

    chown -R git:git yehui.git

    3、免密访问

    cd /home/git

    mkdir -p .ssh

    chmod 700 .ssh

    touch .ssh/authorized_keys

             chmod 600 .ssh/authorized_keys

    chown -R git:git .ssh

    4、在jenkins那台机上做ssh认证

    ssh-keygen -t rsa -C test.name@email

    ssh git@192.168.22.134 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    5、访问创建的这个仓库

    git clone git@192.168.22.134:/home/git/yehui.git

     

    三、准备Jenkins环境

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于代码编译、部署、测试等工作。 Jenkins也是一个跨平台的,大多数主流的平台都支持,而且安装很简单,我们这里以部署war包方式安装它。 

    官网下载地址:https://jenkins.io/download/ 

    如图点击下载最后一个Generic Java package(war):

     

    Docker启动jenkins

      docker run 
      --rm 
      -u root 
      -p 8080:8080 
      -v /data/jenkins-data:/var/jenkins_home 
      -v /var/run/docker.sock:/var/run/docker.sock 
      -v "$HOME":/home 
      jenkinsci/blueocean

     

    docker ps         查看容器ID

    docker exec -it 容器id bash
    cat /var/jenkins_home/secrets/initialAdminPassword             查看密码,如果忘了的话;

    1、 安装Java环境

    tar zxf jdk-8u45-linux-x64.tar.gz

    mv jdk-8u45-linux-x64 /usr/local/jdk1.8

    vi /etc/profile

    JAVA_HOME=/usr/local/jdk1.8

    PATH=$PATH:$JAVA_HOME

    export JAVA_HOME PATH

    source /etc/profile

    2、安装jenkins

    在192.168.22.132主机安装Jenkins,下载Tomcat二进制包将war包到webapps下即可:**

    wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

    wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz

    tar zxf apache-tomcat-8.5.32.tar.gz

    mv apache-tomcat-8.5.32 /usr/local/tomcat-jenkins

    rm /usr/local/tomcat-jenkins/webapps/* -rf

    unzip jenkins.war -d /usr/local/tomcat-jenkins/webapps/ROOT

    cd /usr/local/tomcat-jenkins/bin/

    ./startup.sh

    tail ../logs/catalina.out -f

    ... Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation:

    a5f1f7c167fd4b8ab62f9497d32d97db

    This may also be found at: /root/.jenkins/secrets/initialAdminPassword ...

    部署成功,访问Jenkins:http://ip:8080

    第一步:输入上面日志输出的密码:a5f1f7c167fd4b8ab62f9497d32d97db,或者从本机/root/.jenkins/secrets/initialAdminPassword文件获取,点击继续

    第二步:点击“选择插件来安装”

    第三步:保持默认,点击继续

    第四步:创建管理员用户,保存并完成

    第五步:设置Jenkins访问地址,保持默认,点击保存完成

    安装完成,开始使用Jenkins:

     

    四、安装Docker

     

    在192.168.22.132/192.168.22.133/192.168.22.134主机安装Docker,如下:

    1、官网安装(比较慢)

    1、安装依赖包

    yum install -y yum-utils device-mapper-persistent-data lvm2

    2、添加Docker软件包源:

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    3、安装Docker CE

    yum install docker-ce -y

    4、配置加速器

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io

    5、启动并开机启动

    systemctl start docker

    systemctl enable docker

     

    2、清华源安装docker-ce

    1、如果你之前安装过 docker,请先删掉

    sudo yum remove docker docker-common docker-selinux docker-engine

    2、安装一些依赖

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

    3、把软件仓库地址替换为 TUNA:

    sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

    4、最后安装:

    sudo yum makecache fast

    sudo yum install docker-ce

    5、配置加速器

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://bc437cce.m.daocloud.io

    6、启动并开机启动

    systemctl start docker

    systemctl enable docker

     

    五、部署私有镜像仓库

    1、registry私有镜像仓库

    Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单。

    在192.168.22.134部署:

    docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

    2、测试registry可用性

    由于Docker CLI默认以HTTPS访问,而部署的registry并未提供HTTPS,因此,需要在pull镜像的Docker主机(192.168.22.132,192.168.22.133)添加HTTP可信任:记住别替换掉"registry-mirrors";

    vi /etc/docker/daemon.json

    {"insecure-registries":["192.168.22.134:5000"]}

    service docker restart

     

    六、构建Tomcat基础镜像

    JAVA程序必须有JDK环境才可以运行,为了减少镜像大小及提高性能,这里直接把JDK放到宿主机上,容器以挂载形式使用,在192.168. 22.133 docker主机操作;

    1、安装JDK

    tar zxvf jdk-8u45-linux-x64.tar.gz

    mv jdk-8u45-linux-x64 /usr/local/jdk1.8

    vi /etc/profile

    JAVA_HOME=/usr/local/jdk1.8

    PATH=$PATH:$JAVA_HOME

    export JAVA_HOME PATH

    source /etc/profile

     

    2、Tomcat基础镜像Dockerfile

    vim Dockerfile FROM centos:7

    MAINTAINER www.aliangedu.com

    ENV VERSION=8.5.32

    ENV JAVA_HOME /usr/local/jdk

    RUN yum install wget -y

    RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz &&

    tar zxf apache-tomcat-${VERSION}.tar.gz &&

    mv apache-tomcat-${VERSION} /usr/local/tomcat &&

    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* &&

    mkdir /usr/local/tomcat/webapps/ROOT

    EXPOSE 8080

    CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

    3、构建镜像并上传到registry

    docker build -t 192.168.22.134:5000/tomcat-85 -f Dockerfile .

    docker push 192.168.22.134:5000/tomcat-85

    4、查看镜像仓库的images

    curl -XGET http://192.168.22.134:5000/v2/_catalog

    获取某个镜像的标签列表:

    curl -XGET http://192.168.22.134:5000/v2/tomcat-85/tags/list

    5、检查镜像能否访问;

    docker container run -d --name ttomcat -p 8080:8080 -v /usr/local/jdk1.8/:/usr/local/jdk  192.168.22.134:5000/tomcat-85

    返回404状态码是正确的,因为webapps目录下面的资源已被删除;

    七、Jenkins配置全局工具配置

    主页面 -> 系统管理 -> 全局工具配置

    指定JDK、Maven路径,Git保持默认:

     

     

     

    1、安装Git

    yum install git -y

    2、安装maven

    wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

    tar xzf apache-maven-*-bin.tar.gz -C /usr/local

    cd /usr/local

    ln -s apache-maven-* maven

    vi /etc/profile.d/maven.sh

             export M2_HOME=/usr/local/maven

    export PATH=${M2_HOME}/bin:${PATH}

    bash

    mvn -version

     

    八、Jenkins安装必要插件

    1、Jenkins插件

    主页面 -> 系统管理 ->管理插件:Git Parameter   SSH

     

     

    插件说明:

    • SSH:用于SSH远程Docker主机执行Shell命令
    • Git Parameter:动态获取Git仓库Branch、Tag

    2、 配置SSH插件

    第一步:先创建一个用于连接Docker主机的凭据。

    主页面 -> 凭据 -> 系统 -> 右击全局凭据 -> 添加凭据:

     

     

    输入连接Docker主机的用户名和密码:

     

    第二步:添加SSH远程主机

    主页面 -> 系统管理 -> 系统设置 -> SSH remote hosts:

     

    九、上传JAVA项目代码到Git仓库

    1、从Github拉取JAVA系统solo:

        git clone https://github.com/ZhaoUncle/solo.git

    cp -r solo/* yehui

    提交代码到Git仓库并创建tag:

      cd yehui

    touch src/main/webapp/a.html

    git add .

    git commit -m “a”

    创建标签:

    git tag 1.0.0

    推送到Git服务器:

    git push origin 1.0.0

     

    十、Jenkins创建项目并发布测试

    1、主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目

     

     

    注意:如果没有显示“构建一个Maven项目”选项,需要在管理插件里安装“Maven Integration plugin”插件。

    配置Git参数化构建:

     

     

     

    2、“General”动态获取Git仓库tag,与用户交互选择Tag发布

     

    3、指定项目Git仓库地址

     

     

     

    注意:修改*/master为$Tag,Tag是上面动态获取的变量名,表示根据用户选择打代码版本。

    4、设置maven构建命令选项

    clean package -Dmaven.test.skip=true

     

    利用pom.xml文件构建项目。

    5、在Jenkins本机镜像构建与推送到镜像仓库,并SSH远程连接到Docker主机使用推送的镜像创建容器

     

     

     

    上图中,在Jenkins主机执行的Shell命令如下:

     

    REPOSITORY=192.168.22.134:5000/yehui:${Tag}

    # 构建镜像

    cat > Dockerfile << EOF

    FROM 192.168.22.134:5000/tomcat-85:latest

    RUN rm -rf /usr/local/tomcat/webapps/ROOT

    COPY target/*.war /usr/local/tomcat/webapps/ROOT.war

    CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

    EOF

    docker build -t $REPOSITORY .

    # 上传镜像

    docker push $REPOSITORY

     

    上图中,SSH远程Docker主机执行的Shell命令如下:

     

    REPOSITORY=192.168.22.134:5000/yehui:${Tag}

    # 部署

    docker rm -f blog-yehui |true

    docker image rm $REPOSITORY |true

    docker container run -d --name blog-yehui -v /usr/local/jdk1.8: /usr/local/java -p 88:8080 $REPOSITORY

     

    注:容器名称blog-yehui,暴露宿主机端口88,即使用宿主机IP:88访问blog-yehui项目。

    6、blog-yehui项目已配置完成,开始构建:

    选择tag,开始构建:

     

     

     

     

    点击左下角构建历史里,右击第一个查看控制台输出:

     

     

     

    浏览器访问yehui项目:http://192.168.22.133:88

  • 相关阅读:
    VSTS知识整理 荣
    扯淡 荣
    我安装了SQL Server2005后,为什么在IIS的默认站点下面并没有发现Reports? 荣
    ERROR 32000 错误 荣
    vs2012程序打包部署下载InstallShield2015LimitedEdition的下载及安装打包整套教程
    微信小程序之保持登录状态即session不改变
    微信小程序如何调用API实现数据请求wx.request()
    改版kingsmotor.cn用到的参考网站
    第一个css+div网页(太弱智了)
    超级搞笑的笑话
  • 原文地址:https://www.cnblogs.com/UncleZhao/p/9493299.html
Copyright © 2020-2023  润新知