Jenkins+Maven+Git(Gitee)持续集成Java项目

一、前言

1、主要内容

  • Jenkins+SSH获取Gitee代码
  • Jenkins+Maven构建Java(Spring Boot)项目配置
  • Jenkins发布Spring Boot项目:远程服务器端配置
  • Jenkins发布Spring Boot项目:pom.xml编译配置
  • Jenkins+SSH将构建输出结果发布到远程服务器并启动应用

2、环境信息

  • 服务器
服务器名操作系统IP说明
GiteeCentOS 7192.168.88.41部署Gitee
JenkinsCentOS 7192.168.88.44部署Jenkins
ServerCentOS 7192.168.88.101部署Java项目
  • 软件
工具/环境版本
Jenkins2.176.2
Maven3.6.1
GiteeGitee 12.1.2
JDK1.8.0_181

3、基础准备

二、 Java应用部署服务器

1、部署JDK8

如果将jdk1.8.0_181部署在目录/usr/java/
部署完成后,jdk的根目录就是:/usr/java/jdk1.8.0_181/

2、创建部署应用专用账号(非必须)

#创建账号
sudo useradd app
sudo passwd app

#授予sudo权限且免密码
sudo visudo

#在最后一行加上
app ALL=(ALL) NOPASSWD:ALL

3、开放端口

#开放1000到9999的端口
sudo firewall-cmd --add-port=1000-9999/tcp --permanent
sudo firewall-cmd --reload

4、创建应用部署目录

#创建目录
sudo mkdir -p /webroot

#授权
sudo chmod-R 777 app:app /webroot

三、Jenkins环境准备

在配置构建任务之前,我们需要在Jenkins服务器配置Maven、Git环境

1、Maven安装

  • 下载&解压
cd /home/downloads

#下载
sudo wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
#下载方式2
官网地址:[http://maven.apache.org/download.cgi](http://maven.apache.org/download.cgi)
使用工具或者命令传到服务器上

#解压到指定目录
sudo mkdir -p /usr/maven
sudo tar -zvxf apache-maven-3.6.1-bin.tar.gz -C /usr/maven
  • 配置环境变量
#修改/etc/profile
sudo vi /etc/profile

#在文件末尾写入以下内容
export MAVEN_HOME=/usr/maven/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH

#使更改生效
source /etc/profile

#测试
mvn -version
  • 配置Maven仓库

为了保证jar包的下载速度,修改maven配置使用国内镜像

#进入Maven根目录
cd $MAVEN_HOME

#备份配置文件
sudo cp conf/settings.xml conf/settings.xml.bak

#新建配置文件或者在setting文件中添加阿里仓库
sudo vi settings.xml
<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public/</url>
      <mirrorOf>*</mirrorOf>
</mirror>

2、Git Client安装

  • 安装
sudo yum install -y git
  • 密钥准备
#生成密钥
ssh-keygen -t rsa
  • 将公钥添加到Gitee
#查看公钥
cat ~/.ssh/id_rsa.pub

访问Gitee:http://192.168.88.41:/profile/keys,添加公钥

  • 添加Git SSH凭据

后面配置Jenkins构建任务代码仓库时需要用到

#查询SSH私钥
cat ~/.ssh/id_rsa

访问:/credentials/store/system/domain/_/newCredentials 直接进入凭据添加界面

类型选择:SSH Username with private key

jenkins-credentials-ditee-key

3、插件安装

  • 插件列表
插件名版本说明
Git3.11.0使用Git访问远程仓库
Maven Integration3.3使用Maven进行编译等
Publish Over SSH1.20.1用于将编译结果发布到远程服务器
  • 安装说明

访问:
http://192.168.88.44:9999/pluginManager/available

Ctrl+F搜索插件名,勾选后,进行安装

安装完成后,重启jenkins

sudo systemctl restart jenkins

4、Jenkins插件/环境配置

在菜单:系统管理->全局工具配置中对插件相关工具进行配置
查看java /git 所在位置: which java / which java git

  • JDK配置

jenkins-configure-tools-jdk.png

  • Git配置

jenkins-configure-tools-git.png

  • Maven配置

jenkins-configure-tools-maven.png

  • Publish over SSH(设置中没有此选项需先安装插件)(需要部署到指定服务器使用,可选)

然后在菜单:系统管理->系统设置对Publish over SSH进行设置

jenkins-configure-publish-over-ssh.png

主要配置项说明:

配置项说明
Name服务器名,随便写,方便记忆即可
Hostname服务器IP,或者可以被正常解析的服务器名/域名
Username用于登录的账号
Remote Dictionary远程目录,绝对路径
Passphrase/Password密码
PortSSH端口

配置完成后可以点击Test Configuration进行连接测试

四、Jenkins构建任务

1、Jenkins任务创建

菜单:新建任务,或者访问:/view/all/newJob

在这里插入图片描述

2、配置源代码管理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里我们选择Git,并配置SSH Git地址,选择之前创建好的凭据/密钥

3、Publish over SSH配置(可选)

在这里插入图片描述
配置项说明:

配置项说明
NameappserverSSH Server名称,根据之前配置选择即可
Source filestarget/*.jar需要传输的文件,支持通配符,编译文件默认都在项目根目录下的target目录中
Remove prefixtarget移除匹配到的文件路径的前缀,如果留空,会在远程服务器上创建对应的目录
Remote directoryhelloworld/远程服务器上的项目目录,该目录会被创建在Publish over SSH配置的远程根目录中(/webroot)
Exec command—-文件传输到远程服务器后执行的命令

4、构建

在这里插入图片描述

5、配置构建maven和shell脚本

点击立即构建即可进行项目构建,构建完成后,构建记录的图标会根据构建结果不同显示成不同颜色。
蓝色、黄色、红色分别表示:成功、未完成、失败

如果构建并没有成功,可以点击构建记录,在后在控制台输出中查看构建记录
例如:http://192.168.88.44:8080/job/maven-springboot-helloworld/13/console

同样,你也可以在控制台输出中查看整个构建过程

如果构建成功,访问:http://192.168.88.101:8081,将会看到

Hello World!

6、完善构建脚本(自选)

执行文件创建与复制时需要权限,需提前赋予文件权限

#!/bin/bash
BUILD_ID=DONTKILLME
# jenkins 构建的工作路径,test2是任务名称,注意改
# JAR_PATH="/root/.jenkins/workspace/app_fast"

# 项目 打包之后的路径
PROJ_PATH="/webroot/helloworld"

# 打包后的名称
JAR_NAME="app-fast"

# 文件的后缀
FILE_TYPE="jar"

# 备份的文件夹名称
BACKUP="backup"

### base函数
kill()
{
    pid=`ps -ef | grep $JAR_NAME.$FILE_TYPE |grep -v color |grep -v grep | awk '{print $2}'`
    echo "$JAR_NAME pid is ${pid}"
    if [ "$pid" = "" ]
    then
        echo "no $JAR_NAME pid alive"
    else
                echo "killing start"
        sudo kill -9 $pid
        echo "killing end"
    fi
}

#停止之前的进程
echo "killing before"
kill
echo "killing after"

#创建备份目录
cd $PROJ_PATH

if [ ! -d "$BACKUP" ];then
      sudo mkdir -p $BACKUP
      cd $BACKUP
      sudo mkdir log
fi
echo $PROJ_PATH
cd $PROJ_PATH
#创建运行目录
if [ ! -d run ];then
      sudo mkdir -p run
fi

#备份之前的版本
cd $PROJ_PATH/run
if [ -f "$JAR_NAME.$FILE_TYPE" ];then
    sudo mv $JAR_NAME.$FILE_TYPE $PROJ_PATH/$BACKUP/$JAR_NAME$(date "+%Y%m%d%H%M%S").$FILE_TYPE
fi
if [ -f "print.out" ];then
    sudo mv print.out $PROJ_PATH/$BACKUP/log/print$(date "+%Y%m%d%H%M%S").out
fi

#将打包好的文件移动到run上
cd $PROJ_PATH

if [ -d target ];then
      cd target
      sudo mv $JAR_NAME.$FILE_TYPE $PROJ_PATH/run/$JAR_NAME.$FILE_TYPE
      cd ../
fi

#启动服务
cd $PROJ_PATH/run

# 启动的是prod环境的配置 
nohup java -jar -Dspring.profiles.active=prod $JAR_NAME.$FILE_TYPE >print.out 2>&1 &

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GitLab、JenkinsMaven和Tomcat可以用于搭建一个基于Web应用的持续化集成系统。 1. GitLab GitLab是一个基于Web的Git仓库管理工具,它提供了代码托管、CI/CD、代码审核、Wiki等功能。在GitLab中,我们需要创建一个项目,并将代码提交到GitLab中。 2. Jenkins Jenkins是一个开源的自动化构建工具,它提供了大量的插件,支持各种语言和框架的构建和测试。我们可以通过Jenkins来实现持续化集成、自动化测试和自动化部署。 3. Maven Maven是一个基于Java项目管理工具,它提供了依赖管理、构建管理、发布管理等功能。我们可以通过Maven来管理项目的依赖和构建过程。 4. Tomcat Tomcat是一个基于Java的Web服务器,它可以用于部署Java Web应用。我们可以将构建好的Java Web应用部署到Tomcat中。 下面是搭建持续化集成系统的步骤: 1. 在GitLab中创建一个项目,将代码提交到GitLab中。 2. 在Jenkins中配置GitLab插件,连接GitLab仓库。 3. 在Jenkins中创建一个新的构建任务,在任务中配置Maven构建。 4. 在构建任务中配置自动化测试和自动化部署,可以使用Jenkins插件或者脚本来实现。 5. 配置Tomcat服务器,将构建好的Java Web应用部署到Tomcat中。 6. 在Jenkins中配置自动化构建触发器,可以选择定时构建或者GitLab代码提交触发构建。 通过上述步骤,我们就可以实现基于GitLab、JenkinsMaven和Tomcat的持续化集成系统。这样在每次代码提交后,系统会自动进行构建、测试和部署,提高了开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一生酷到底

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值