目录

一、jenkins介绍

1丶Jenkins概述

2丶Jenkins目标

3、Jenkins特性

4、产品发布流程 

二、CI/CD是什么?

1丶CI

2丶CD

三丶环境搭建

1丶一台服务器

2丶简单的SpringBoot项目

四丶Jenkins安装

1丶拉取Jenkins镜像

2、创建目录

3、启动

五丶Jenkins配置

1丶查看容器日志

2丶进入页面后,选择推荐的插件

3丶创建一个管理员

4丶安装插件

5丶安装jdk

6丶安装maven

7丶配置ssh

六丶构建项目

1、新建项目

2、输入任务名称,选择maven

3丶设置源码管理

4、设置Maven

5、修改maven配置

6、重新构建

7丶构建后自动部署

七丶Git提交后自动构建 

1、配置URL构建触发器

2、添加用户token

3、配置Gitee的WebHooks 

 八丶测试部署验收成果

1丶提交git

2丶触发自动构建 

3丶访问项目


一、jenkins介绍

中文文档:Jenkins中文文档_w3cschool

官网Jenkins

Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL(代码仓库地址),将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到Tomcat容器中。

1丶Jenkins概述

是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。

2丶Jenkins目标

① 持续、自动地构建/测试软件项目。

② 监控软件开放流程,快速问题定位及处理,提高开发效率。

3、Jenkins特性

① 开源的java语言开发持续集成工具,支持CI,CD。
② 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
③ 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
④ 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
⑥ 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

工作流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdGri74D-1631340921067)(assets/1569246908031.png)]

 测试环境中:
1.开发者会将代码上传到版本库中。
2.jenkins通过配置版本库的连接地址,获取到源代码。
3.jenkins获取到源代码之后通过参数化构建(或者触发器)开始编译打包。
4.jenkins通过调用maven(Ant或者Gradle)命令实现编译打包过程。
5.生成的war包通过ssh插件上传到远程tomcat服务器中通过shell脚本自动发布项目。
生产环境:
测试环境将项目测试没问题后,将项目推送到线上正式环境。
1.可以选择手动。
2.也可以通过调用脚本推送过去。 

4、产品发布流程 

产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

  1. 持续集成(Continuous integration,简称CI)
  2. 持续部署(continuous deployment)
  3. 持续交付(Continuous delivery)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-evkmVDE3-1631340921075)(assets/1583060962747.png)]

二、CI/CD是什么?

1丶CI

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

在这里插入图片描述

2丶CD

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

在这里插入图片描述

三丶环境搭建

1丶一台服务器

且服务器安装好了jdk

2丶简单的SpringBoot项目

并且上传至gitee

  多模块可浏览文章SpringBoot多模块打包方式

四丶Jenkins安装

1丶拉取Jenkins镜像

使用docker拉取Jenkins镜像

docker pull jenkins/jenkins:lts

2、创建目录

进入data目录,创建jenkins_home文件夹

[root@VM-4-7-centos ~]# cd /data/
[root@VM-4-7-centos ~]# mkdir jenkins_home

3、启动

docker run -di --name=jenkins -p 8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

启动失败

[root@localhost data]# docker logs  d6b5baf89d6b
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

启动失败可能的原因:

1.端口被占用

2.端口为开放

3.权限不够

权限:

在我们启动成功后可能会还是访问不到,这时候可能是因为权限不够,直接去开通一下就好了,当然你的也要是这个路径

开放权限:

chown -R 1000 /data/jenkins_home

再重新启动,等启动工作完毕后

直接访问 ip地址:8080

 到此步骤Jenkins安装已经完成!

五丶Jenkins配置

1丶查看容器日志

docker logs jenkins

 这样就能得到我们需要的密码

 

2丶进入页面后,选择推荐的插件

 

 这里可能会出现这个错误,没关系一直点重试就好了,然后就开始下载了,要确保网络通畅哦 耐心等它下载完就好了,时间可能有亿点久

注意:有一些会安装失败(我用的服务器,用虚拟机的由于有墙可能访问不到github)不建议使用虚拟机安装!

3丶创建一个管理员

 这里随便填:记住自己的账号密码即可

 不用更改,选择默认的配置保存并完成

4丶安装插件

 搜索插件 ssh和maven(红色代表与jenkins版本不匹配)

 

 点击这个按钮安装就好,继续耐心等它安装完,放心这次挺快的

 

 安装失败重新安装即可!

5丶安装jdk

全局工具配置

 点新增JDK,选择版本

 

 点击去登陆Oracle账号登录,登录了才能下载jdk

 输入自己的账号密码

 账号为up主提供的:【优极限】最透彻的Jenkins教程,2h打通Jenkins全套教程丨从自动化部署Jenkins从环境配置到项目开发_哔哩哔哩_bilibili

 先点击应用能弹出已保存就好了,然后在点击保存

 之后安装maven(如果你的项目不是maven则安装别的插件)

6丶安装maven

 点击保存

7丶配置ssh

 搜索 ssh

 添加ssh的ip和端口 , 点击添加

 

 添加服务器的账号和密码 如果点击添加没反应,没关系我们点击右上角的用户名添加一个就好了

 

 

 检测连接是否成功

六丶构建项目

1、新建项目

2、输入任务名称,选择maven

没有这个项目则下载maven插件(百度即可)

Maven Integration plugin

3丶设置源码管理

 url为自己项目的仓库地址

添加凭证输入自己的gitee账号和密码并选中

4、设置Maven

 设置目标

clean package

 然后我们先构建下,等待结束

 但是maven下载依赖速度太慢,我们可以手动关闭构建,把镜像配置为阿里云镜像

5、修改maven配置

配置文件在你的jenkins数据目录下,例如我的就是:

/data/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.2/conf

按照原先方法修改配置文件,把maven远程仓库地址改成阿里云的。

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

6、重新构建

点击 立即构建

这次下载速度就快了,构建好的jar包目录在:

/data/jenkins_home/workspace/jekins-test/service/target

jekins-test:是任务名称(我创建任务时,少打了个n)

选中查看控制台输出

根据输出就能看到jar的生成目录 

 然后我们在服务器手动启动看看是否正常

cd /data/jenkins_home/workspace/jekins-test/service/target
nohup java -jar JenkinsDemo02-0.0.1-SNAPSHOT.jar &

7丶构建后自动部署

8082是我的springboot服务端口

强制杀死某个端口进程命令,关闭jar包

sudo fuser -k -n tcp 8082

请先把刚才开启的jar包服务关掉

设置构建环境配置,构建后操作(构建前就不用设置,测试过,填了就出现错误)

配置如下:

配置说明: 

这是一段构建完成后自动运行的脚步,通过ssh连接远程服务器。

source /etc/profile                     //同步环境变量
sudo fuser -k -n tcp 8082          //强制杀死某个端口进程命令,关闭jar包,自行修改
cd /data/jenkins_home/workspace/JenkinsTest/target            //进入到项目jar包位置,自行修改
nohup java -jar JenkinsDemo02-0.0.1-SNAPSHOT.jar &        //运行jar包,自行修改
sleep 10         //超级大坑,每次服务还没启动就被杀死,休眠10s可以躲过。加不加因人而异。 

七丶Git提交后自动构建 

1、配置URL构建触发器

令牌随便输,URL格式就是下面那个英文说明,根据自己的修改

2、添加用户token

 生成,保存token信息

详情访问:通过URL触发Jenkins构建

3、配置Gitee的WebHooks 

我这里用的Gitee(学校网进GitHub很不稳定,就选择Gitee了)

Gitee项目里设置URL和秘钥

为了安全自己写个服务用来访问触发Jenkins构建的URL,不直接输入之前的URL

修改url,例如我的,根据自己规则设置

http://用户名:token@ip:端口/job/jekins-test/build?token=设置的token

 

URL格式如下: 

 http://用户名:token@ip:端口/job/jekins_test/build?token=身份验证令牌

用户名:当前jenkins 登录的用户名

token:刚刚随机生成的token

IP:服务器ip

端口:jenkins 端口

身份验证令牌:构建触发器下设置的身份令牌

中间的路径自行去自己那复制 图片已经标注出来了(每个人路径不是一致的)

示例: 

http://abcdzzr:119641551fd2f1bd229c2e27e7ec2c78cd@42.xxx.xxx.168:8080/job/JenkinsTest/build?token=abcdzzr

 

 gitee请求成功

 八丶测试部署验收成果

1丶提交git

2丶触发自动构建 

查看控制台信息 

3丶访问项目

服务器IP地址加项目端口号

 以后我们的项目只要提交gitee就能够自动,构建----->测试----->部署----->运行是不是非常方便呢!

码字不易,多谢点赞!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐