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

news2024/12/24 11:20:35

目录

一、理论

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.coloradmin.cn/o/1223503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源简历生成器OpenResume

什么是 OpenResume ? OpenResume 是一个功能强大的开源简历生成器和简历解析器。OpenResume 的目标是为每个人提供免费的现代专业简历设计,让任何人都能充满信心地申请工作。 OpenResume 有 5 个核心特点: 特征描述1. 实时UI更新当您输入简历…

vue2项目封装axios(vite打包)

1.安装 npm i axios 2.封装axios 说明:request.js文件 //对axios进行二次封装 import axios from "axios" import "nprogress/nprogress.css"// 当前模块中引入store // import store from "/store"// 引入进度条import nprogress f…

动态头像如何制作?这个方法请收藏

照片是记录生活的一种方式,但是静态图片有时候不能够完全表达我们的情感。而动态的图片能够让图片以更生动的方式来展示我们的想象力和内心情感。那么,大家知道动态图片制作的方法有哪些吗?使用gif动画制作(https://www.gif.cn/&a…

Swift 如何打造兼容新老系统的字符串分割(split)方法

0. 概览 在 Swift 的开发中,我们经常要与字符串打交道。其中一个常见的操作就是用特定的“分隔符”来分割字符串,这里分隔符可能不仅仅是字符,而是多字符组成的字符串。 从 iOS 16 开始, 新增了对应的方法来专注此事。不过&am…

RabbitMQ 集群和镜像队列

文章目录 一、clustering(集群)1、使用集群的原因2、搭建步骤2.1、拉取镜像2.2、创建三个RabbitMQ容器节点2.3、集群搭建 二、镜像队列1、使用镜像的原因2、搭建步骤 总结 一、clustering(集群) 1、使用集群的原因 如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等…

PS学习笔记——视图调整

文章目录 图片拖动图片旋转图片缩放 视图只是我们在对图片进行操作时所看到的图片状态,并不会实际改变图片的属性。目的是方便我们在操作图片时有最舒服的体验 图片拖动 工具栏中有这样一个抓手工具(快捷键H),选择这个抓手工具便可以在图片放大后能用鼠标…

【C语言期末不挂科——指针初阶篇】

C语言指针初阶 文章目录 C语言指针初阶**什么是指针?**   **1)初识指针**  **2)地址的大小**  **3)指针变量** **指针的类型**   **1)指针对整数加减运算**  **2)指针的解引用** **野指针**  **1&#xff…

基于供需算法优化概率神经网络PNN的分类预测 - 附代码

基于供需算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于供需算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于供需优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

redis实战篇03

附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注,共同关注等等功能,这一块知识咱们之前就讲过,这次…

数据库迁移(DBeaver版本)

最近需要做一个数据库迁移, 测试环境开发的差不多了,需要将脚本迁移到生产。 中间了试了一些工具,比如Jetbrain出品的datagrip,这个数据库工具平时还是很好用的,但是数据迁移感觉不是那么好用,所以还是用到…

string类的总结

目录 1.为什么要学习string类 2.string的标准库 3.string类的常用接口说明 1.string类对象的常见构造 2.string类对象的容量操作 3.string类对象的3种遍历方法 3.1 [ ] 下标 3.2 基于范围的for循环 3.3 迭代器 4 string类对象的元素访问 4.1 operator[]: 4.…

ubuntu20.04.1网络图标突然消失,无法上网

故障:打开虚拟机进入Ubuntu系统后,打开火狐浏览器,发现无法连接网络。 解决办法:因为刚接触Linux系统,就在网上找各种资料,试了各种办法无果,最后发现有可能网络配置文件被更改。 打开控制台输…

深信服AC设备用户认证

拓扑图 目录 拓扑图 一. 无需认证 思路:创建用户和组,将无需认证策略和用户绑定 1.创建组,组里添加用户 2. 新建不需要认证策略,将不需要认证策略和用户关联 3.验证 二.密码认证 思路:创建用户和组,并…

windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会…

深度学习二维码识别 计算机竞赛

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 🔥 优质竞赛项目系列,今天…

Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)

基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…

HP惠普光影精灵7笔记本Victus by HP 16.1英寸游戏本16-d0000原装出厂Windows11.21H2预装OEM系统

下载链接:https://pan.baidu.com/s/1LGNeQR1AF1XBJb5kfZca5w?pwdhwk6 提取码:hwk6 可适用的型号: 16-d0111tx,16-d0112tx,16-d0125tx,16-d0127tx,16-d0128tx,16-d0129tx&#…

“升级图片管理,优化工作流程——轻松将JPG转为PNG“

在图片时代,无论是工作还是生活,图片管理都显得尤为重要。批量处理图片,将JPG格式轻松转换为PNG格式,能够使您的图片管理更优化,提高工作效率。 首先,我们进入首助编辑高手主页面,会看到有多种…

键盘方向键移动当前选中的table单元格,并可以输入内容

有类似于这样的表格&#xff0c;用的<table>标签。原本要在单元格的文本框里面输入内容&#xff0c;需要用鼠标一个一个去点以获取焦点&#xff0c;现在需要不用鼠标选中&#xff0c;直接用键盘的上下左右来移动当前正在输入的单元格文本框。 const currentCell React.u…

简单算法——回溯、贪心、动态规划

回溯法 回溯法深度优先剪枝&#xff0c;实质就是用递归代替for循环。 仍然是一种暴力遍历的手段&#xff0c;通常与递归配合使用&#xff0c;用于解决单纯for循环无法处理的问题&#xff0c;比如组合、切割、子集、排列等问题——比如求n个数里的长度为k的组合&#xff0c;需要…