一 基本概念
学习目的:学习Jenkins共享库的配置,编写更加灵活强大的流水线!
理解上:类似编程语言中的代码复用,不同阶段可能有共用的地方!
Jenkins中:使用'Groovy语法',共享库中存储的'每个文件都是一个Groovy的类',每个文件(类)中包含'一个或多个方法',每个方法包含groovy语句块
'题外话':对于具有编程能力的同学应该清楚一些;
理解:在'编程语言Python中',我们可以将Python代码写到一个文件中,当代码数量增加,我们可以将代码打包成模块然后再以import的方式使用此模块中的方法。
二 share-lib的结构和内容
(1)共享库的结构如下所示
说明:这个仓库中包含了很多类,后续-->kubernetes中的API方法封装在了kubernetes.groovy文件中,便于后面引用。
(3)解释说明
src目录主要存放我们要'编写的groovy类',执行流水线时,此目录将添加到class_path中
vars目录主要存放'脚本文件',这些脚本文件在流水线中作为'变量公开'
resources目录允许从'外部库中'使用步骤来'加载相关联的非Groovy的资源文件'
三 实验
说明:本次实验以github为例后续以gitlab为例,声明式
(1)创建项目
(2)递归的创建层级目录-->src
(3)vars
(4)jenkins上配置做引入
说明:全局配置--->ctrl+f(Google浏览器)--->lib进行定位
'额外说明':不要把gitlab和github在jenkins中弄'混淆了'
(5)在jenkins中的jenkinsfile上引入共享库
备注:三个缺1不可-->(1)'幻数';(2)'@_加载';(3)'创建对象'使用share-lib中的方法
过程:先远程下载jenkinslib库,然后检查,最后在jenkinsfile中引用
(6)测试共享库的方法是否能调用
说明:tools相当于整个文件(实例对象),然后调用里面的方法(传参)!
后续:测试进行上图
进一步需求:对jenkinsfile也做版本控制
(1)在github上增加一个jenkinsfile
目的:jenkinsfile也放在github上目的是做版本控制的,省的过了一段时间改了什么都忘记了!
(2)更改pipeline的方式
备注:之前是在本地书写pipeline,现在是通过远程拉取pipeline(jenkinsfile)文件来执行
之前
现在
'好处':做开发的时候基于不同分支的jenkinsfile进行构建!
(3)使用vars
备注:似乎'vars目录下'类只有一个方法的时候是'直接调用'的
需求:printMes目的是做一个颜色的输出!
核心:'排查问题'的时候'打印颜色'
(1)下载插件
备注:'不需要重启'
(2)将颜色封装到PrintMes里面,代码生成器的使用
(3)相关demo下载
(4)tools.groovy的变更
package org.devops
//格式化输出-->信息和颜色传参
def PrintMes(value,color){
//定义字典
colors = ['red' : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m",
'blue' : "\033[47;34m ${value} \033[0m",
'green' : "[1;32m>>>>>>>>>>${value}>>>>>>>>>>[m",
'green1' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ]
//调用
ansiColor('xterm') {
println(colors[color])
}
}
备注:资料
(5)类似这种在不同的阶段标注不同的颜色
核心:把相当的代码'集成到share lib中',然后在'Jenkinsfile'中引用!
说明:声明式是'结构化'的,往里面填充东西即可!
(6)结果