目录
一、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中文文档_w3cschool
官网:Jenkins
Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL(代码仓库地址),将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到Tomcat容器中。
是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。
① 持续、自动地构建/测试软件项目。
② 监控软件开放流程,快速问题定位及处理,提高开发效率。
① 开源的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.也可以通过调用脚本推送过去。
产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。
且服务器安装好了jdk
并且上传至gitee
多模块可浏览文章:SpringBoot多模块打包方式
使用docker拉取Jenkins镜像
docker pull jenkins/jenkins:lts
进入data目录,创建jenkins_home文件夹
[root@VM-4-7-centos ~]# cd /data/
[root@VM-4-7-centos ~]# mkdir jenkins_home
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安装已经完成!
docker logs jenkins
这样就能得到我们需要的密码
这里可能会出现这个错误,没关系一直点重试就好了,然后就开始下载了,要确保网络通畅哦 耐心等它下载完就好了,时间可能有亿点久
注意:有一些会安装失败(我用的服务器,用虚拟机的由于有墙可能访问不到github)不建议使用虚拟机安装!
这里随便填:记住自己的账号密码即可
不用更改,选择默认的配置保存并完成
搜索插件 ssh和maven(红色代表与jenkins版本不匹配)
点击这个按钮安装就好,继续耐心等它安装完,放心这次挺快的
安装失败重新安装即可!
全局工具配置
点新增JDK,选择版本
点击去登陆Oracle账号登录,登录了才能下载jdk
输入自己的账号密码
账号为up主提供的:【优极限】最透彻的Jenkins教程,2h打通Jenkins全套教程丨从自动化部署Jenkins从环境配置到项目开发_哔哩哔哩_bilibili
先点击应用能弹出已保存就好了,然后在点击保存
之后安装maven(如果你的项目不是maven则安装别的插件)
点击保存
搜索 ssh
添加ssh的ip和端口 , 点击添加
添加服务器的账号和密码 如果点击添加没反应,没关系我们点击右上角的用户名添加一个就好了
检测连接是否成功
没有这个项目则下载maven插件(百度即可)
Maven Integration plugin
url为自己项目的仓库地址
添加凭证输入自己的gitee账号和密码并选中
设置目标
clean package
然后我们先构建下,等待结束
但是maven下载依赖速度太慢,我们可以手动关闭构建,把镜像配置为阿里云镜像
配置文件在你的jenkins数据目录下,例如我的就是:
/data/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.2/conf
按照原先方法修改配置文件,把maven远程仓库地址改成阿里云的。
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
点击 立即构建
这次下载速度就快了,构建好的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 &
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可以躲过。加不加因人而异。
令牌随便输,URL格式就是下面那个英文说明,根据自己的修改
生成,保存token信息
详情访问:通过URL触发Jenkins构建
我这里用的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:[email protected]:8080/job/JenkinsTest/build?token=abcdzzr
gitee请求成功
查看控制台信息
服务器IP地址加项目端口号
以后我们的项目只要提交gitee就能够自动,构建----->测试----->部署----->运行,是不是非常方便呢!
码字不易,多谢点赞!