一文详解:linux部署jenkins,一键构建并部署springboot至第三方服务器

11 篇文章 1 订阅
7 篇文章 1 订阅

目录

1、下载jenkins

2、 启动jenkins

3、访问jenkins

4、在当前Linux上安装maven

4.1、更新wget命令,支持https请求

4.2、下载maven

4.3、解压安装maven

4.4、配置maven环境变量

4.5、maven配置阿里云镜像

4.6、配置maven依赖下载的位置

5、Linux安装Git

6、构建我们第一个项目

6.1、配置支持maven的项目构建

6.2、新建任务

7、启动jenkins任务

8、把jenkins构建的项目,发布至其他的Linux服务器

8.1、jenkins安装Publish Over SSH插件

8.2、配置ssh servers

8.3、修改任务配置Post Steps(后置步骤)

8.4、重新构建项目

8.5、检查目标服务器

8.6、访问目标服务器项目

9、配置构建项目前置清理脚本

9.1、在目标服务器上创建清理脚本

9.2、给脚本添加权限

9.3、jenkins配置前置步骤

9.4、编写脚本代码

9.5、测试前置步骤


Linux环境要求:

  • JDK 8版本及以上

1、下载jenkins

中文官网:Jenkins

下载链接:Jenkins 的安装和设置

下载完成后,文件名为jenkins.war 

上传到Linux中,我上传到的目录为:/usr/local/jenkins

2、 启动jenkins

jenkins.war启动方式与jar一样(也可以添加启动参数),如下

java -jar jenkins.war

上述启动方式会占用当前shell窗口,当进行其他的命令操作或者关闭连接时,jenkins会关闭,后续请使用后台运行的方式:

nohup java -jar jenkins.war &

3、访问jenkins

我的Linux的IP地址为:192.168.221.128jenkins默认端口为8080

使用浏览器访问:http://192.168.221.128:8080

注意:

  • 若浏览器一致页面一直加载不出来,证明是防火墙没有关闭,需要关闭下防火墙,或者开放8080端口

查看防火墙状态:

systemctl status firewalld

关闭防火墙:

systemctl stop firewalld.service

如:

一切就绪后,jenkins页面加载如下:

 

加载完毕后,如下:

 选择"安装推荐的插件",下一个页面如下:

  • 正在安装推荐的插件,也需要等待...

 安装完成后,进入下个页面:

  • 由于创建管理员用户时,必须使用邮箱,直接点击"使用admin账户继续"

 下一个页面直接保存即可:

 修改admin密码:

  • 进入到设置界面,在该界面最下方输入重置密码即可

4、在当前Linux上安装maven

4.1、更新wget命令,支持https请求

yum install -y ca-certificates

4.2、下载maven

wget https://dlcdn.apache.org/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.tar.gz

4.3、解压安装maven

tar -zxvf apache-maven-3.9.1-bin.tar.gz

4.4、配置maven环境变量

vi /etc/profile

复制下面内容至末尾:

# maven 我的maven安装在/usr/local/maven中
export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.1
export PATH=$PATH:$MAVEN_HOME/bin

使profile文件立即生效

source /etc/profile

4.5、maven配置阿里云镜像

  • 默认的镜像很慢,需要使用国内镜像

编辑maven的配置文件:

vi /usr/local/maven/apache-maven-3.9.1/conf/settings.xml

在图示位置加入下述配置:

<mirror>
     <id>alimaven</id>
     <name>aliyun maven</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
     <mirrorOf>central</mirrorOf>
</mirror>

4.6、配置maven依赖下载的位置

  • 我设置的下载位置为:/usr/lcoal/maven/repository

继续在上述配置文件中,加入配置:

<localRepository>/usr/local/maven/repository</localRepository>

至此,maven下载配置完成

5、Linux安装Git

jenkins需要通过Git去拉去代码,因此我们需要在Linux机器上安装下Git

git安装很简单,如下:

  • 使用yum安装git
yum install git

6、构建我们第一个项目

6.1、配置支持maven的项目构建

  •  默认新建任务下,是没有maven项目构建的选项,需要我们再安装下maven支持

 在可选插件中,输入maven:

 

 我们再新建任务时,发现已经支持maven项目构建了:

6.2、新建任务

1>选择构建maven项目

2>配置git项目克隆地址

配置完账号密码后,需要选择下:

3>jenkins配置maven 

 点击 the tool configuration

 

 4>设置pom文件位置

git拉取项目代码后,我的pom文件在git项目"helloworld"第一级目录中,如;

我们根据上述git目录结构,在jenkins配置pom即可 :

7、启动jenkins任务

 我们上述操作完成后,如下;

 

日志如下:第一次构建会很慢:

 至此,maven构建已完成,会生成一个jar文件,我的文件位置如下:

8、把jenkins构建的项目,发布至其他的Linux服务器

场景:当jenkins构建项目生成jar包后,我们需要发布到其他的服务器中进行运行(对应实际工作中的开发/测试/生产环境,jenkins服务器专门用于构建项目,最好不要在jenkins服务器直接运行jar项目)

前置工作(这里我就不演示了):

  1. 需要准备一台Linux虚拟机,我准备的虚拟机IP:192.168.221.129
  2. 该虚拟机需要关闭下防火墙
  3. 需要安装JDK1.8

8.1、jenkins安装Publish Over SSH插件

  • publish over ssh插件的作用:jenkins构建项目生成jar等文件后,通过publish over ssh插件发送至其他服务器

8.2、配置ssh servers

我们安装完插件后,需要配置ssh服务器地址(也就是jenkins往哪里发送文件)

位置:系统管理--系统配置--Publish over SSH中

 配置如下:

8.3、修改任务配置Post Steps(后置步骤)

找到 Post Steps(项目构建完成的后置步骤,也就是jar文件有了以后,想做什么操作):

注意:这个配置一定要知道当前jenkins构建项目后,生成的jar文件在哪(日志中可以看到):

我的在 :/root/.jenkins/workspace/我的第一个项目/target/helloworld-0.0.1-SNAPSHOT.jar

在此基础上,我的Post Steps配置如下:

ssh的相关问题注意:

很多人在文件发送成功后,找目标服务器上找不到文件的原因

<1>在ssh servers中配置目标服务器时

  • remote directory必须配置,否则通过ssh发送文件时,文件会不知所踪
  • 若remote directory配置了,那么目标服务器必须存在该路径

不然会报一下错误:

ERROR: Exception when publishing, exception message [Failed to connect and initialize SSH connection. Message: [Failed to change to remote directory [/usr/myproject]]]

<2>在任务构建配置下(也就是Post Steps中),remote directory填写的路径,目标服务器才会自动生成该路径

如:

  • 在配置ssh server时,我配置了remote directory为/usr/myproject
  • 在侯建任务的配置中,我也配置了remote directory为/usr/myproject

那么,在目标服务器上,我传输文件的真实路径为:

/usr/myproject/usr/myproject

 

8.4、重新构建项目

注意:在配置ssh server时,我配置了remote directory为/usr/myproject,所以在目标服务器,请创建下这个路径

启动任务构建项目:

 日志如下:

8.5、检查目标服务器

  • 检查项目是否启动

  • 查看jar文件位置

8.6、访问目标服务器项目

我的springboot项目很简单,只有一个测试接口,如下:

注意:目标服务器要记得关闭防火墙,或者开发8080端口

systemctl stop firewalld

浏览器直接访问:

http://192.168.221.129:8080/test

结果如下:

9、配置构建项目前置清理脚本

9.1、在目标服务器上创建清理脚本

我的配置如下:

  • 脚本路径:/usr/myproject/
  • 脚本名称:clear.sh

如下

9.2、给脚本添加权限

chmod 777 clear.sh

9.3、jenkins配置前置步骤

9.4、编写脚本代码

vi /usr/myproject/clear.sh

我的脚本代码如下:

#!/bin/bash

#删除历史文件target目录,注意:不能删除myproject文件夹,因为ssh server中指定了该目录,必须存在
#由于每次构建,这个项目会重新覆盖,因此不需要删除
#rm -rf /usr/myproject/target/

#输出以下启动参数:./start.sh时,后面跟随的参数,我这里只跟随一个参数
# $1表示第一个
echo "arg:$1"

#获取正在运行的jar包pid
#$1:表示启动jar命令传入的第一个参数,指定下项目关键字,如我启动的项目为helloworldxxx.jar,那么./start.sh helloworld
#awk:表示字符串处理的关键字
#{printf $2}:表示获取结果中的第二列,也就是pid
pid=`ps ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`

#打印下pid
echo $pid

#判断:如果pid为空,提示一下,否则kill会杀掉不存在的pid,导致报错
#if:条件判断; -z 表示zero,非空判断(注意前后空格)
if [ -z $pid ];
	then
		ech "程序没有启动"
	else
		#kill进程
		kill -9 $pid
		echo "程序进程已kill"
fi
#fi:表示判断结束

9.5、测试前置步骤

1>首先测试是否运行helloword程序

ps -ef|grep java

2>重新构建项目,会执行前置步骤

  • 我们查看日志(在控制台界面 偏上位置):

  •  执行后,要迅速去目标服务器执行以下命令(多执行几次)
ps -ef|grep java

 至此,Linux部署jenkins,实现项目构建及发布已实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

睡竹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值