Linux安装Jenkins并构建SpringBoot工程

1. 简介

  Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。
  官网:https://www.jenkins.io/zh/

  • 主要用于:
    • 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl;
    • 监控一些定时执行的任务。
  • 特点:
    • 开源免费;
    • 跨平台,支持所有的平台;
    • master/slave支持分布式的build;
    • web形式的可视化的管理页面;
    • 安装配置超级简单;
    • tips及时快速的帮助;
    • 已有的200多个插件。
2. 安装前需要准备
序号名称参考博客
1Jdk1.8Linux安装Jdk1.8并配置环境变量
2MavenLinux安装Maven并配置环境变量
3GitLinux安装git
3. 安装Jenkins
  • 添加Jenkins源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

# 如果之前导入过Jenkins密钥,则此步骤报错,请忽略
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
  • yum源安装Jenkins
yum -y install jenkins
  • 安装完成后重点目录说明
路径说明
/usr/lib/jenkins/jenkins.warWar包位置
/etc/sysconfig/jenkinsJenkins配置文件
/var/lib/jenkins/默认的Jenkins Home目录
/var/log/jenkins/jenkins.logJenkins日志文件
  • 修改端口(可选)
# 因为Jenkins默认端口为8080,容易和Tomcat冲突,因此需要修改为:8010
vim /etc/sysconfig/jenkins

# 修改参数
JENKINS_PORT="8010"
  • 启动Jenkins
service jenkins start
  • 异常处理
    • 报错
    # 报错信息:
    Starting jenkins (via systemctl): Job for jenkins.service failed because the control process.service" and "journalctl -xe" for details.
      因为Jenkins的配置信息中没有Java命令,如果没有安装JDK,则可参考博客:Linux安装Jdk1.8并配置环境变量
      如果通过yum源安装,则Java命令路径为:/usr/bin/java,无需额外配置;如果为介质安装,需要手动添加Java命令路径:/usr/local/java/jdk1.8.0_291/bin/java。建议通过介质安装JDK1.8。
    vim /etc/init.d/jenkins
    
    # 在属性candidates中添加java命令路径
    /usr/local/java/jdk1.8.0_291/bin/java
    • 警告
    # 警告信息:
    Warning: jenkins.service changed on disk. Run 'systemctl daemon-reload' to reload units.
      提示Jenkins服务在磁盘上已经修改,建议执行systemctl daemon-reload命令。可以执行,也可忽略。
    • 处理后重新启动Jenkins
    service jenkins start
4. 初始化配置
  • 浏览器访问:http://{ip}:8010

      Jenkins的初始化admin的密码存放在:/var/lib/jenkins/secrets/initialAdminPassword下。
cat /var/lib/jenkins/secrets/initialAdminPassword
  • 安装推荐插件

      推荐安装Jenkins社区推荐的插件。
  • 创建账号

      可以创建管理员账号,也可以使用admin账号。这里,点击使用admin账号继续按钮。
  • 实例配置

      配置Jenkins实例,点击保存并完成即可。
5. 开始使用
  • 修改admin密码(可选)
      如果已经创建了管理员账号,可以使用自己创建的账号。如果继续使用admin账号,为了安全考虑,建议修改admin账号的密码。修改后重新登录即可。
  • 如果发现Jenkins的汉化并不是很完整,建议重启
service jenkins restart

  • 安装插件
      因为目前大部分项目都是Maven项目,因此,需要安装Maven插件。安装选项建议勾选“安装完成后重启Jenkins(空闲时)”。

      因为需要将项目远程部署到另外一台服务器,因此需要SSH插件。安装选项建议勾选“安装完成后重启Jenkins(空闲时)”。
  • 全局工具配置
    • JDK配置

        需要配置名称,和JAVA_HOME,并取消“自动安装”选项。
    # 如果是yum源安装的jdk1.8,则JAVA_HOME路径查询方法为:
    which java
    
    # 返回
    /usr/bin/java
    
    # ls -l命令
    ls -l /usr/bin/java
    
    # 返回
    lrwxrwxrwx 1 root root 22 Nov 13 14:37 /usr/bin/java -> /etc/alternatives/java
    
    # ls -l命令
    ls -l /etc/alternatives/java
    
    # 返回
    lrwxrwxrwx 1 root root 73 Nov 13 14:37 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre/bin/java
    
    # 则JAVA_HOME路径为:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
    
    # 如果是介质方式安装,则通过环境变量查询JAVA_HOME
    echo $JAVA_HOME
    • Git配置

        需要配置名称,和git命令的路径,并取消“自动安装”选项。
    which git
    • Maven配置

        需要配置名称,和MAVEN_HOME路径,并取消“自动安装”选项。
    # Maven建议介质方式安装,可以参考博客:https://www.cnblogs.com/cao-lei/p/14768835.html
    # 根据环境变量查询MAVEN_HOME路径
    echo $MAVEN_HOME
  • 系统配置
    • 如果需要部署到远程服务器,需要配置SSH相关信息。

        配置服务器密码,新增SSH,配置名称、主机名、用户名称和远程路径(建议设置为“/”),点击高级设置,可以设置连接端口等信息。设置完成后可以点击“Test Configuration”按钮测试连接。
6. 构建任务并发布到远程服务器

  •   填写任务名称,选择“构建一个maven项目”,点击“确定”按钮。

  •   可以填写任务描述。
      根据实际情况,可以配置“丢弃旧的构建”。

  •   选择“Git”,填写仓库URL。第一次构建需要设置git账号和密码,以后可以选择之前设置的用户名和密码或者填写新的账号信息。
      点击“Credentials”下的添加按钮,在弹出的页面填写用户名和密码,点击“添加”按钮,然后在左侧选择刚刚添加的账号信息即可。
      默认指定分支为master分支,可以根据需要修改。

  •   如果项目需要固定的时间构建,则可以配置定时构建。

      定时构建的日程表规则如下:
# 语法
* * * * *

# 第一个*表示分钟,取值0~59
# 第二个*表示小时,取值0~23
# 第三个*表示一个月的第几天,取值1~31
# 第四个*表示第几月,取值1~12
# 第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

# 举例
# 每5分钟构建一次
H/5 * * * *

# 每两小时构建一次
H H/2 * * *

# 每天12点构建一次
H 12 * * *

# 每天18点构建一次
H 18 * * *

# 在每前半个小时内的每10分钟构建一次
H(0-29)/10 * * * *

# 每周一到周五的9点至18点之间,每两小时构建一次
H 9-18/2 * * 1-5

  •   建议勾选“Add timestamps to the Console Output”,勾选后在构建的日志信息中会有时间戳。

  •   本次示例中不需要配置。

  •   配置pom.xml的相对位置,一般pom.xml在项目的根路径,因此不需要改动。
      配置Maven打包命令:clean install -Dmaven.test.skip=true

  •   勾选“Run only if build succeeds”仅在构建成功后运行。

  •   选择“Send build artifacts over SSH”,将构建后的包发送到远程服务器。选择在全局配置中配置的服务器信息,填写迁移包相关信息。
属性说明示例
Source files项目生成包的相对路径target/*.jar
Remove prefix包路径前缀target
Remote directory远程服务器的路径,注意此处为全局配置远程路径(“/”)的相对路径/data/app/jar
Exec command指定命令sh /data/app/startup.sh

  在/data/app下创建文件startup.sh:

# 创建文件
cd /data/app
touch startup.sh

# 编辑内容
DIR=//data/app/jar/
JARFILE=web-0.0.1-SNAPSHOT.jar

cd $DIR
ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
java -jar $JARFILE > out.log &
if [ $? = 0 ];then
        sleep 10
        tail -n 100 out.log
fi

# 退出并保存,如果在全局配置的SSH用户不是root用户,请给该用户授权

  •   如果配置了定时构建,可以等下一次执行时间自动构建。当然,点击左侧“立即构建”或者回到首页,点击后边的“构建”按钮即可。
      在构建过程中,可以在左侧底部点击进度条查看控制台日志。
7. 构建任务并发布到同一服务器
sh /data/app/jar2/stop.sh
sh /data/app/jar2/startup.sh
  • 构建后操作(无需配置)
  • 创建脚本
cd /data/app
mkdir jar2

# 创建停止脚本
touch stop.sh

# 编辑内容
#!/bin/bash
echo "start stop SpringBoot Application"
pid=`ps -ef | grep web-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
rm -rf /data/app/jar2/*.jar
echo "end stop SpringBoot Application"

# 保存并退出

# 创建启动脚本
touch startup.sh

# 编辑内容
# export BUILD_ID=dontKillMe为必须。因为默认Jenkins执行完后会kill自己的进程,因此也会将启动的进程kill。
#!/bin/bash
export BUILD_ID=dontKillMe
echo "start startup SpringBoot Application"
cp /usr/local/maven/repository/com/c3stones/web/0.0.1-SNAPSHOT/web-0.0.1-SNAPSHOT.jar /data/app/jar2
cd /data/app/jar2/
nohup java -jar web-0.0.1-SNAPSHOT.jar &
echo "end startup SpringBoot Application"

# 保存并退出

  • 特别注意
      因为Jenkins使用的默认用户为jenkins,因此在配置完成后,执行构建操作会提示没有权限。
+ sh /data/app/jar2/stop.sh
start stop SpringBoot Application
/data/app/jar2/stop.sh: line 6: kill: (28812) - Operation not permitted
end stop SpringBoot Application
+ sh /data/app/jar2/startup.sh
start startup SpringBoot Application
cp: cannot create regular file ‘/data/app/jar2/web-0.0.1-SNAPSHOT.jar’: Permission denied
end startup SpringBoot Application
Error: Unable to access jarfile web-0.0.1-SNAPSHOT.jar

  有两种解决方案:
  (1)修改Jenkins默认用户为root,快速但不安全;

vim /etc/sysconfig/jenkins

# 修改JENKINS_USER="jenkins"为root
JENKINS_USER="root"

# 退出并保存

# 重启Jenkins
service jenkins restart

  (2)给Jenkins用户授权,安全推荐使用;
  此示例使用第一种方案。

8. 扩展

  可以将上述Post Steps执行两种脚本合并为一个脚本即可:

# 在执行shell只改为
sh sh /data/app/jar2/restart.sh

# 创建重启脚本
cd /data/app/jar2
touch restart.sh

# 编辑内容
#!/bin/bash
# stop
echo "start stop SpringBoot Application"
pid=`ps -ef | grep web-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
rm -rf /data/app/jar2/*.jar
echo "end stop SpringBoot Application"

# start
export BUILD_ID=dontKillMe
echo "start startup SpringBoot Application"
cp /usr/local/maven/repository/com/c3stones/web/0.0.1-SNAPSHOT/web-0.0.1-SNAPSHOT.jar /data/app/jar2
cd /data/app/jar2/
nohup java -jar web-0.0.1-SNAPSHOT.jar &
echo "end startup SpringBoot Application"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值