Jenkins 搭建企业实战案例 (发布与回滚)

2023年 5月 4日 37.0k 0

让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。本次环境模拟一整套企业生产流程
Jenkins 搭建企业实战案例 (发布与回滚)
Jenkins
2019年04月24日
相关文章
Jenkins 前端自动发布 [git 钩子]
持续集成之Jenkins+Gitlab简介 [一]

  • Jenkins 搭建企业实战案例 (发布与回滚)一、Jenkins介绍及安装
  • 二、Jenkins 安装配置
  • 三、gitlab 安装及配置
  • 四、创建项目演示
  • 环境说明
    服务器IP 服务 备注 10.4.82.119 Jenkins 第一次配置不会的可以按照我的步骤来 10.4.82.120 gitlab、tomcat 测试环境tomcat端口8083 10.4.82.115 tomcat 测试环境tomcat端口8083 Jenkins发布回滚流程
    image_1d95jfdj78u08711tnhk871vnh97.png-189.1kB

    一、Jenkins介绍及安装

    安装和介绍都是老生常谈的内容了,说了N+1+2+3+4+5+.....的话题了,这里直接跳过了
    Jenkins yum安装https://www.abcdocker.com/abcdocker/3174
    Jenkins War安装https://www.abcdocker.com/abcdocker/2897

    二、Jenkins 安装配置

    安装完成后的界面如下
    image_1d7tvs410bn711sg1spk90hq1m9.png-80.8kB
    image_1d7u06a4hk1h3j51orl159t9hm.png-119.7kB
    Jenkins插件安装
    Jenkins主要依赖于插件化,我们进行插件的安装
    Maven Integration Maven编译插件
    Role-based Authorization Strategy 权限控制插件 ## 标题 ##
    AnsiColor 输出Log颜色优化插件
    安装插件的步骤不详细讲解了 https://i4t.com/3174.html详细介绍
    image_1d854mcf9vr3iv8euggbr0b1u.png-125.9kB
    image_1d855f3oa1ja91a3s11e21ctm8802r.png-139.3kB
    Jenkins 全局配置

    1.配置jdk环境
    下载
    wget http://down.i4t.com/jdk1.8.0_66.tar.gz
    $ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
    $ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
    $ vim /etc/profile
    export JAVA_HOME=/usr/local/jdk
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH
    $ java -version
    
    检查
    $ java -version
    java version "1.8.0_151"
    Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
    
    2.配置maven环境
    
    $ wget  http://down.i4t.com/apache-maven-3.6.1-bin.tar.gz
    $ tar xf apache-maven-3.6.0-bin.tar.gz
    $ mv apache-maven-3.6.0-bin.tar.gz /usr/local/
    $ ln -s /usr/local/apache-maven-3.6.0/ /usr/local/maven
    $ vim /etc/profile
    export M2_HOME=/usr/local/maven
    export PATH=${M2_HOME}/bin:$PATH
    $source /etc/profile
    验证
    $ mvn -v
    Apache Maven 3.6.0 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T03:58:13-04:00)
    Maven home: /usr/local/maven
    Java version: 1.8.0_151, vendor: Oracle Corporation
    Java home: /usr/local/jdk1.8.0_151/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
    

    我们需要配置Java环境,以及maven等
    123.png-274.9kB
    配置JDK环境
    image_1d8566suk837g6m1bqbb3u1git38.png-87.2kB
    配置Maven环境
    image_1d8568e0s1rhb14vuj5915e21g703l.png-48.4kB
    下面进行gitlab安装,用于上传测试代码,Jenkins基本上已经配置完毕!

    三、gitlab 安装及配置

    Gitlab安装目前只需要配置一个yum源,yum install 安装即可
    gitlab安装文档https://i4t.com/2041.html
    我这里提供了一份hello 的Java代码用于测试
    一共分为2步
    1.在gitlab web界面创建test项目
    2.将Java代码下载push到gitl

    代码下载
    wget http://down.i4t.com/hello-world-war-master.zip
    [root@abcdocker hello-world-war-master]# yum install -y git && git remote add origin http://10.4.82.120/root/test.git
    
    #这里需要在gitlab上创建项目,并且复制git地址进行push
    
    [root@abcdocker hello-world-war-master]# git push -u origin master
    Username for 'http://10.4.82.120': root
    Password for 'http://root@10.4.82.120':
    fatal: Authentication failed for 'http://10.4.82.120/root/test.git/'
    
    [root@abcdocker hello-world-war-master]# git push -u origin master
    Username for 'http://10.4.82.120': root
    Password for 'http://root@10.4.82.120':
    Counting objects: 16, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (11/11), done.
    Writing objects: 100% (16/16), 4.64 KiB | 0 bytes/s, done.
    Total 16 (delta 0), reused 0 (delta 0)
    To http://10.4.82.120/root/test.git
     * [new branch]      master -> master
    

    当我们将测试代码上传完毕后
    image_1d8583ndjd4j1mgm3ioteg10qh4s.png-198.9kB

    四、创建项目演示

    准备工作
    1.tomcat 地址相同 (多套情况)
    2.tomcat 端口相同 (多套情况)
    3.web 服务器添加tomcat重启脚本
    4.Jenkins - web免密 (Jenkins-tomcat服务器免密)
    5.修改好项目名
    进入Jenkins,进行创建项目
    12.png-307kB
    简单说一下,我这里环境的配置

    tomcat路径(多套环境只需要改后缀和端口)
    /usr/local/abcdocker-test
    
    tomcat端口 8083
    
    tomcat服务器  10.4.82.115  10.4.82.120
    我们进入82.115和82.120服务器,配置jdk和tomcat,设置端口
    
    配置Tomcat JDK
    wget http://down.i4t.com/jdk1.8.0_66.tar.gz
    $ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
    $ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
    $ vim /etc/profile
    export JAVA_HOME=/usr/local/jdk
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH
    $ java -version
    
    下载Tomcat
    wget wget http://down.i4t.com/apache-tomcat-8.5.39.tar.gz
    tar xf apache-tomcat-8.5.39.tar.gz
    mv apache-tomcat-8.5.39 abcdocker1-test
    
    #修改端口
    
    sed -i s#8080#8083#g abcdocker1-test/conf/server.xml
    ## 将默认端口修改为8083
    

    我们先访问默认tomcat,检查是否会因为JDK环境问题导致默认tomcat就无法启动
    访问地址ip:8083 tomcat安装配置参考
    image_1d8fg6l5u13ohh7mkrtpotkre9.png-364.7kB
    现在我们的tomcat测试基本上没有问题
    配置Jenkins
    1.配置Jenkins 参数化构建
    image_1d95f9cv41at41cf21c61c2c1ea99.png-83.6kB
    image_1d95fh5of1umb1kek1b441e701ntlm.png-133.6kB
    [ 1 ] 创建选项参数
    [ 2 ] 创建Git commit版本参数
    image_1d95fjqao1mo3lnv17i11nes1rjv13.png-57.6kB
    2.Git地址配置
    我们通过https://i4t.com/2041.html安装完gitlab之后,将代码上传完毕。这里需要输入项目的git地址
    温馨提示:我这里已经将测试代码上传到gitlab上,怎么上传代码看上面的步骤吧。
    image_1d95fsv1r1slv1vho5a613g5qg01t.png-245.8kB
    复制git地址之后需要配置一点,那就是gitlab的地址。有2种认证方式,一种是通过账号密码,在Jenkins上创建账号密码,另外就是通过key来认证。key认证实际上就是复制Jenkins服务器的ssh公钥到gitlab上的SSH key选项。 我这里以账号密码为主
    image_1d95fvua8lanu711l4lvdk1f222a.png-111.1kB
    配置完成后
    只要没有红色报错即可
    image_1d95g3pl0vn31tk21o9h1cqcloa2n.png-91.9kB
    3.日志代码高亮配置
    其他选项我们不配置,这里只配置一个日志输出高亮的参数。 没有的安装上面的插件
    image_1d95g7kiepuq19h3m0a1fg0l634.png-89.3kB
    4.maven编译参数配置
    我这里的编译参数就是maven默认的编译参数,具体不讲解了。每个公司的环境不一样

    clean package -Dmaven.test.skip=true
    测试Jenkins就用我这个配置就OK
    

    image_1d95g9fkj1p9scaj8lr6vc147m3h.png-41.8kB
    5.构建完执行脚本
    我们需要将构建完执行脚本点开,默认Jenkins不配置shell脚本,Jenkins只是将程序设置成war包,存储下来。这样并没有发布到web服务器上
    image_1d95gct6i1nmr1a212tc3aqvoo3u.png-62kB
    6.发布及滚回脚本
    脚本内容比较多,请直接下载查看

    wget http://down.i4t.com/abcdocker-jenkins.txt
    

    脚本解释
    image_1d95gufma16n21hv81hlqtna14d54b.png-272.5kB
    除了这几个要修改,我们还需要修改tomcat启动和重启脚本
    内容如下
    下载地址wget http://down.i4t.com/abcdocker-test 还需要添加权限+x

    #需要修改一下tomcat启动目录
    
    #!/bin/bash
    # description: Tomcat is a Java Servlet Container
    . /etc/profile
    TOMCAT_HOME=/usr/local/abcdocker1-test
    start () {
    TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
    if [ -z $TOMCAT_PID ];then
        /bin/bash $TOMCAT_HOME/bin/startup.sh
    else
        echo "$0 is  running"
    fi
    }
    stop () {
    TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
    if [ -z $TOMCAT_PID ];then
            echo "$0 is not running"
    else
            echo "shutting down $0"
            kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."
    fi
    }
    status () {
    TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
    if [ -z $TOMCAT_PID ];then
            echo "$0 is not running"
    else
            echo "$0 is running PID is $TOMCAT_PID"
    fi
    }
    case $1 in
    start)
    start
    #tail -f $TOMCAT_HOME/logs/catalina.out
    ;;
    stop)
    stop
    ;;
    status)
    status
    ;;
    restart)
    stop
    start
    #tail -f $TOMCAT_HOME/logs/catalina.out
    ;;
    *)
    echo "Usage:$0  {start|stop|status|restart}."
    ;;
    esac
    

    我们Jenkins点击保存save,现在Jenkins就配置完毕,我们进行测试
    tomcat需要启动正常
    启动目录和启动脚本都要写好
    image_1d95hkd0tf1r9621pvd1hiv1f8d4o.png-330.3kB
    访问验证结果
    image_1d8fg6l5u13ohh7mkrtpotkre9.png-364.7kB
    现在我们开始使用Jenkins发布
    1.发布前确认Jenkins和web做免密(我这里已经做了,不介绍) https://i4t.com/1353.html
    2.确保tomcat启动正常
    3.获取gitlab的git commit地址
    我们现在获取git commit地址
    git commit版本不区分分支,不一定必须在master分支上,其他分支也会有
    image_1d95hqq4719s65f6unb6801nug55.png-225kB
    image_1d95hsqr31v4q9p71gi1i5jp2r5i.png-141.2kB
    我这里只配置了test环境,我们就只演示test环境,其他环境脚本配置都差不多

    点击项目---->点击构建
    

    image_1d95i1ssiele386j5p148i17a45v.png-101.2kB
    点击小圆圈
    image_1d95i51cc1n756t2ds15o5h6j6c.png-228.7kB
    结果说明
    git拉代码
    image_1d95icrpn15qot3b1e0bdm1vsg6p.png-217.4kB
    Maven编译步骤
    image_1d95idvob1qoc1fcvuradtn74m76.png-266.2kB
    执行shell命令
    image_1d95ifjk0k871uboni8tshplb7j.png-248.5kB
    启动服务判断,如果有一台服务启动异常,将会暂停发布。通过nginx upstream_check_module会自动停止异常tomcat请求
    image_1d95igh8g12eb1oo1f631slbnkv80.png-235kB
    同时web服务器会自动在data目录创建备份
    发版完毕,在shell脚本部分我们后期可以修改成salt,不推荐使用Publish over SSH主要是由于配置麻烦,环境不好区分。要创建多个Jenkins,使用shell或者引用批量分发脚本最为简单
    image_1d95ikk3g11p01mnt1cig1ekv1mqv8d.png-203.3kB
    image_1d95im6lr1llj13191s8s1bo41l3r8q.png-95kB
    发布回滚脚本流程
    image_1d95jfdj78u08711tnhk871vnh97.png-189.1kB

    相关文章:

    1. 基于Kubernetes Jenkins CICD
    2. 消息队列 Kafka –未完
    3. Nagios 配置及监控
    4. Jenkins 自动化部署上线

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论