Jenkins自动部署war和jar包

  1. Jenkins部署在Linux系统请参照

    https://blog.csdn.net/liuxiaoming1109/article/details/8894704

  2. 切换成中文请参照

    https://blog.csdn.net/liuxiaoming1109/article/details/88987881

  3. 【系统管理】-【全局工具配置】配置Java环境需要的工具;JDK、Git、Maven
    说明:都不要勾选【自动安装】
    3.1、JDK配置,JDK环境配置自己Google百度一下
    我的JDK目录是在/home/software/jdk,根据自己自行修改
    Jenkins自动部署war和jar包
    3.2、Git配置
    安装命令:yum install git
    Git地址查询: whereis git
    Jenkins自动部署war和jar包
    Git配置地址:取 /usr/local/git + /bin/git配置
    Jenkins自动部署war和jar包
    3.3、Maven配置
    下载Maven,然后作如下配置,/home/software/maven是我maven的地址,地址不同,请做相应修改
    Jenkins自动部署war和jar包

  4. 新建一个Jenkins任务,Java项目这里选maven构建
    Jenkins自动部署war和jar包
    4.1、【General】这里是一些一般的配置,这里只要【丢弃旧的构建】,构建会生成大量的文件,配置不需要手动清除,配置就行,会自动释放磁盘占用
    Jenkins自动部署war和jar包
    4.2、【源码管理】配置需要构建的Git仓库源码
    Jenkins自动部署war和jar包
    Credentials:Git账号密码添加
    Jenkins自动部署war和jar包
    Git账号密码验证通过后,不会在报错;
    【Branches to build】*/master -> */${branch} 可以配置构建的分支
    Jenkins自动部署war和jar包
    配置可传入分支构建,需要在【General】-【参数化构建过程】添加【字符参数】配置如下图:
    Jenkins自动部署war和jar包
    4.3、【构建触发器】这里我选择默认触发器
    Jenkins自动部署war和jar包
    当然也可以选择【定时构建】、【轮询 SCM】
    4.4、【构建环境】和【Pre Steps】我这里选择默认,有需要改动自行修改
    Jenkins自动部署war和jar包
    4.5、【Build】maven命令打包,根据自己情况自行修改

    clean package -pl demo -am -Dmaven.test.skip=true -P dev
    Jenkins自动部署war和jar包
    说明:
    -pl 选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔),这里只想打包demo模块
    -am 表示同时处理选定模块所依赖的模块
    -P 打包的环境

    【保存】后可以看到
    Jenkins自动部署war和jar包
    进行构建操作,可以看到上面配置的可以操作切换分支
    Jenkins自动部署war和jar包
    4.6、【Post Steps】构建后的操作,这里执行shell脚本
    如下两种形式都是发布到和Jenkins是同一台服务器
    war形式发布:
    这里先说构建后发布到tomcat,
    war copy过以后,tomcat是启动状态,会自动解压发布war,所有这里只需要copy,这里根据自己需求修改脚本

    #!/bin/sh
    # copy demo.war到编译好的文件到tomcat目录的webaaps
    
    cp -r /var/lib/jenkins/workspace/demo/demo/target/demo.war /home/tomcat/apache-tomcat-demo/webapps
    

    Jenkins自动部署war和jar包
    问题:在执行脚本过程中,会遇到权限问题,脚本执行不了
    解决请参照:

    https://blog.csdn.net/liuxiaoming1109/article/details/89099317

    当然也可以执行本地脚本,比如服务器脚本地址/home/sh/demo.sh
    Jenkins自动部署war和jar包
    jar形式发布:
    shell脚本如下

    #!/bin/sh
    #Copy jar to target path
    
    BUILD_ID=DONTKILLME #后台执行
    
    pid=$(ps -ef|grep demo.jar|grep -v grep | awk '{print $2}')
    
    #copy jar 到启动目录
    cp -r /var/lib/jenkins/workspace/demo/demo/target/demo.jar  /home/jar/demo
    
    # 关闭已经启动的jar进程
    function stop(){
    if [ -n "$pid" ]
      then
      	echo "pid进程 :$pid"
      	kill -9 $pid
        
     else
        echo "进程没有启动"
    fi
    }
    stop
    
    sleep 5s
    
    #发布jar服务
    function start(){
      cd /home/jar/demo
      nohup java -jar demo.jar --server.port=8082 >demo.log 2>&1 &
    }
    
    start
    

    备注:BUILD_ID=DONTKILLME 必须添加,不然会不执行【nohup java -jar demo.jar --server.port=8082 >demo.log 2>&1 &】
    具体请参照:

    https://blog.csdn.net/liuxiaoming1109/article/details/89145949

    4.7、【构建设置】
    可以设置发邮箱
    4.8、【构建后操作】
    我这里没有设置,有需要自行设置

  5. 执行构建
    5.1、点击红框构建Jenkins自动部署war和jar包
    5.2、可以点击红框查看控制台输出日志
    Jenkins自动部署war和jar包
    5.3、控制台输出,另外一个项目举例
    Jenkins自动部署war和jar包

参考文档:
https://www.cnblogs.com/xxj0316/p/9467182.html