持续集成交付CICD:Jenkins Sharedlibrary 共享库

目录

一、理论

1.共享库

2.共享库配置

3.使用共享库

4.共享库扩展

二、实验

1.连接共享库

2.使用共享库

三、问题

1.路径报错

2.readJSON 报错




一、理论

1.共享库

(1)概念

1)共享库这并不是一个全新的概念,其实在编程语言Python中,我们可以将Python代码写到一个文件
中,当代码数量增加,我们可以将代码打包成模块然后再以import的方式使用此模块中的方法。

2)在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类,每个文件(类)中
包含一个或多个方法。每个方法包含groovy语句块。

3)可以在Git等版本控制系统中创建一个项目用于存储共享库。共享流水线有助于减少冗余并保持代
码整洁。

(2)属性

1)共享库名称

2)共享库版本

3)共享库地址

(3)库结构

1)src: 类似于java的源码目录,执行流水线时会加载到class路径中。

2)vars: 存放全局变量脚本,小的功能函数。

3)resources: 存放资源文件,类似于配置信息文件。
├── src
│ └── org
│ └── devops
│ └── Tools.groovy
├── vars
│ └── GetHosts.groovy
│ └── GetCommitId.groovy
│ 
└── resources
│ └── org
│ └── devops
│ └── config.json

2.共享库配置

(1)创建一个共享库

可以直接在gitlab中创建一个公开类型的仓库,仓库名称自定义。公开类型的仓库是为了便于验
证,也可以创建私有类型的,但是需要提前配置好仓库的认证凭据。

(2). 创建groovy类文件

直接在gitlab仓库的页面操作即可

3.使用共享库

(1)系统配置

1)系统设置
Jenkins系统配置 -> Global Pipeline Libraries

首先,为共享库设置一个名称 mylib (自定义,无需与gitlab仓库一致),注意这个名称后
续在Jenkinsfile中引用。 再设置一个默认的版本,这里的版本是分支的名称。我默认配置的是 master版本。

2)配置共享仓库地址
接下来配置共享库的仓库地址,仓库在gitlab中,可以使用gitlab方式或者git方式。
如果仓库是私有的方式,需要在jenkins的凭据中添加一个账号用于下载共享库。

3)加载共享仓库
在Jenkinsfile中使用 @Library('mylib') _ 来加载共享库,注意后面符号 _ 用于加载。 类的
实例化 def mytools = new org.devops.jenkinstest() ,使用类中的方法`mytools.PrintMsg(msg)` 。

4.共享库扩展

(1)加载方式

1)加载mylib共享库
@Library('mylib') _

2)加载mylib共享库的1.0版本
@Library('[email protected]') _

3)加载多个共享库, mylib共享库的默认版本, yourlib共享库的2.0版本(分支)
@Library(['mylib', '[email protected]']) _

二、实验

1.连接共享库

(1)gitlab创建group

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第1张图片

(2)创建新共享库项目jenkinslib

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第2张图片

(3)创建完成

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第3张图片(4)打开web IDE

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第4张图片

(5)创建src目录,存放类,函数和方法等源码文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第5张图片

(6)创建vars目录,存放变量

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第6张图片

(7)创建resource资源目录,存放json和txt等文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第7张图片

(8)空目录不让提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第8张图片

(9)resource资源目录新建json文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第9张图片

(10)临时编辑json文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第10张图片

(11)src目录下创建组织的包目录

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第11张图片

(12)devops子目录下创建groovy类文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第12张图片

(13)编辑代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第13张图片

(14)vars目录下新建groovy文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第14张图片

(15)定义一个方法

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第15张图片

(16)提交到主分支

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第16张图片

(17)已提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第17张图片

(18)根目录新建Jenkinsfile

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第18张图片

(19)提交到主分支

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第19张图片

(20)克隆项目地

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第20张图片

(21)jenkins添加gitlab凭据

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第21张图片

(22)jenkins保存流水线共享库(注意此版本为master,现在有的新版本为main)

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第22张图片

(23)项目流水线定义改为SCM

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第23张图片

(24)gitlab修改jenkinsfile文件名.

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第24张图片

(25)注释第2个java代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第25张图片

(26)流水线构建成功

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第26张图片

(27)默认checkout方法.

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第27张图片

(28)生成关闭自动下载代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第28张图片(29)gitlab修改jenkinsfile

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第29张图片

(30)查看已提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第30张图片

(31)checkout SCM 步骤已消失

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第31张图片

(32)构建成功

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第32张图片

(33)进入WEb IDE剪切jenkinsfile代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第33张图片

(34)粘贴代码到变量文件里(import放在函数外)

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第34张图片(35)修改流水线调用变量文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第35张图片

(36)提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第36张图片

(37)jenkins构建成功

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第37张图片

(38)查看视图

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第38张图片

(39)修改变量文件,以字典形式传行参

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第39张图片(40)流水线文件传实参(注意有逗号)

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第40张图片

(41)提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第41张图片

(42)构建成功,成功输出变量

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第42张图片

2.使用共享库

(1)新建jenkinsfile文件

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第43张图片

(2)生成库资源流水线代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第44张图片

(3)修改新jenkinsfile文件代码

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第45张图片

(4)已提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第46张图片

(5)修改作业的jenkinsfile路径

(6)修改resources目录名

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第47张图片

(7)更改代码(路径前增加.)

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第48张图片

(8)输出成功

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第49张图片

(9)修改代码readjson

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第50张图片

(10)安装插件Pipeline Utility Steps

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第51张图片

(11)构建成功

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第52张图片(12)修改README文档并提交

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第53张图片

三、问题

1.路径报错

(1)问题

共享库流水线运行完,一直报如下错误

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第54张图片

(2)原因分析

共享库资源路径错误

(3)解决方法

修改路径

修改前:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第55张图片

修改后:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第56张图片

成功:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第57张图片

2.readJSON 报错

(1)问题

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第58张图片

(2)原因分析

readJSON命令书写错误

(3)解决方法

修改readJSON命令参数

修改前:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第59张图片

修改后:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第60张图片

成功:

持续集成交付CICD:Jenkins Sharedlibrary 共享库_第61张图片

你可能感兴趣的:(持续集成交付CICD,ci/cd,jenkins,运维)