jenkins企业级实战

简介

Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务。

Jenkins可以通过本机系统软件包,Docker安装,甚至可以由安装了Java Runtime Environment(JRE)的任何机器独立运行。

能够部署使用Maven构建的java项目,使用npm构建的Node.js项目还有PyInstaller构建的Python应用。

本文仅涉及maven项目,jenkins官网:https://jenkins.io/
有关jenkins部署前端项目,请参考:https://blog.csdn.net/GY325416/article/details/84248817

下载安装

推荐rpm包安装:https://blog.csdn.net/GY325416/article/details/82560528
war包安装方式:https://blog.csdn.net/GY325416/article/details/84250071

项目部署

这有一个spring boot的eureka注册中心https://gitee.com/hello-piper/testGit.git,我将使用这个项目演示maven项目部署

部署流程(请予以重视)

A:即是jenkins所在机器, B:项目将要部署的机器

  • A机器 从gitlab下载最新代码到本机
  • A机器 使用maven打包项目,在target目录产生*.war包
  • A机器 通过ssh将war包传输到B机器,并执行B的restart.sh脚本
  • B机器脚本功能:将war包放到tomcat的webapps目录中,重启tomcat

如果项目是spring boot编写的可执行jar包,那么B的restart.sh脚本功能修改为重启jar就行了,具体后面会讲。

插件准备

仅仅Jenkins安装好其实做不了什么事情,还需要很多插件支持,前面已经自动安装了一部分,但是远远不够,这里给出需要用到的一些
点击 系统管理–>管理插件

  • Maven Integration
  • SSH
  • Publish Over SSH
  • Git Parameter

工具配置

以下是部署项目要用到的配置

配置jdk

点击 系统管理 --> 全局工具配置
这里写图片描述

配置maven

点击 系统管理 --> 全局工具配置
这里写图片描述

配置ssh

点击 系统管理 --> 系统设置 --> 最下面Publish over SSH --> SSH Servers
这里配置的是项目要部署的机器地址,可配置多个
这里写图片描述

项目空间准备

上面部署流程将war包传输到B机器之后我们需要启动这个war包,这样就需要有一个tomcat,还需要一个脚本,执行war包的复制过程,tomcat的启动过程。
将这些有关register项目的文件统一放到一个文件夹,我的项目目录如下
这里写图片描述

新建任务

新建maven项目,名字尽量和项目名称一致
这里写图片描述

配置项目分支和环境参数
这里写图片描述

使用maven进行构建
这里写图片描述

部署地址
这里写图片描述

这样配置之后就能将项目部署到192.128.1.202机器上了,当然你也可以远程到本机

war方式项目restart.sh脚本

#!/bin/bash -l
tomcat_home=/usr/local/app/engineering/apache-tomcat-8.0.53
jenkins_package=/usr/local/app/upload
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
echo "关闭$tomcat_home"

$SHUTDOWN
ps -ef |grep tomcat |grep $tomcat_home |grep -v 'grep'|awk '{print $2}' | xargs kill -9

#删除webapp文件夹
rm $tomcat_home/webapps/* -rf
#删除日志文件,如果你不先删除可以不要下面一行
rm  $tomcat_home/logs/* -rf
#删除tomcat的临时目录
rm  $tomcat_home/work/* -rf
#删除cataline文件
rm -rf $tomcat_home/logs/catalina*
#拷贝打好的war包到tomcat
cp -f $jenkins_package/engineering.war $tomcat_home/webapps/engineering.war

sleep 1
echo "启动$tomcat_home"
$STARTTOMCAT
sleep 3
#看启动日志
#tail -f $tomcat_home/logs/catalina.out

jar方式项目restart.sh脚本

#!/bin/bash

# 项目地址
pro_path=/usr/local/app/share-cloud-config/
# jar包名称
jar_name=share-cloud-config.jar
# 启动参数
JAVA_OPTS='-server -Xms1024m -Xmx1024m'

cd $pro_path
pwd
# 启动jar包命令
runjar="nohup /usr/local/software/jdk1.8.0_141/bin/java -jar ${JAVA_OPTS} ${jar_name} 1>log.log 2>&1 &"

# 查看这个jar是否已经启动
if test $(pgrep -f $jar_name|wc -l) -eq 0 
then {
    echo "应用没有启动" # 没有启动
} else {
    echo "应用已经启动" # 已经启动 清理掉
    kill -9 $(pgrep -f $jar_name)
}
fi

rm -rf $pro_path/$jar_name  # 删除原来的jar
cp /usr/local/app/upload/$jar_name $pro_path  # 复制一份新的jar
eval $runjar  #启动jar
sleep 3

新建任务图解

https://note.youdao.com/share/?id=25026fc8a8a0340cfa1eefc0837baae2&type=note

注意

jenkins启动A项目,如果B项目依赖了A项目,那么在A项目启动过后,会重启B项目

原文地址:https://www.cnblogs.com/paper-man/p/13284735.html