2022/7/2 Jenkins详细教程

目录

一、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丶访问项目


2022/7/2 Jenkins详细教程_第1张图片

一、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等。

工作流程图:

2022/7/2 Jenkins详细教程_第2张图片

 测试环境中:
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)

2022/7/2 Jenkins详细教程_第3张图片

二、CI/CD是什么?

1丶CI

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

2022/7/2 Jenkins详细教程_第4张图片

2丶CD

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

2022/7/2 Jenkins详细教程_第5张图片

三丶环境搭建

1丶一台服务器

且服务器安装好了jdk

2022/7/2 Jenkins详细教程_第6张图片

2丶简单的SpringBoot项目

并且上传至gitee

2022/7/2 Jenkins详细教程_第7张图片

  多模块可浏览文章: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

2022/7/2 Jenkins详细教程_第8张图片

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

五丶Jenkins配置

1丶查看容器日志

docker logs jenkins

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

2022/7/2 Jenkins详细教程_第9张图片

 2022/7/2 Jenkins详细教程_第10张图片

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

2022/7/2 Jenkins详细教程_第11张图片

2022/7/2 Jenkins详细教程_第12张图片 

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

2022/7/2 Jenkins详细教程_第13张图片

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

3丶创建一个管理员

2022/7/2 Jenkins详细教程_第14张图片

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

2022/7/2 Jenkins详细教程_第15张图片

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

4丶安装插件

2022/7/2 Jenkins详细教程_第16张图片

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

2022/7/2 Jenkins详细教程_第17张图片

 2022/7/2 Jenkins详细教程_第18张图片

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

 2022/7/2 Jenkins详细教程_第19张图片

 安装失败重新安装即可!

5丶安装jdk

全局工具配置

2022/7/2 Jenkins详细教程_第20张图片

 点新增JDK,选择版本

 2022/7/2 Jenkins详细教程_第21张图片

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

2022/7/2 Jenkins详细教程_第22张图片

 输入自己的账号密码

2022/7/2 Jenkins详细教程_第23张图片

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

2022/7/2 Jenkins详细教程_第24张图片

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

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

6丶安装maven

2022/7/2 Jenkins详细教程_第25张图片

 点击保存

7丶配置ssh

2022/7/2 Jenkins详细教程_第26张图片

 搜索 ssh

2022/7/2 Jenkins详细教程_第27张图片

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

2022/7/2 Jenkins详细教程_第28张图片

 2022/7/2 Jenkins详细教程_第29张图片

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

2022/7/2 Jenkins详细教程_第30张图片

2022/7/2 Jenkins详细教程_第31张图片

 2022/7/2 Jenkins详细教程_第32张图片

 2022/7/2 Jenkins详细教程_第33张图片

 检测连接是否成功

2022/7/2 Jenkins详细教程_第34张图片

六丶构建项目

1、新建项目

2022/7/2 Jenkins详细教程_第35张图片

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

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

Maven Integration plugin

2022/7/2 Jenkins详细教程_第36张图片

3丶设置源码管理

2022/7/2 Jenkins详细教程_第37张图片

 url为自己项目的仓库地址

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

4、设置Maven

2022/7/2 Jenkins详细教程_第38张图片

 设置目标

clean package

2022/7/2 Jenkins详细教程_第39张图片

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

2022/7/2 Jenkins详细教程_第40张图片

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

5、修改maven配置

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

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

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

2022/7/2 Jenkins详细教程_第41张图片

         
          alimaven
          aliyun maven
          http://maven.aliyun.com/nexus/content/groups/public/
         central       
       

6、重新构建

点击 立即构建

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

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

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

选中查看控制台输出

2022/7/2 Jenkins详细教程_第42张图片

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

2022/7/2 Jenkins详细教程_第43张图片

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

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包服务关掉

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

配置如下:

2022/7/2 Jenkins详细教程_第44张图片

配置说明: 

这是一段构建完成后自动运行的脚步,通过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格式就是下面那个英文说明,根据自己的修改

2022/7/2 Jenkins详细教程_第45张图片

2、添加用户token

2022/7/2 Jenkins详细教程_第46张图片

 生成,保存token信息

2022/7/2 Jenkins详细教程_第47张图片

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

3、配置Gitee的WebHooks 

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

Gitee项目里设置URL和秘钥

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

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

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

2022/7/2 Jenkins详细教程_第48张图片

 2022/7/2 Jenkins详细教程_第49张图片

URL格式如下: 

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

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

token:刚刚随机生成的token

IP:服务器ip

端口:jenkins 端口

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

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

2022/7/2 Jenkins详细教程_第50张图片

示例: 

http://abcdzzr:[email protected]:8080/job/JenkinsTest/build?token=abcdzzr

 

 gitee请求成功

2022/7/2 Jenkins详细教程_第51张图片

 八丶测试部署验收成果

1丶提交git

2022/7/2 Jenkins详细教程_第52张图片

2丶触发自动构建 

2022/7/2 Jenkins详细教程_第53张图片

查看控制台信息 

2022/7/2 Jenkins详细教程_第54张图片

3丶访问项目

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

2022/7/2 Jenkins详细教程_第55张图片

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

码字不易,多谢点赞!

你可能感兴趣的:(Jenkins,jenkins,运维,java)