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

avatar 2018年08月22日16:33:38 9 14176 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
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • 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: