使用jenkins持续构建、部署SpringBoot项目

avatar 2018年08月22日16:33:38 9 14811 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
jenkins是devops神器,本篇文章介绍如何安装和使用 jenkins 部署Spring Boot项目。


一、Linux 环境搭建


为了接近后面的生产环境,我这里使用 Linux 来测试(其实 Windows 也可以安装 Jenkins 的)。

在 win10 上安装 VMware Workstation Pro 虚拟机,使用 NAT 模式(本机和虚拟机都可以上网)。

虚拟机安装 ubuntu16.04 系统。代码是从 Git 上拉取。



1、安装 ssh
  • sudo apt-get update  # 更新软件源
  • sudo apt-get install openssh-server  # 安装ssh
  • sudo ps -e |grep ssh ## 查询是否启动 ,如果没有启动 sudo service ssh start 启动
  • 使用gedit修改配置文件”/etc/ssh/sshd_config” 获取远程ROOT权限
    打开”终端窗口”,输入”sudo gedit /etc/ssh/sshd_config“–>回车–>把配置文件中的”PermitRootLogin without-password“加一个”#”号,把它注释掉–>再增加一句”PermitRootLogin yes“–>保存,修改成功




查看ip:ifconfig



2、安装 vim

sudo apt-get install vim



3、本地使用 git bash 或者 XShell 等工具ssh 远程连接

示例

ssh -q -l root -p 22 192.168.28.128



4、安装 jdk

sudo apt-get install openjdk-8-jdk

java -version # 查看是否安装成功

且 java 安装目录在 /usr/lib/jvm/java-8-openjdk-amd64



5、安装 maven

版本要求maven3.5.0

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz  ## 下载

tar vxf apache-maven-3.5.0-bin.tar.gz  ## 解压

mv apache-maven-3.5.0 /usr/local/maven3  ## 移动



修改环境变量

在/etc/profile (也有可能是在 ~/.bash_profile)中添加以下几行
  1. MAVEN_HOME=/usr/local/maven3
  2. export MAVEN_HOME
  3. export PATH=${PATH}:${MAVEN_HOME}/bin



记得执行source /etc/profile使环境变量生效。

验证

最后运行mvn -v验证maven是否安装成功



6、安装 Git

sudo apt-get install git # 安装git

git config --global user.name "saysky"

git config --global user.email "847064370@qq.com"



7、关闭防火墙

sudo ufw status # 查看防火墙状态

sudo ufw disable  #关闭防火墙


二、项目准备


1、在本地完成一个 SpringBoot 的 HelloWorld 项目,提交到码云(gitee.com,主要比 github 访问快点)上

代码地址:https://gitee.com/nicejava/HelloWorld



2、在 Linux 内新建目录

/home/saysky/workspace

/home/saysky/workspace/backup

/home/saysky/workspace/Jenkins-in



3、在 /home/saysky/workspace/Jenkins-in 内创建 stop.sh、replace.sh



stop.sh
  1. # 将应用停止
  2. #stop.sh
  3. #!/bin/bash
  4. echo "Stopping SpringBoot Application"
  5. pid=`ps -ef | grep hello-world-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
  6. if [ -n "$pid" ]
  7. then
  8.    kill -9 $pid
  9. fi

replace.sh
  1. #replace.sh 用于将上次构建的结果备份,然后将新的构建结果移动到合适的位置
  2. #!/bin/bash
  3. # 先判断文件是否存在,如果存在,则备份
  4. file="/www/server/workspace/autumn-0.0.1-SNAPSHOT.jar"
  5. if [ -f "$file" ]
  6. then
  7.    mv /home/saysky/workspace/hello-world-0.0.1-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
  8. fi
  9. mv /root/.jenkins/workspace/HelloWorld/target/hello-world-0.0.1-SNAPSHOT.jar /home/saysky/workspace/hello-world-0.0.1-SNAPSHOT.jar







注意:这几个文件的创建可以到第五章第7步再做,放在这里是主要是方便以后查看。


三、jenkins 安装


下载

cd /opt

wget http://mirrors.jenkins.io/war/2.83/jenkins.war



启动服务

默认启动在8080

java -jar jenkins.war &

启动在指定端口可以

nohup java -jar jenkins.war --httpPort=8080 &



Jenkins 就启动成功了!它的war包自带Jetty服务器

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





浏览器访问:http://localhost:8080/

因为项目是启动在 ubuntu 系统里,所以我们在外面可以用服务器ip访问

http://192.168.28.128:8080



输入上面的密码

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





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





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


四、 Jenkins 系统配置


进入 系统管理-》全局工具配置

1、设置 jdk(前面安装的java,但是显示不在 jenkins 里的错误,所以这里再手动安装)





2、设置 Git





3、设置 Maven








五、部署项目


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



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

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

如果你没有第二个选项,需要安装 Maven Integration plugin 插件



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





3、源码管理,选择sgit,配置Git相关信息





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





5、在Build中输入打包前的mvn命令,如:
  1. clean install -Dmaven.test.skip=true -Ptest





6、Post Steps 选择 Run only if build succeeds





7、点击Add post-build step,选择 Excute Shell





其中shell命令中的 shell 脚本再第二章已经创建。
  1. cd /home/saysky/Jenkins-in
  2. sh stop.sh
  3. sh replace.sh
  4. BUILD_ID=dontKillMe nohup java -jar /home/saysky/workspace/helloworld-0.0.1-SNAPSHOT.jar &

保存


六、构建项目


点击左侧立即构建





左侧有构建项目状态,如果构建成功会执行我们之前填的 shell 命令,如 java -jar 命令





左侧有构建状态,蓝色表示成功,红色表示失败。




点进去可以查看本次构建信息,点击左侧的控制台日志





里面有从 gitee 拉去项目代码,Maven 打包项目,运行 jar 项目的日志







访问项目,成功!





以后我们频繁更新项目,部署项目就方便多了









  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:2   待审核评论数:0
  1. avatar 渡口之力

    按照 你的还有错误啊,可以看下吗? 2019-08-06 02:23:23.683+0000 [id=37] WARNING h.p.t.TimestamperBuildWrapper$ConsoleLogFilterImpl#decorateLogger: File already exists: /root/.jenkins/jobs/demo/builds/28/timestamper/timestamps java.io.IOException: File already exists: /root/.jenkins/jobs/demo/builds/28/timestamper/timestamps at hudson.plugins.timestamper.io.TimestampsWriter.(TimestampsWriter.java:96) at hudson.plugins.timestamper.TimestamperBuildWrapper$ConsoleLogFilterImpl.decorateLogger(TimestamperBuildWrapper.java:117) at jenkins.tasks.SimpleBuildWrapper.decorateLogger(SimpleBuildWrapper.java:193) at hudson.maven.MavenBuild$ProxyImpl2.(MavenBuild.java:600) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:733) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504) at hudson.model.Run.execute(Run.java:1815) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) 2019-08-06 02:23:53.719+0000 [id=37] WARNING hudson.Proc$LocalProc#join: Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information java.lang.Exception at hudson.Proc$LocalProc.join(Proc.java:335)

  2. avatar H10

    写的很好 :mrgreen: