• 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!


    写在前面

    趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪。有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家。这不,就有小伙伴问我:如何通过Jenkins自动构建和发布项目,我:安排上了!!

    小伙伴的疑问

    我们还是通过一张图来直观的了解下小伙伴的疑问吧。

    老规则,我们直接进入正题。

    基础环境

    所有的环境均搭建在CentOS 6.5 x64服务器上,IP:192.168.209.121 主机名:liuyazhuang121 , 并在服务器上配置了主机名到IP的映射。

    构建Web项目

    环境配置

    首先,我们来看下如何通过Jenkins自动构建发布Web项目到远程Tomcat。我们使用的环境是:Jdk1.8+Maven3.6.3+Tomcat9.0+Jenkins2.19.3+SSH+Shell

    其中,JDK、Maven和Tomcat小伙伴们可以自行下载安装并配置系统环境,可以到链接http://download.csdn.net/download/l1028386804/10127368 下载jenkins2.19.3。

    配置SSH免密码登录

    ssh-keygen -t rsa
    cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys/
    

    配置Jenkins

    启动Jenkins

    下载的Jenkins war包拷贝到${TOMCAT_HOME}/webapp目录下,并启动Tomcat,在浏览器中输入http://192.168.209.121:8080/jenkins,如下图所示,则证明Jenkins启动成功。

    安装插件

    上述默认安装的插件还不够

    依次点击 系统管理->插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:

    • Maven Integration plugin
    • SSH plugin
    • Deploy to container Plugin

    设置系统管理-Global Tool Configuration

    在系统管理-Global Tool Configuration中配置JDK和Maven,如下:

    配置系统管理-Configure Global Security

    注册并登录用户

    配置SSH remote hosts

    在系统管理-系统设置,配置SSH remote hosts

    点击Add按钮设置登录方式,如下图所示:

    点击Check connection按钮 ,如果页面上输出Successfull connection,则SSH配置成功,如下图所示:

    新建项目构建

    配置项目构建

    General-配置项目名称

    源码管理-配置SVN信息

    配置Pre Steps

    配置Post Steps

    配置完成后保存。

    构建项目

    回到主页,点击立即构建项目按钮,如下图:

    可看到页面上出现对maven_test的构建进度条,点击进度条即可进入日志输出页面,如下图:

    输出如下日志,则代表构建并部署到tomcat成功。

    tomcat.sh脚本

    最后,我们给出tomcat.sh脚本的内容,如下所示。

    #!/bin/sh  
      
    ## java env  
    ## service name    
    SERVICE_NAME=tomcat_service  
    
    case "$1" in  
      
        start)  
             /usr/local/tomcat/test-tomcat-10000/bin/startup.sh 
            ;;  
      
        stop)  
            sleep 5  
            ##  
            ## edu-service-aa.jar  
            ## edu-service-aa-bb.jar  
            P_ID=`ps -ef | grep -w "test-tomcat-10000" | grep -v "grep" | awk '{print $2}'`  
            if [ "$P_ID" == "" ]; then  
                echo "=== $SERVICE_NAME process not exists or stop success"  
            else  
                echo "=== $SERVICE_NAME process pid is:$P_ID"  
                echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"  
                kill  $P_ID  
            fi  
            ;;  
      
        restart)  
            $0 stop  
            sleep 2  
            $0 start  
            echo "=== restart $SERVICE_NAME"  
            ;;  
      
        *)  
            ## restart  
            $0 stop  
            sleep 2  
            $0 start  
            ;;  
      
    esac  
    exit 0 
    

    构建Java项目

    Jenkins构建Jar包发布到远程服务器和构建War包发布到远程服务器配置基本一致,只是Post Steps配置稍有不同。

    配置Post Steps

    配置Jar包发布到远程服务器的Post Steps配置如下:

    构建项目

    account-server.sh脚本

    最后,我们也给出account-server.sh脚本的内容,如下所示。

    #!/bin/sh  
      
    ## java env  
    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144  
    export JRE_HOME=$JAVA_HOME/jre  
      
    ## service name  
    APP_NAME=account  
      
    SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME  
    SERVICE_NAME=medcare-dubbo-$APP_NAME  
    JAR_NAME=$SERVICE_NAME.jar  
    PID=$SERVICE_NAME.pid  
      
    cd $SERVICE_DIR  
      
    case "$1" in  
      
        start)  
            nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &  
            echo $! > $SERVICE_DIR/$PID  
            echo "=== start $SERVICE_NAME"  
            ;;  
      
        stop)  
            kill `cat $SERVICE_DIR/$PID`  
            rm -rf $SERVICE_DIR/$PID  
            echo "=== stop $SERVICE_NAME"  
      
            sleep 5  
            ##  
            ## edu-service-aa.jar  
            ## edu-service-aa-bb.jar  
            P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`  
            if [ "$P_ID" == "" ]; then  
                echo "=== $SERVICE_NAME process not exists or stop success"  
            else  
                echo "=== $SERVICE_NAME process pid is:$P_ID"  
                echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"  
                kill -9 $P_ID  
            fi  
            ;;  
      
        restart)  
            $0 stop  
            sleep 2  
            $0 start  
            echo "=== restart $SERVICE_NAME"  
            ;;  
      
        *)  
            ## restart  
            $0 stop  
            sleep 2  
            $0 start  
            ;;  
      
    esac  
    exit 0  
    

    重磅福利

    微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!

    另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!

  • 相关阅读:
    (转)基于REST架构的Web Service设计
    WPF 简易的喷泉效果
    C# 取Visio模型信息的简易方法
    WPF TextBox按字节长度限制输入
    NPOI导出WPF DataGrid控件显示数据
    WPF--TextBlock的ToolTip附加属性
    【转】WPF 从FlowDocument中找到Hyperlink
    WPF 初学VisifireChart
    WPF 简易进度条效果
    WPF 简易的跑马灯效果
  • 原文地址:https://www.cnblogs.com/binghe001/p/13773402.html
Copyright © 2020-2023  润新知