目录


一、jenkins介绍

官网: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等。

工作流程图:

 测试环境中:
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)
二、CI/CD是什么?

1丶CI

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

2丶CD

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

三丶环境搭建

1丶一台服务器

且服务器安装好了jdk

2丶简单的SpringBoot项目

并且上传至gitee

四丶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

 输入自己的账号密码

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

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

6丶安装maven

 点击保存

7丶配置ssh

 搜索 ssh

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

 

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

 

 

 检测连接是否成功

六丶构建项目

1、新建项目

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

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

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信息

3、配置Gitee的WebHooks 

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

Gitee项目里设置URL和秘钥

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

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

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

 

URL格式如下: 

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

 gitee请求成功

 八丶测试部署验收成果

1丶提交git

2丶触发自动构建 

查看控制台信息 

3丶访问项目

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

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

码字不易,多谢点赞!