美文网首页
jenkins + centos + gitee +maven

jenkins + centos + gitee +maven

作者: 张建勇9511 | 来源:发表于2020-04-28 18:38 被阅读0次

    一、安装jenkins

    下载jenkins安装包
    https://www.jenkins.io/zh/download/

    安装
    rpm -ivh jenkins-2.222.1-1.1.noarch.rpm
    

    配置文件路径

    /etc/sysconfig/jenkins
    

    启动

    service jenkins start
    

    admin默认密码

    /var/lib/jenkins/secrets/initialAdminPassword 
    

    默认端口8080

    登录管理页面

    二、安装插件

    登录管理页面

    先安装 Localization: Chinese (Simplified) (中文语言)

    插件安装重启,改成中文面后,点击右下角的 ‘jenkins中文社区标签’ → 更新中心镜像设置
    默认中心地址,下载很慢

    更换镜像地址后,再安装插件

    Maven Integration plugin
    Gitee Plugin
    Publish Over SSH (远程部署需要)

    配置环境

    manage jenkins → 系统设置
    Gitee 配置
    Publish over SSH 配置

    manage jenkins → 全局工具配置
    JDK 配置
    Git 配置
    Maven 配置

    三、新建Item

    选择构建一个maven项目

    image.png 2710347-4c2f64bfd45284d3.png
    配置webhook
    微信截图_20200428183013.png
    maven 打包命令
    image.png
    构建后传输到远程服务器,执行部署脚本
    image.png
    配置好后,应用

    代码提交pro分支后自动构建部署

    四、部署脚本

    #!/bin/sh
    #########
    # jenkins 部署脚本
    # by zhangjianyong 2020年4月23日
    #########
    
    #APP
    APP_HOME="/home/jenkins/app" 
    APP_NAME="app.jar"
    #备份变量
    BACK_TIME=$(date +%F_%H_%M_%S)
    BACK_HOME="$APP_HOME/backup"
    #编译输出
    TARGET_HOME="/home/jenkins/target"
    TARGET_NAME="app.jar"
    
    
    
    #使用说明,用来提示输入参数
    usage() {
        echo "Usage: $0 [start|stop|restart|status|rollback|list|deploy]"    
        echo "start:启动"
        echo "stop:停止"
        echo "restart:重启"
        echo "status:状态"
        echo "list:备份列表"
        echo "rollback:回滚"
        echo "deploy:部署" 
        exit 1
    }
    
    #检查程序是否在运行
    is_exist() { 
        pid=`ps -ef |grep java | grep $APP_NAME | grep -v grep | awk '{print $2}' `
        #如果存在返回1,不存在返回0
        if [ -z "${pid}" ]; then
            return 0
        else
            return 1
        fi
    }
    
    
    # 启动命令
    start() {
            source ~/.bash_profile
        is_exist
        if [ $? -eq "1" ]; then
            echo -e "\033[41;37m ${APP_NAME} 已经在运行中. pid=${pid} .\033[0m" 
            
        else 
            cd $APP_HOME 
                    nohup java -Xms2G -Xmx2G -Xss1M -XX:+UseParallelGC -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:gc.log -jar $APP_NAME  >> cat.out 2>&1 &
            
            echo -e "\033[32m ${APP_NAME} 正在启动。。。\033[0m" 
            sleep 3
            is_exist
            if [ $? -eq "1" ]; then
                echo -e "\033[32m ${APP_NAME} 启动成功 .  pid=${pid} . \033[0m" 
            else
                echo -e "\033[41;37m ${APP_NAME} 启动失败 .  \033[0m" 
            fi
                    #exit 0
        fi
    }
    # 停止命令
    stop(){ 
        is_exist
        if [ $? -eq "1" ]; then
            kill -9 ${pid}
            sleep 1
            is_exist
            if [ $? -eq "1" ]; then
                echo -e "\033[41;37m ${APP_NAME} 停止失败 . pid=${pid} . \033[0m"  
                
            else
                echo -e "\033[32m ${APP_NAME} 停止成功 . \033[0m"  
            fi
             
        else 
            echo -e "\033[41;37m ${APP_NAME} 未启动 .  \033[0m"   
        fi
    }
    
    # 状态模块
    status() {
    
        is_exist
        if [ $? -eq "1" ]; then
            echo -e "\033[32m ${APP_NAME} 在运行中. pid=${pid} . \033[0m"  
             
        else
            echo -e "\033[32m ${APP_NAME} 未启动.  \033[0m"   
        fi
       
    }
     
    # 查询备份列表
    backlist(){
      cd $BACK_HOME
      ls -lrth $APP_NAME\_*
    }
    #部署
    deploy(){
    
        #不存在目录创建
        if [ ! -e $BACK_HOME ];then
            mkdir -p $BACK_HOME
        fi
        
        if [ -f $TARGET_HOME/$TARGET_NAME ]; then
            #备份
            if [ -f $APP_HOME/$APP_NAME ]; then
                rm $APP_HOME/$APP_NAME 
                echo -e "\033[32m 清理完成. $BACK_HOME/$APP_NAME\_$BACK_TIME \033[0m"   
            else
                echo -e "\033[41;37m APP目录下不存在$APP_NAME 清理失败. \033[0m"  
            fi
            
            #部署
            mv $TARGET_HOME/$TARGET_NAME $APP_HOME/$APP_NAME
            cp -R $APP_HOME/$APP_NAME $BACK_HOME/$APP_NAME\_$BACK_TIME
            echo -e "\033[32m 备份归档完成. $APP_HOME/$APP_NAME \033[0m"
            echo -e "\033[32m 部署完成. $APP_HOME/$APP_NAME \033[0m" 
            #重启
            stop
            start
        else
            echo -e "\033[41;37m target目录下不存在$APP_NAME . \033[0m"  
        fi
         
         
    } 
    # 回滚 
    rollback() {
    
        if [ -z $INPUT2 ]; then
            echo -e "\033[41;37m 请输入备份文件名 \033[0m" 
            exit 0
        fi
    
        if [ -f $BACK_HOME/$INPUT2 ]; then
            cp $BACK_HOME/$INPUT2 $APP_HOME/$APP_NAME
            stop
            start
        else
            echo -e "\033[41;37m 不存在备份文件:$BACK_HOME/$INPUT2 \033[0m" 
        fi
      
    }
    
    main() {
    INPUT1=$1
    INPUT2=$2
    case $INPUT1 in
        rollback)
            rollback $INPUT2
            ;;
        list)
            backlist
            ;;
        deploy)
            deploy
            ;;
        restart)
            stop
            start
            ;;
        start)
            start
            ;;
        status)
            status
            ;;
        stop)
            stop
            ;;
        *)
            usage
            ;;
    esac
    
    exit 0
    }
    main $1 $2
    

    相关文章

      网友评论

          本文标题:jenkins + centos + gitee +maven

          本文链接:https://www.haomeiwen.com/subject/wkybwhtx.html