jenkins + centos + gitee +maven 安装配置自动部署

一、安装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 安装配置自动部署)