持续集成交付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('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命令参数

修改前:

修改后:

成功:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/197699.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K-Means算法进行分类

已知数据集D中有9个数据点,分别是(1,2),(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类,k2,设初始中心点为(1.1,2.2),(2.3,3.…

【Web】PHP反序列化的一些trick

目录 ①__wakeup绕过 ②加号绕过正则匹配 ③引用绕过相等 ④16进制绕过关键词过滤 ⑤Exception绕过 ⑥字符串逃逸 要中期考试乐(悲) ①__wakeup绕过 反序列化字符串中表示属性数量的值 大于 大括号内实际属性的数量时,wakeup方法会被绕过 (php5-p…

Ubuntu中apt-get update显示域名解析失败

第一步 检查主机->虚拟机能否ping成功 ping 红色框中的IPv4地址 能通,表示虚拟机ip配置成功;否则,需要先配置虚拟机ip 第二步 检查是否能ping成功百度网址 ping www.baidu.com 若不成功,可能原因 虚拟机没联网,打开火狐浏览器…

别再吐槽大学教材了,来看看这些网友强推的数学神作!

作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

Python基础:正则表达式(regular expression)详解

在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网…

2023年优化算法之之霸王龙优化算法(TROA),原理公式详解,附matlab代码

霸王龙优化算法(Tyrannosaurus optimization,TROA)是一种新的仿生优化算法,该算法模拟霸王龙的狩猎行为,具有搜索速度快等优势。该成果于2023年发表在知名SCI期刊e-Prime-Advances in Electrical Engineering, Electro…

使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

设计模式-行为型模式-策略模式

一、什么是策略模式 策略模式是一种行为设计模式,它允许在运行时选择算法或行为,并将其封装成独立的对象,使得这些算法或行为可以相互替换,而不影响使用它们的客户端。(ChatGPT生成) 主要组成部分&#xff…

数据结构-哈希表(C语言)

哈希表的概念 哈希表就是: “将记录的存储位置与它的关键字之间建立一个对应关系,使每个关键字和一个唯一的存储位置对 应。” 哈希表又称:“散列法”、“杂凑法”、“关键字:地址法”。 哈希表思想 基本思想是在关键字和存…

KT148A语音芯片使用串口uart本控制的完整说明_包含硬件和指令举例

一、功能简介 KT148A肯定是支持串口的,有客户反馈使用一线还是不方便,比如一些大型的系统不适合有延时的操作,所以更加倾向于使用uart控制,这里我们也给出解决方案 延伸出来另外一个版本,KT158A 注意次版本芯片还是…

数据库表字段以表格形式写入Word

在项目的开发中,难免会有编写概要设计、详细设计文档的要求,而在这些文档中,不可避免的就是要把数据库表的字段信息以表格的形式体现出来。例如下面这种格式 表数量少点还可以一点点粘贴,多了的话真的会疯,所以自己编写…

如何在Linux上搭建本地Docker Registry并实现远程连接

Linux 本地 Docker Registry本地镜像仓库远程连接 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 1. 部署Docker Registry 使用官网安装方式,docker命令一键启动,该命令启动一个regis…

YARN,ZOOKEERPER--学习笔记

1,YARN组件 1.1YARN简介 YARN表示分布式资源调度,简单地说,就是:以分布式技术完成资源的合理分配,让MapReduce能高效完成计算任务。 YARN是Hadoop核心组件之一,用于提供分布式资源调度服务。 而在Hadoop …

Linux:安装软件的两种方式rpm和yum

一、rpm方式 1、简单介绍 RPM是RedHat Package Manager的缩写,它是Linux上打包和安装的工具。通过rpm打包的文件扩展名是.RPM。这个安装包就类似Windows系统中的.exe文件。rpm工具实现Linux上软件的离线安装。 2、软件相关信息的查询命令 查询Linux系统上所有已…

网站被攻击怎么办

随着互联网的普及和网络攻击的日益增多,网站安全成为了众多企业和个人必须面对的重要问题。为了保护网站和用户数据的安全,内容分发网络(CDN)成为了一种有效的解决方案。本文将介绍CDN在保护网站安全、抵御网络攻击方面的作用和应…

uniapp-轮播图点击预览功能

实现效果 点击后打开预览图 实现代码 <swiper v-if"this.bannerList.length > 1" class"swiper" autoplay"true" duration"500" interval"2000" change"changeSwiper"><swiper-item class"swip…

Python爬虫进阶:提升爬虫效率

文章目录 一、单线程多任务异步协程二、线程池requests模块三、两个方法提升爬虫效率总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试…

利用SD存储介质扩展MAXQ20000的非易失性数据存储空间

SD存储卡是一种可移动存储介质&#xff0c;通常用于相机、手机、平板电脑等设备中存储照片、视频、音乐等数据。SD存储卡的全称为Secure Digital Memory Card&#xff0c;是由SD Card Association制定的一种标准格式。它具有体积小、存储容量大、读写速度快、价格低廉等优点。目…

Linux CentOS7 添加网卡

一台主机中安装多块网卡&#xff0c;有许多优势。可以实现多项功能。 为了学习网卡参数的设置&#xff0c;可以为主机添加多块网卡。与添加磁盘一样&#xff0c;要在VMware中设置。利用图形化方式或命令行查看或设置网卡。本文仅初步讨论添加、查看与删除网卡&#xff0c;有关…

AtCoder Beginner Contest 329 题解A~F

A - Spread 输入字符串&#xff0c;字符之间加上空格输出 B - Next 输出数组当中第二大的数 C - Count xxx 统计每个字符出现过的最长长度&#xff0c;再累加即可 #include<bits/stdc.h> #pragma GCC optimize("Ofast") #define INF 0x3f3f3f3f #define I…