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

目录

一、理论

1.共享库

2.共享库配置

3.使用共享库

4.共享库扩展

二、实验

1.连接共享库

2.使用共享库

三、问题

1.路径报错

[2.readJSON 报错](#2.readJSON 报错)


一、理论

1.共享库

(1)概念

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

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

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

(2)属性

bash 复制代码
1)共享库名称

2)共享库版本

3)共享库地址

(3)库结构

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

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

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

2.共享库配置

(1)创建一个共享库

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

(2). 创建groovy类文件

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

3.使用共享库

(1)系统配置

bash 复制代码
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)加载方式

bash 复制代码
1)加载mylib共享库
@Library('mylib') _

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

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

二、实验

1.连接共享库

(1)gitlab创建group

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

(3)创建完成

(4)打开web IDE

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

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

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

(8)空目录不让提交

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

(10)临时编辑json文件

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

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

(13)编辑代码

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

(15)定义一个方法

(16)提交到主分支

(17)已提交

(18)根目录新建Jenkinsfile

(19)提交到主分支

(20)克隆项目地

(21)jenkins添加gitlab凭据

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

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

(24)gitlab修改jenkinsfile文件名.

(25)注释第2个java代码

(26)流水线构建成功

(27)默认checkout方法.

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

(29)gitlab修改jenkinsfile

(30)查看已提交

(31)checkout SCM 步骤已消失

(32)构建成功

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

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

(35)修改流水线调用变量文件

(36)提交

(37)jenkins构建成功

(38)查看视图

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

(40)流水线文件传实参(注意有逗号)

(41)提交

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

2.使用共享库

(1)新建jenkinsfile文件

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

(3)修改新jenkinsfile文件代码

(4)已提交

(5)修改作业的jenkinsfile路径

(6)修改resources目录名

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

(8)输出成功

(9)修改代码readjson

(10)安装插件Pipeline Utility Steps

(11)构建成功

(12)修改README文档并提交

三、问题

1.路径报错

(1)问题

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

(2)原因分析

共享库资源路径错误

(3)解决方法

修改路径

修改前:

修改后:

成功:

2.readJSON 报错

(1)问题

(2)原因分析

readJSON命令书写错误

(3)解决方法

修改readJSON命令参数

修改前:

修改后:

成功:

相关推荐
BUG 4045 分钟前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea11 分钟前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
Java小白中的菜鸟3 小时前
centos7的磁盘扩容
linux·运维·服务器
黑客老陈4 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展
橘子师兄4 小时前
如何在自己的云服务器上部署mysql
运维·服务器·mysql
@泽栖4 小时前
Docker 常用命令
运维·服务器·docker
鲁正杰6 小时前
在一个服务器上抓取 Docker 镜像并在另一个服务器上运行
运维·服务器·docker
aherhuo6 小时前
基于openEuler22.09部署OpenStack Yoga云平台(一)
linux·运维·服务器·openstack
WebDeveloper20016 小时前
如何使用美国域名中心US Domain Center和WordPress创建商业网站
运维·服务器·css·网络·html
檀越剑指大厂7 小时前
【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
linux·运维·服务器