I .詹金斯装置
1.背景

詹金斯,原名哈德逊,由太阳公司创办。2010年甲骨文收购SUN导致甲骨文保留hudson商标。哈德森的主要贡献者在哈德森的基础上改名为詹金斯,并不断更新。在很长一段时间里,lenkins和Hudson继续作为两个独立的项目,每个项目都将对方视为自己的分支。目前Hudson已经停止开发,最新版本发布于2016年,而Jenkins的社区和开发异常活跃。Jenkins是目前市场上使用最广泛的CICD工具。
Jenkins是一个基于Java开发的持续集成工具。
Jenkins是一个持续集成工具,持续集成是它的核心功能。在核心功能的基础上,可以扩展实现强大的CD功能。
2.特征
开源免费
易于安装
多平台支持
主从架构
提供web可视化配置管理页面
简单安装
插件资源丰富。
3.官网安装文件地址
https://www.jenkins.io/zh/doc/book/installing/
大家最好看官网文档进行安装。好的开源软件一般都是官网文档写得好的,否则很难火起来。
这里主要演示的是由docker安装Jenkins。没有安装docker或者不知道如何安装docker的同学可以先看我的文章《https://lanson Li . blog . csdn . net/article/details/124202180[云原生| docker]轻松学原理|架构|安装|加速》。安装Docker后,请继续阅读。
4.开始安装
注意:
Jenkinsci/jenkins没有blueocean插件,要自己安装。
詹金斯/蓝海:是的。
#建立自己的镜像运行时设置时区#如果是别人的镜像,docker hub,UTC;在容器运行时,-v/etc/local time:/etc/local time:ro
docker run -u root -d -p 8080:8080 -p 50000:50000 -v Jenkins-data:/var/Jenkins _ home -v/etc/local time:/etc/local time:ro -v/var/run/docker . sock:/var/run/docker . sock -restart = always jenkinsci/blue ocean#/var/run/Docker.sock表示基于Unix的套接字,Docker守护程序通过该套接字进行监听。这种映射允许jenkinsci/blueocean容器与Docker守护进程通信,如果jenkinsci/blueocean容器需要实例化其他Docker容器,这是必要的。如果运行声明式管道,其语法包括docker对于代理部分;例如,代理{docker {...}}此选项是必需的。
#如果您的jenkins安装插件无法安装。用这面镜子【registry.cn-qingdao.aliyuncs.com/lfy/Jenkins:外挂-蓝海】。默认的访问帐户/密码是[管理员/管理员]
5.正在安装
6.安装完成。
7.页面访问
8.通过以下命令找到密码
方法1:
方法二:
9.安装默认的推荐插件并配置用户。
选择推荐的插件选项。
只需等待自动安装插件完成。
配置用户,点击右下角的保存。
完整安装
二、詹金斯实战
1.为测试准备一个git项目。
我们以gitee为例。github可能太慢了。安装gitee插件需要Idea。或者你可以自己熟悉手动命令。
简单解释一下,其实在这里用gitee,github或者gitcode都可以实现。学生可以选择使用哪一个。
步骤:
Idea创建了一个Spring Boot项目
VCS-创建git存储库
Gitee创建一个仓库,上传到本地仓库。
Idea向gitee提交内容
开发项目的基本功能,在项目中创建一个jenkinsfile文件。

创建一个名为devops-java-demo的管道项目,使用项目自己的管道。
詹金斯的工作流程
首先,定义一个管道项目,并指定项目的git位置。
管道启动
1.先转到git位置自动拉代码。
2.解析拉代码中的Jenkinsfile文件。
3.根据Jenkinsfile指定的流水线开始处理项目。
管道配置文件我写的不是很好。请参考官方文件,非常详细。
官网流水线文档:流水线
詹金斯,重要的是
1.jenkins的主目录/var/jenkins_home已经安装在我们的docker之外。
/var/lib/docker/volumes/Jenkins-data/_ data
2、WORKSPACE =/var/Jenkins _ home/WORKSPACE/Java-devo PS-demo
每个管道项目占据一个文件夹位置。
BUILD _ NUMBER = 5;当前构建是多少次?
WORKSPACE _ TMP =/var/Jenkins _ home/WORKSPACE/Java-devo PS-demo @ TMP
JOB _ URL = http://192 . 168 . 88 . 163:8080/JOB/Java-devo PS-demo/
3.如果没有常用的环境,jenkins在环境中配置了很多操作。
4、詹金斯网址:
http://192.168.88.163:8080/
小案例测试://写管道的脚本管道{ //所有的CICD进程都需要在这里定义。//任何代理可用时都可以执行。//定义一些环境信息。//定义管道的处理流程阶段{//管道的所有阶段。// 1、编译阶段{ steps {//Everything to do echo " compile ... "}} // 2、测试阶段{步骤{ //一切做回显“测试...”}//3、包阶段{步骤{ //所有要做的事情都回显“包...”}} // 4,部署阶段{步骤{ ///
2.远程构建触发器
预期效果:远程github代码提交,jenkins管道自动触发构造。
实施流程:
1.确保可以远程访问jenkins所在的主机。
可以在云平台上配置一个公共IP,让gitee远程访问。
2.jenkins中的远程触发需要权限,所以我们应该使用用户进行授权。
3.配置gitee/github,webhook就会触发。
测试成功。
发生前两个错误是因为我的地址没有用API令牌添加。下图显示了生成令牌的设置。
#远程构建即使配置了github的webhook,默认也是403。我们应该使用用户进行授权。
1.创建用户。
2.一定要登录激活一次。
3.生成apitoken
http://cheshi:11b 713938 DD 63 ea 6 DD 54 b 322 c 362642 a5c @ 192 . 168 . 88 . 163:8080/job/simple-Java-maven-app/build token = lanson Li
远程触发器:Jenkins _ URL/job/simple-Java-maven-app/build token = token _ name只管问
以后直接提交推送代码就会触发自动构建,就不需要手动触发了。
测试官方推荐的gitcode是否也支持这个功能。
我用了阿里云的服务器,重新打造了詹金斯。下面是我的测试结果,其实可以用。
1.复制上面的测试代码,提交给gitcode。如果不知道如何使用gitcode,可以看看官方教程。

2.配置webhook以触发
有人讲apitoken的生成过程,我这里就略过了,因为都写的很详细,就不占篇幅再写了。
配置原理还是一样的。只需在这里写下网址,勾选下面的触发事件,点击提交即可生效。
3.见证测试结果。
多次失败后,我一度怀疑gitcode是否能用。结果是我多虑了,肯定能用。失败是因为我复制的网址有问题,所以大家测试的时候一定要注意细节。


