目录
一、实验
1.Jenkins Pipeline本地构建触发器
2.Jenkins Pipeline与远程构建触发器(第一种方式)
3.Jenkins Pipeline与远程构建触发器(第二种方式)
4.Jenkins Pipeline与远程构建触发器(第三种方式)
二、问题
1.pipeline插件依赖安装报错
2.控制台输出环境变量名冲突
3.并行构建job存在数据偏差
4.Base64编码如何构成
一、实验
1.Jenkins Pipeline本地构建触发器
(1)搜索“pipeline”,下载插件
(2)安装
(3)流水线配置
(4)构建起配置
(5)控制台输出
2.Jenkins Pipeline与远程构建触发器(第一种方式)
(1)第一种方式:http标准传值方式
#加双引号,否则会识别成shell里的后台进程&
curl -u账户:密码 "http://192.168.204.15:8080/job/buildpipeline/buildWithParameters?token=devops&Version=1.1.8&EnvType=prod"
(2)构建远程触发命令
本次命令在jenkins slave(从节点)运行
(3)开始远程构建
(4)构建成功
3.Jenkins Pipeline与远程构建触发器(第二种方式)
(1)第二种方式:postman方式
用postman , add New Request
(2)postman 添加request
(2)postman自动生成
(3)添加基本认证(Basic Auth)
(4) 添加账户及密码
(5)点击send发送
(6)开始远程构建
(7)控制台查看
(8)远程构建完成
4.Jenkins Pipeline与远程构建触发器(第三种方式)
(1)第三种方式:python方式
python调取:用postman , add New Request ,code转换python requests#代码
import requestsurl = "http://192.168.204.15:8080/job/buildpipeline/buildWithParameters?token=devops&Version=1.1.8&EnvType=prod"payload = {}
headers = {'Authorization': 'Basic XXXXXXXX' #XXXXXXXX此处应为转换的Base64编码
}response = requests.request("GET", url, headers=headers, data=payload)print(response.text)
(2)postman将http转换python代码
(3)python运行
本次命令在jenkins slave(从节点)运行
python代码
(4)开始远程构建
(5)远程构建中
(6)远程构建完成
二、问题
1.pipeline插件依赖安装报错
(1) 报错
(2)原因分析
部分插件由于缺少依赖无法加载
(3)解决方法
先安装durable-task插件,再安装Nodes and Processes 、Basic Steps等
2.控制台输出环境变量名冲突
(1)报错
(2)原因分析
环境名重复
(3)解决方法
修改环境名
修改前:
修改后:
成功:
3.并行构建job存在数据偏差
(1)问题
第一个job 对应一个/var/lib/jenkins/workspace/buildpipeline
第二个job 对应一个/var/lib/jenkins/workspace/buildpipeline@2
第三个job 对应一个/var/lib/jenkins/workspace/buildpipeline@3
(2)原因分析
对同一pepeline并行多个job,每一个job 对应相同的目录
(3)解决方法
随机生成一个不同的workspace
4.Base64编码如何构成
(1)说明
ASCII 码字符占 8 位二进制,而 Base64 占 6 位,取最小公倍数即为 24,即可以用 4 个 base64 字符去表示 3 个 ASCII 码字符。一个字节 8bit 存在 256 个状态,而一个 Base64 字符只有 64 个状态。 机智的人们于是规定,用每 4 个 Base64 字符去表示 3 个二进制字节,因为:64 * 64 * 64 * 64 = 256 * 256 * 256。 因为,Base64 将三个字节转化成四个字节,因此 Base64 编码后的文本,会比原文本大出三分之一左右。选出 64 个字符——大写字母 A-Z、小写字母 a-z、数字 0-9、符号 "+"、"/"(再加上作为垫字的 "=",实际上是 65 个字符,垫字是当生成的 Base64 字符串的个数不是 4 的倍数时,添加在尾部的字符),作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。
(2)举例
字符串 ABC,对应的二进制序列为 01000001 01000010 01000011,按 6 位分组后为 010000 010100 001001 000011,根据编码表得到Base64 字符串 QUJD。
(3)Base64 编码表