使用jekins自动构建部署 Spring Boot 项目

       公司一直在做项目,没有专门的运维,一个开发团队都是后端负责项目发布运维,打包测试发布都是手动的,对平时的开发,测试前后端配合也存在一定的弊端,本着提高效率,节省时间(偷懒)的想法决定研究下jenkins,如何使用jenkins 从svn 代码库 发布Spring Boot 项目。 

步骤:

  1. 安装jenkins
  2. jenkins 配置及插件安装
  3. 创建项目

安装jenkins

准备环境:

CentOS 7 (这里我用的虚拟机)

Jenkins 2.150 war 包

Tomcat 9.0.16 (发布jenkins war包)

maven 3.5.4

JDK1.8.0_181

maven 和jdk安装 这里不再赘述,下载安装包 解压安装配置环境变量。

JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
JRE_HOME=/usr/java/jdk1.8.0_181-amd64/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

MAVEN_HOME=/home/java/apache-maven-3.5.4
export MAVEN_HOME
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH

这是我的配置。

配置防火墙

关闭防护墙

#centos7
systemctl stop firewalld.service
==============================
#以下为:centOS 6.5关闭防火墙步骤
#关闭命令:  
service iptables stop 
#永久关闭防火墙:
chkconfig iptables off

两个命令同时运行,运行完成后查看防火墙关闭状态

service iptables status

附加防火墙常用命令:

firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld

配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent


将jenkins war包放到Tomcat webapps 目录下 启动:访问 http://xxx:8080/jenkins 

jenkins 卸载

centos 
sudo systemctl stop jenkins
sudo systemctl disable jenkins
sudo yum -y remove jenkins
sudo rm -rf /var/{lib,log,cache}/jenkins /usr/lib/jenkins /root/.jenkins
sudo rm -rf `sudo find /{etc,var,run} -name "jenkins*"`

ubantu
//服务
sudo apt-get remove jenkins
//安装包,注意这里如果不是ubuntu那就yum
sudo apt-get remove --auto-remove jenkins
//配置和数据
sudo apt-get purge jenkins
sudo apt-get purge --auto-remove jenkins

据说 它的war包自带Jetty服务器,通过以下命令也可启动:

java -jar jenkins.war &

第一次启动Jenkins时,出于安全考虑,Jenkins会自动生成一个随机的按照口令。注意控制台输出的口令,复制下来,然后在浏览器输入密码:

使用jekins自动构建部署 Spring Boot 项目_第1张图片

复制红色的字通过  vi 命令打开,复制里边的密码字符串粘贴到xia下方输入框中 点击  Continue .

进入用户自定义插件界面,建议选择安装官方推荐插件,因为安装后自己也得安装:

使用jekins自动构建部署 Spring Boot 项目_第2张图片

接下来是进入插件安装进度界面:

使用jekins自动构建部署 Spring Boot 项目_第3张图片

插件一次可能不会完全安装成功,可以点击Retry再次安装。直到全部安装成功

 

等待一段时间之后,插件安装完成,配置用户名密码全名 邮箱:

使用jekins自动构建部署 Spring Boot 项目_第4张图片

 

配置:

系统管理-全局工具配置 jdk路径 maven路径

去掉勾选自动安装

使用jekins自动构建部署 Spring Boot 项目_第5张图片

去掉勾选自动安装 

使用jekins自动构建部署 Spring Boot 项目_第6张图片

 

插件安装和配置

有很多插件都是选择的默认的安装的,所以现在需要我们安装的插件不多,

Git plugin,

Maven Integration plugin,

publish over SSH、SSH,

Deploy to container Plugin,

Subversion Plug-in

插件。

插件安装:系统管理 > 插件管理 > 可选插件,勾选需要安装的插件,点击直接安装或者下载重启后安装。

使用jekins自动构建部署 Spring Boot 项目_第7张图片

 

部署项目

首页点击新建:输入项目名称

使用jekins自动构建部署 Spring Boot 项目_第8张图片

下方选择构建一个maven项目,点击确定。

勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个

使用jekins自动构建部署 Spring Boot 项目_第9张图片

源码管理,选择svn,配置SVN相关信息,点击add可以输入svn的账户和密码

使用jekins自动构建部署 Spring Boot 项目_第10张图片

svn地址:http://192.168.0.xx/svn/xxx@HEAD,@HEAD意思取最新版本

  • 输入SVN地址
  • 通过Add按钮,填写SVN用户名和密码

构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来

使用jekins自动构建部署 Spring Boot 项目_第11张图片

在Build中输入打包前的mvn命令 clean package,如:

 

 

使用jekins自动构建部署 Spring Boot 项目_第12张图片

注意配置构建脚本的时候的写法 .,jenkins为了有效的kill job运行时创建的子进程,避免产生过多的僵尸进程,提供了一些原生代码找到并杀死它们。所以 使用 nohup xxx/start.sh & 启动job结束后服务会被kill掉 需要加入BUILD_ID=dontKillMe。 

点击Advanced...Usecustom workspace 自定义目录,项目编译后的文件(target 目录下的文件)会存放到此处。

 

使用jekins自动构建部署 Spring Boot 项目_第13张图片

 

#!/bin/sh
RBC_WEB_JAR=rbc-web.jar
#!项目启动 jar包存放 目录
RBC_WEB_JAR_PATH=/home/rbc/rbc-project-run/rbc-web/
#!备份 jar包存放 目录
BACKUP_DIR=/home/rbc/rbc-project-run/rbc-web/backup/
#!编译好的jar 包
TARGET_JAR_FILE=/home/rbc/elens-rbc/target/rbc-web.jar
cd $RBC_WEB_JAR_PATH
echo "杀死 rbc-web.jar 进程..."
pid=`ps -ef | grep $RBC_WEB_JAR | grep -v grep | awk '{print $2}'`
echo "pid:"$pid
if [ -n "$pid" ];then
echo "kill -9 的 pid:"$pid
kill -9 $pid
fi
echo "清除进程已完成..."
if [ -f "$TARGET_JAR_FILE" ];then
#!将现有的 jar 备份
mv $RBC_WEB_JAR_PATH$RBC_WEB_JAR $BACKUP_DIR$RBC_WEB_JAR.`date +%Y%m%d%H%M%S`
echo "项目备份完成..."
fi
#!替换 新的 jar包
cp $TARGET_JAR_FILE $RBC_WEB_JAR_PATH
#!删除老旧的备份项目
cd $BACKUP_DIR
ls -lt | awk 'NR>5{print $NF}' | xargs rm -rf
cd $RBC_WEB_JAR_PATH
nohup java -jar rbc-web.jar &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 nohup.out
fi
echo "rbc-web 项目启动完成..."

这段脚本的意思,就是kill旧项目,删除旧项目,备份老项目并删掉太老的备份项目,启动新项目。

点击保存

 

Jenkins-立即构建

 

  • 点击“立即构建”
  • 在“构建历史”前面的版本号,点击下拉框,可以查看控制台输出。

你可能感兴趣的:(linux,相关)