栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jenkins 自动化部署 SpringBoot 项目配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jenkins 自动化部署 SpringBoot 项目配置

Jenkins 自动化部署 SpringBoot 项目配置

文章目录
  • Jenkins 自动化部署 SpringBoot 项目配置
  • 前言
  • 正文
    • 1. 环境准备
      • 1.1 安装 Java
        • 1.1.1 卸载 OpenJDK
        • 1.1.2 下载 Java 8 压缩包
        • 1.1.3 设置环境变量
      • 1.2 安装 Maven
        • 1.2.1 下载 maven
        • 1.2.2 配置环境变量
        • 1.2.3 maven 源 & 本地仓库配置
      • 1.3 安装 Git
      • 1.4 安装 Jenkins
        • 1.4.1 下载 Jenkins
        • 1.4.2 Jenkins 启动配置
        • 1.4.3 启动 Jenkins 服务
      • 1.5 安装 Docker
    • 2. Jenkins 流水线配置
      • 2.1 初始化配置
      • 2.2 配置本地工具
        • 2.2.1 JDK 配置
        • 2.2.2 Git 路径
        • 2.2.3 Maven 配置
      • 2.3 配置凭证
        • 2.3.1 Github 用户凭证
        • 2.3.2 Github Webhook 访问 Token
      • 2.4 创建 SpringBoot 部署任务
        • 2.4.1 基本信息
        • 2.4.2 仓库源码
        • 2.4.3 构建触发时机
        • 2.4.4 具体构建任务步骤
        • 2.4.5 运行构建任务
  • 结语
  • 其他资源
    • 参考连接
    • 完整代码示例

前言

今天带大家来配置并部署一个 jenkins 服务来实现开发流程的 CI/CD,本篇就不做过多的解释了,主要是阐述操作流程

下面在命令行中看到 [root@remote]% 开头表示在服务器的命令行环境下,$ 开头则是本地的命令行

正文 1. 环境准备 1.1 安装 Java

如果你(其实是说我自己啦hh)之前是使用 yum 安装 Java,那你也有可能不小心安装到了 open-jdk 的旧版本,然而我们还是更推荐安装 Oracle 上比较完整的 JDK 版本

  • 两者者的差异看这里:https://www.cnblogs.com/sxdcgaq8080/p/7487369.html
1.1.1 卸载 OpenJDK

卸载 open-jdk 的步骤比较特殊

先查找已安装的相关包

[root@remote]% rpm -qa | grep openjdk

接下来把所有相关包都删了(对每一个包替换下面的 pkg-name 一个一个删干净)

[root@remote]% rpm -e --nodeps [pkg-name]
1.1.2 下载 Java 8 压缩包
  • Oracle 上的 Java8 JDK 安装路径:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

我们要选的是这个 linux64 位的 tar.gz 版本

下载下来之后,将其上传到服务器的 /usr/local/java 目录下,并进行解压缩

$ scp jdk-8u291-linux-x64.tar.gz root@remote:/usr/local/java/
$ ssh remote
[root@remote ~]% cd /usr/local/java
[root@remote java]% tar -xzvf jdk-8u291-linux-x64.tar.gz

1.1.3 设置环境变量

接下来配置一下服务器上的 java 环境变量,也就是大家耳熟能详的 JAVA_HOME

[root@remote]% vim ~/.bash_profile

在里面添加两个环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin

然后使用 source 使其生效

[root@remote]% source ~/.bash_profile

设置好之后检查一下 java 命令的版本

[root@remote]% java -version

看到上面的输出表示配置正确啦

1.2 安装 Maven

第二部分我们先来安装一下 maven,后面打包 springboot 的时候会用到

1.2.1 下载 maven

首先是去 apache 上下载 maven 的可运行包

  • apache 下载链接:https://maven.apache.org/download.cgi

版本倒是无所谓,反正我们只是需要这个包而已

一样下载下来之后先上传到服务器上(路径 /usr/local/maven),然后解压缩

$ scp apache-maven-3.8.2-bin.tar.gz root@remote:/usr/local/maven/
$ ssh remote
[root@remote ~]% cd /usr/local/java
[root@remote maven]% tar -xzvf apache-maven-3.8.2-bin.tar.gz

1.2.2 配置环境变量

一样 maven 也要配置一下环境变量,才能使用 mvn 指令

[root@remote]% vim ~/.bash_profile

加入下面两行

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

生效之后查看命令是否正常运行

[root@remote]% source ~/.bash_profile
[root@remote]% mvn -v

1.2.3 maven 源 & 本地仓库配置

接下来我们需要修改一下 maven 的默认配置

[root@remote]% vim /usr/local/maven/apache-maven-3.8.2/conf/settings.xml
  • 配置 maven 源仓库(使用阿里源)

标签下加入下面这段

    
      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      central
    
  • 指定本地仓库位置(资源下载目录)

在接近 setting 顶部的地方找到 ,加入下面这段

  /usr/local/maven/repository
  • 指定 JDK 版本

找到 加入下面这段

    
      jdk-1.8

      
        1.8
      
      
      
        1.8
        1.8
        1.8
      
    

到此为止就配置好啦~

1.3 安装 Git

由于待会我们要建设的工作流是使用 jenkins 拉取 Github 的代码到本地然后进行打包后部署,所以 git 工具也是不能少

[root@remote]% yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

我也不知道是不是这些工具其实,都装一装hh,下面这个才是 git 其实;最后查看一下版本就行了

[root@remote]% yum install git
[root@remote]% git --version

版本低一些也无所谓,能用就行hh(git 应该也不会低到哪里去啦哈哈)

1.4 安装 Jenkins

第四个就是我们的主角啦 - Jenkins 老爷子

1.4.1 下载 Jenkins

这次我们先直接使用 yum 来安装 jenkins,官方其实更推荐在 docker 容器内进行部署(不过 docker 目录映射的部分博主还没搞很懂,先这样玩hh)

[root@remote]% $ wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
[root@remote]% $ rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@remote]% $ yum install -y jenkins

依次运行上面几个指令直到 Completed,就算是安装完成啦

1.4.2 Jenkins 启动配置

接下来我们到 /etc/sysconfig/jenkins 内进行一些启动相关的配置

[root@remote]% vim /etc/sysconfig/jenkins
  • 修改启动端口

由于我们是在本地启动,还是不要占用 8080 这个热门的 tomcat 端口,改成 8900

  • 增加运行内存

接下来是由于 jenkins 执行任务的时候还是比较耗内存的,我们也可以在这里先配置好给他更多的启动可用内存

找到 JENKINS_JAVA_OPTIONS 的选项,改成下面这句(其实就是加上后面几个启动参数)

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
  • 修改权限

由于之后我们在 jenkins 内进行自动化部署的时候会使用到 docker 指令,然而可能存在权限不足的问题,因此我们可以把启动权限改成 root

同时修改一下用户组

[root@remote]% gpasswd -a jenkins root
1.4.3 启动 Jenkins 服务

都配置好了之后我们就可以来启动 Jenkins 服务了,顺便检查一下启动状态

[root@remote]% systemctl start jenkins
[root@remote]% systemctl status jenkins

1.5 安装 Docker

关于 Docker 的安装前一篇说过啦,自己去看

传送门:SpringBoot 部署: 项目打包 & 手动部署到阿里云服务器上 #6.1 Docker 安装

2. Jenkins 流水线配置

安装安装了老半天,终于都搞好了,接下来打开 http://[your-ip]:8900/ 开始正式的体验 jenkins 啦(记得改成你的 ip 啊)

2.1 初始化配置

刚开的时候应该是从这个页面开始

嗯人家也说的够清楚了,去 /var/jenkins_home/secrets/initialAdminPassword 找你的密码

[root@remote]% cat /var/jenkins_home/secrets/initialAdminPassword

注意如果你是使用 docker 安装的话可以试试

[root@remote]% docker logs [Container ID]

从标准输出来找到密码

进去之后选下面左边的,安装推荐的插件组就好啦

等到进度条跑完之后,是设置管理员用户密码,还是要保管好,忘记密码还是挺麻烦的哈

设置好之后他会给你一个重启按钮,接下来就进入到登陆页面啦

登陆之后就是熟悉的首页啦

2.2 配置本地工具

接下来 jenkins 是需要使用本地的 git、jdk、maven 等工具,所谓也需要配置一下路径,选择 管理 Jenkins > Global Tool Configuration

2.2.1 JDK 配置

首先是 JDK 的 JAVA_HOME 填上,也就是与系统上环境变量相同的路径就行了

[root@remote]% echo $JAVA_HOME

2.2.2 Git 路径

第二个是 Git 路径

[root@remote]% which git

2.2.3 Maven 配置

第三个是 Maven 路径的配置

[root@remote]% echo $MAVEN_HOME

2.3 配置凭证

初始化好 jenkins 之后,先别急着创建流水线。我们先帮系统加上两个需要用到的凭证

2.3.1 Github 用户凭证

第一个凭证我们先要在 jenkins 里面注册我们的 Github 用户,这样才可以正常的 pull 代码

首先先在远程机器上创建 ssh key

[root@remote]% ssh-keygen -t rsa

创建好之后第一步先把公钥加入到你的 Github 账号里面

点击用户头像 > Setting

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-043cPkdL-1632889649872)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_26_Github_sshkey_1.png)]

找到 SSH Key 的选项 > New SSH key

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GaNo6h2m-1632889649873)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_27_Github_sshkey_2.png)]

接下来将你本地上的 ~/.ssh/id_rsa.pub 也就是公钥贴到 key 的部分,然后取一个名字(title)

[root@remote]% cat ~/.ssh/id_rsa.pub

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0RB6O3Ql-1632889649874)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_28_Github_sshkey_3.png)]

接下来就可以在 jenkins 上的 Add Credential 中选择 SSH Username with private key,然后在下面的 private key 选择 Add 然后填入 ~/.ssh/id_rsa 的私钥

[root@remote]% cat ~/.ssh/id_rsa

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEKjc3iV-1632889649875)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_25_jenkins_credential_Github_user.png)]

2.3.2 Github Webhook 访问 Token

第二种凭证则是 Webhook 用到的,先到 Github 账户上 > Settings > Developer Settings > Personal Access Tokens > Generate New Token 创建一个可访问 token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r87ZdnWQ-1632889649877)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_29_Github_webhook_1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LDVQiHMq-1632889649878)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_30_Github_webhook_2.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWNXSdpg-1632889649880)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_31_Github_webhook_3.png)]

接下来则是把时间设为 No expired,然后勾选 repo 跟 repo_hook 两项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hm7UIFLA-1632889649881)(https://picures.oss-cn-beijing.aliyuncs.com/img/jenkins_deploy_springboot_32_Github_webhook_4.png)]

创建完成之后把 token 内容记好,接下来在 jenkins 里面再创建一个新的 credential,选择 Secret text,然后将 token 填在 Secret 的栏位

2.4 创建 SpringBoot 部署任务

完成凭证之后就可以来创建任务啦,到主面板选择 创建任务(新建专案)

想一个名字之后,选择 Free Style 风格

2.4.1 基本信息

接下来先来填任务的基本信息,把 Github 仓库的路径体填上

2.4.2 仓库源码

后续我们需要透过 jenkins 自己操作 git 来下载源码,选择 git,填上仓库路径(用来 git clone 的那个哦),然后选择刚刚创建过的 Github 账户的凭证,以及想要部署的分支名称

2.4.3 构建触发时机

另外我们可以设定构建的触发时机,平常可以使用手动点击建置一键部署,这边我们再额外加上刚刚创建的 Github webhook

同时别忘了到 Github 的仓库内开始 webhook:选择 Settings > Webhooks > Add Webhook,然后填入 jenkins 的路径(http://[youre-ip]:8900/github-webhook/),然后选择 json

2.4.4 具体构建任务步骤

最后一部分就是具体的构建任务啦,假设我们的项目已经存在如下的 Dockerfile 配置

# Docker image for springboot file run
# VERSION 0.0.1
# Author: superfree
# environment
FROM java:8
# author
MAINTAINER superfree 
# volume 宗卷
VOLUME /tmp

ADD target/logger-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这时候我们就可以创造两个构建步骤

  1. 第一个是调用顶层的 maven 指令进行项目打包(图片里面错了,不用加 maven 指令)
clean package
  1. 第二步则是编写 docker 运行脚本
docker stop youxian-logger-pre ||true
docker rmi youxian-logger-pre ||true
docker build -t youxian-logger-pre .
docker run --rm --name youxian-logger-pre -d -p 8081:8081 youxian-logger-pre

2.4.5 运行构建任务

最后去到任务里面点一下构建就能等待结果啦

结语

整体来说其实配置是不难的,就是很繁琐,还会遇到一堆奇奇怪怪的问题,而且 Jenkins 消耗的资源还是挺多的,我用的阿里云 1 核 2 G 的一次运行 mysql + docker + jenkins 有点扛不住,内存平均消耗都在 90% 以上hh,之后看看能不能尝试部署到容器内来进行统一的内存管理调度

其他资源 参考连接
Titlelink
yum安装java的位置_Centos 7 查看使用YUM 安装的JDK路径并配置JAVA_HOMEhttps://blog.csdn.net/weixin_32375369/article/details/114555129
Centos7安装mavenhttps://www.cnblogs.com/116970u/p/11211963.html
Downloading Apache Maven 3.8.2https://maven.apache.org/download.cgi
CentOS压缩与解压https://blog.csdn.net/shumeigang/article/details/80694719
《阿里云服务器搭建》------ 安装Githttps://blog.csdn.net/tomatocc/article/details/83933041
安装Jenkins - 安装Jenkinshttps://www.jenkins.io/zh/doc/book/installing/
centos下搭建Jenkins持续集成环境(安装jenkins)https://www.cnblogs.com/loveyouyou616/p/8714544.html
Public key for jenkins-2.288-1.1.noarch.rpm is not installed的解决方法https://blog.csdn.net/u010662249/article/details/115896468
jenkins credentials & git ssh 认证https://blog.csdn.net/gw569453350game/article/details/51911179
怎么样使用yum来安装、卸载jdkhttps://www.cnblogs.com/dingjiaoyang/p/5102827.html
【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别https://www.cnblogs.com/sxdcgaq8080/p/7487369.html
【Linux】CentOS7下安装JDK详细过程https://www.cnblogs.com/sxdcgaq8080/p/7492426.html
Java SE 8 Archive Downloads - Oraclehttps://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
Jenkins安装之踩坑记录https://blog.csdn.net/qq_39884410/article/details/100073607
Jenkins用户授予root权限https://www.cnblogs.com/heyongboke/p/11996774.html
解决jenkins中运行docker无权限问题 以root用户运行jenkins中shell命令https://blog.csdn.net/qq_39507276/article/details/103315466
docker常规操作——启动、停止、重启容器实例https://www.cnblogs.com/personblog/p/10762875.html
jenkins+docker实现自动编译、打包、构建镜像、容器部署https://blog.csdn.net/xiaoxiangzi520/article/details/88842200/
docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。https://blog.csdn.net/u011337602/article/details/104541261
使用Jenkins+docker 部署springboot项目https://blog.csdn.net/qq_38157516/article/details/90139120
使用Jenkins配置SpringBoot的自动化构建https://blog.csdn.net/xlgen157387/article/details/78733729
使用Jenkins配置Git+Maven的自动化构建https://blog.csdn.net/xlgen157387/article/details/50353317
bash忽略错误继续执行_忽略Shell脚本中的特定错误https://blog.csdn.net/weixin_39614754/article/details/111854550
SpringBoot升级2.4.0所出现的问题:When allowCredentials is true, allowedOrigins cannot contain the speciahttps://blog.csdn.net/jxysgzs/article/details/110818712
IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special vhttps://blog.csdn.net/weixin_51579730/article/details/111142073
手把手教你使用 Jenkins 配合 Github hook 持续集成https://blog.csdn.net/weixin_38320674/article/details/110412976
Jenkins内存溢出的处理方法https://www.cnblogs.com/EasonJim/p/6394434.html
BUILD STEP ‘INVOKE TOP-LEVEL MAVEN TARGETS’ MARKED BUILD AS FAILURE FINISHED解决方案https://www.freesion.com/article/8213184540/
Build step ‘Invoke top-level Maven targets’ marked build as failure Finished解决https://www.cnblogs.com/yangyuke1994/p/10592847.html
完整代码示例

代码都在过程中啦,项目自己搞一个吧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号