当前位置: 首页>后端>正文

jenkins GitHub部署springboot jenkins构建springboot


jekins介绍部署以及springboot项目构建实践

  • 1.基本信息
  • 1.1 jenkins介绍
  • 1.2 CI/CD
  • 3.安装部署
  • 3.1 安装jdk环境
  • 3.2 Tomcat环境
  • 3.3 Jenkins环境
  • 3.4 git客户端安装
  • 3.5 安装maven
  • 4.基础配置
  • 4.1 系统配置
  • 4.2 配置gitlab
  • 4.2 配置Publish over SSH
  • 5. 项目配置
  • 5.1 新建项目
  • 5.2 配置源码管理项
  • 5.3 配置Build方式
  • 5.4 Post-build Actions配置
  • 6. 项目构建
  • 7. 参考资料


经常听到有团队使用持续集成持续交付工具进行项目的自动构建、测试、部署等,在2019年度也有幸使接触到部分操作,当时仅作为使用和了解并未考虑到如何自己搭建一套进行实战使用。目前阶段也在接触到所谓的中台工具,一键打包部署等操作。在此背景下,抽时间对线上资料进行学习总结梳理,选择开源工具jenkins,结合maven、gitlab等,实际操作搭建真实的环境,并构建简单springboot工程,完整成功的打通了一个项目的上传代码、自动构建、自动部署流程。本文一方面整理汇总了相关的资料理论知识,另一方面详细介绍了构建的各个过程,即可为后续的持续深入学习做准备,亦可为后来者提供参考借鉴。文中不免疏漏之处,望读者不吝指正,不胜感激!

1.基本信息

1.1 jenkins介绍

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

Jenkins特点:
开源免费;
跨平台,支持所有的平台;
master/slave支持分布式的build;
web形式的可视化的管理页面;
安装配置超级简单;
tips及时快速的帮助;
已有的200多个插件

1.2 CI/CD

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_jenkins,第1张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_02,第2张

3.安装部署

3.1 安装jdk环境

jdk-8u241-linux-x64

3.2 Tomcat环境

Tomcat8.5.76 下载路径
下载:

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.76/bin/apache-tomcat-8.5.76.tar.gz

解压、启动

3.3 Jenkins环境

Jenkins 2.319.3
下载:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.319.3/jenkins.war

复制到tomcat/webapps下

3.4 git客户端安装

参考centos7安装部署gitlab中centos系统安装git客户端内容

3.5 安装maven

下载

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

复制到/usr/local/maven下,解压
创建本地仓库文件路径 mkdir repo
修改配置文件,本地仓库地址以及阿里云仓库镜像

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

配置环境变量/etc/profile

export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

启动tomcat后,访问192.168.109.128:8080/jenkins,admin默认密码在提示页路径下:/root/.jenkins/secrets/initialAdminPassword中

输入密码跳转,插件安装,关闭,可暂时不安装

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_maven_03,第3张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_spring boot_04,第4张

4.基础配置

4.1 系统配置

配置JDK、Git、Maven,

jenkins所在服务器如已配置jdk、git、maven系统配置,此处可略过

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_maven_05,第5张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_maven_06,第6张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_git_07,第7张

4.2 配置gitlab

Jenkins连接gitlab需要配置access token,所以先在gitlab上生成access token,后将该token配置在Jenkins上。(access token只需配置一次,后续每个工程直接使用即可)

1、安装GitLab插件

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_08,第8张

2、gitlab 生成token

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_spring boot_09,第9张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_git_10,第10张

3、配置系统Gitlab连接信息

登陆Jenkins,点击“系统管理”->“系统设置”-> “gitlab”,配置如下

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_git_11,第11张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_12,第12张

4.2 配置Publish over SSH

1、参考上文安装gitlab插件流程,安装Publish over SSH插件,该插件在于自动部署时远程登录部署目标机器以及执行脚本使用;

2、生成密钥
现在两台服务器,一台你本地的jenkins虚拟机A,一台部署服务目标服务器B

A服务器
 //生成密钥对,执行过程需要输入Passphrase,记住该参数
ssh-keygen
 //按照提示输入B密码就可以了
ssh-copy-id -i /root/.ssh/id_rsa.pub root@B服务器ip 
//如果报错密钥验证失败,可以删除密钥后,重新用ssh-keygen 生成密钥对重复操作即可

3、jenkins—dashboard—configuration找到Publish over SSH模块,输入上面对应参数

Path key不需要填写,
Key是jenkins所在服务器的id_rsa,
Passphrase为密钥生成过程输入的密码

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_jenkins_13,第13张

4、配置ssh server

name:自己命名即可,
hostname:目标服务器域名或服务器,默认端口22
username:用户名
remote directory:配置根目录即可,后文项目可具体配置jar包传递目录

点击 test configuration 可测试配置,出现success 后,保存即可

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_maven_14,第14张

5. 项目配置

5.1 新建项目

new Item,构建maven项目

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_maven_15,第15张

5.2 配置源码管理项

选择git,credentials既可选择上文配置的accesstoken,也可以选择账户密码方式

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_jenkins_16,第16张

5.3 配置Build方式

选择maven打包指令

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_spring boot_17,第17张

5.4 Post-build Actions配置

1、构建后配置,涉及打包后文件上传路径、脚本执行等操作

选择send build artifacts over ssh

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_git_18,第18张

2、配置细节

name选择前文配置的ssh名称,
source file为打包后jar包路径,
remove prefix为打包jar包路径,
remote directory为远程部署机器路径,
exec command为jar包上传后的启动jar包命令,可为shell脚本命令

配置完成保存即可,
为确保exec command中shell脚本在实际的构建部署过程中执行,需注意

#!/bin/bash
下方增加一行
source /etc/profile
在启动命令前增加一行
BUILD_ID=dontKillMe
nohup java -jar test_demo.jar > test.log 2>&1 &

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_19,第19张

3、启动脚本范文

#!/bin/bash
source /etc/profile

DATE=$(date +%Y%m%d)
DIR=/usr/local/project-jar
JARFILE=test-01-1.0-SNAPSHOT.jar

if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR

pid=`ps -ef|grep $JARFILE | grep -v grep | awk '{print }'`
echo "pid: $pid "
if [ $pid ];
then
  echo "pid: $pid"
  kill -9 $pid
  echo "服务停止成功"
else
  echo "未找到对应服务"
fi

#mv $JARFILE backup/$JARFILE$DATE

BUILD_ID=dontKillMe
nohup java -jar $JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

6. 项目构建

1、点击项目名称,进入项目界面

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_20,第20张

2、点击 Build Now即可开始构建,左下方可查看构建历史

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_git_21,第21张

3、绿色为构建成功,黄色为构建失败,通过console output可查看构建详细信息进行调试

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_服务器_22,第22张

jenkins GitHub部署springboot jenkins构建springboot,jenkins GitHub部署springboot jenkins构建springboot_spring boot_23,第23张

4、构建中常见问题

1)ssh问题,ssh验证不通过,无法向远程目标服务器上传jar包

2)远程jar包上传目标服务器路径问题

3)exec command中shell脚本执行问题

详细参考上文配置过程细节即可避免


https://www.xamrdz.com/backend/3c21922057.html

相关文章: