1.首先安装Jenkins(可以参考官网:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/)

导入源&&yum安装

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

安装完成后Jenkins启动之前的注意事项,方便后面操作以及少采坑:

默认情况是Jenkins是使用Jenkins用户启动的,但这个用户目前系统并没有赋予权限,这里我们将启动用户修改为root;另外Jenkins默认端口是8080,这个跟tomcat的默认端口冲突,我们也修改一下默认端口。

vi /etc/sysconfig/jenkins

--------------------------------
找到 JENKINS_USER 和JENKINS_PORT ,修改为root和你需要的端口

JENKINS_USER="root"
JENKINS_PORT="8081"

修改完成后就可以启动Jenkins了

service jenkins start
service jenkins stop
service jenkins restart

启动完成后排查防火墙是否为Jenkins设置的端口开放

然后再浏览器中输入ip+端口号就可以访问了,比如:http:192.168.31.101:8081,则会看到这样:

 

按照步骤操作

 

失败不要紧,重试就好

 

 

需要安装的插件默认安装就好了

第二部分:Jenkins集成springboot

进入Jenkins后,添加任务

选取maven项目,如果没有maven项目的话,可以去插件管理中去下载,在集成这部分前,服务器上要安装好git,maven,git版本最好大于1.7,以及jdk,然后在Jenkins中的全局工具配置中配置jdk以及maven的路径:

 

 

创建完任务后:进入任务配置

 

 

 

 

 

Jenkins将代码从你配的分支上拉下来,然后copy到指定执行的文件夹内,然后执行启动,shell脚本:

#!/bin/bash 

#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe

#指定最后编译好的jar存放的位置
www_path=/home/xytdroot/servers/food-server/

#Jenkins中编译好的jar位置
jar_path=/home/xytdroot/.jenkins/workspace/foodmgr/target/

#Jenkins中编译好的jar名称
jar_name=psycloud-food-server-v0.1.jar

#端口号
port=1480

#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')

echo "admin used pid=${pid}"
if [ -n "${pid}" ]; then
    kill -9 ${pid}
fi

#进入指定的编译好的jar的位置
cd  ${jar_path}

#将编译好的jar复制到最后指定的位置
cp  ${jar_path}/${jar_name} ${www_path}

#进入最后指定存放jar的位置
cd  ${www_path}

#杀掉以前可能启动的项目进程
#kill -9 ${pid}

#启动jar,指定SpringBoot的profiles为test,后台启动
nohup java -jar ${jar_name} --server.port=${port} &

最后保存这个配置

最后一步,运行springboot

 

设置定时构建:

 

3.3.3 定时触发构建

构建触发器: 只选中 Build periodically, “日程表”格式与 crontab 相似但有细微差别,示例如下:

## 每行由 5 个值组成(空格或TAB分隔),分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日)
## "M,N" 表示M和N;"M-N" 表示范围[M,N];"M-N/X" 表示范围[M,N]内每隔X;"*/X" 表示整个范围内每隔X
## 前面提到的M/N/X的值都可以用H(意为Hash)代替,散列值起到随机值的效果,且同一项目取值稳定,这对于项目多时分散压力很有用。
H/10  H(0-8)  *  *  1-5   ## 触发时间: 工作日、Hour为0~8按哈希随机、Minute以10为间隔
H/10  H       *  *  0,6,7 ## 触发时间: 周末、Hour为全天按哈希随机、Minute以10为间隔
## “日程表”修改后,下方会给出下次执行时间点的预告。
​​​​​

3.3.4 版本提交触发构建

构建触发器: 只选中 Poll SCM,可指定检查 SVN 代码是否有提交的时间:

 
  1. ## 格式与 "Build periodically" 相同

  2. H/10 * * * * ## 任何时候,每隔 30 分钟就检测一次 SVN,如果有提交就启动构建

  • 1
  • 2

jenkins trigger

3.3.5 Build 设置

Root POM: 指定 pom.xml 相对路径 
Goals and options: 指定 mvn 执行目标或选项,设置为 package -Dmaven.test.skip=true

3.3.6 Post Steps 设置

定制构建后的操作,通常选择“Run only if build succeeds”,支持 shell 等脚本;

 
  1. ## 脚本工作目录为: /var/lib/jenkins/workspace/fastjson

  2. # sudo systemctl stop tomcat

  3. # sudo cp -f target/*.war /opt/apache-tomcat-8.5.9/webapps/

  4. # sudo systemctl start tomcat

  5. ls -l target/*.?ar

  • 1
  • 2
  • 3
  • 4
  • 5

jenkins poststep

3.4 手工触发构建

进入 My Views, 右侧看到各个项目; 
点击进入关注的项目,点击左侧的“立即构建”; 
jenkins build
开始构建或构建完毕后,左下方列出每次构建的链接,点击进入某次构建; 
点击左侧的“Console Output”,可查看构建日志,如有报错可以看到; 
jenkins console
纠正错误后,返回到工程,再次点击“立即构建”,直至构建成功; 
如有网络相关报错,重试几次也会成功。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐