当前位置:网站首页>35-Jenkins-共享库应用
35-Jenkins-共享库应用
2022-07-31 07:44:00 【爱学习de测试小白】
前言
- 本篇来学习Jenkins中使用共享库
使用共享库原因
- 由于流水线被组织中越来越多的项目所采用,常见的模式很可能会出现。 在多个项目之间共享流水线有助于减少冗余并保持代码
- 共享库目录结构
(root)
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- foo.groovy # for global 'foo' variable
| +- foo.txt # help for 'foo' variable
+- resources # resource files (external libraries only)
| +- org
| +- foo
| +- bar.json # static helper data for org.foo.Bar
- src目录类似于标准Java源目录结构。执行流水线时,此目录将添加到类路径中。
- vars目录托管脚本文件,这些脚本文件在“管道”中作为变量公开。
- resources目录允许1ibraryResource从外部库中使用步骤来加载相关联的非Groovy文件。
定义共享库
- 目录: src/org/devops/tools.groovy
pacakge org.devops // 不可省略
//打印信息
def PrintMsg(msg){
println(msg)
}
//带颜色打印信息 需安装ansiColor插件
def Post(value,color){
colors = ['red' : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m",
'blue' : "\033[47;34m ${value} \033[0m",
'green' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ]
ansiColor('xterm') {
println(colors[color])
}
}
- 目录:src/org/devops/GlobalVars.groovy
package org.devops //这里指定文件所在目录位置
class GlobalVars {
//名称要和文件名一致
static String name = "大海"
static int age = 28
static String city = "北京"
}
- 目录:vars/sayHello.groovy
def call(String name) {
echo "Hello, ${name}!"
}
- 目录:vars/log.groovy
def info(message) {
echo "INFO: ${message}"
}
def warning(message) {
echo "WARNING: ${message}"
}
使用共享库
1. 配置共享库
- Manage Jenkins --> Configure System -->-Global Pipeline Libraries
- Name :共享库的唯一标识,在Jenkinsfile中会使用到。.
- Default version :默认版本。可以是分支名、tag标签等。
- Load implicitly:隐式加载。如果勾选此项,将自动加载全局共享库,在Jenkinsfile中不需要显式引用,就可以直接使用。
- Allow default version to be overridden :如果勾选此项,则表示允许“Default version”被Jenk-insfile中的配置覆盖。
- [email protected] changes in job recent changes:如果勾选此项,那么共享库的最后变更信息会跟项目的变更信息一起被打印在构建日志中。
- Retrieval method:获取共享库代码的方法。我们选择LegacySCM”选项,进而选择使用Git仓库配置共享库
2. Pipeline中使用
@Library('[email protected]') _ // _ 不可省略
import org.devops.GlobalVars
def mytools = new org.devops.tools()
pipeline {
agent any
stages {
stage("hello"){
steps{
script{
mytools.Post("This is ShareLib",'green')
println "${GlobalVars.name}"
println "${GlobalVars.age}"
println "${GlobalVars.city}"
}
}
}
stage("world"){
steps{
script{
mytools.PrintMsg("This is ShareLib")
sayHello('大海')
log.info 'Starting'
log.warning 'Nothing to do!'
}
}
}
}
}
- @Library(‘[email protected]’)_
- <version>可以是:
- 分支,如@Library ( ‘[email protected]’)。
- tag标签,如@Library ( ‘[email protected]’ )
- git commit id,如@Library ( ‘[email protected]’)
- 因为Jenkins支持同时添加多个共享库,所以@Library注解还允许我们同时引入多个共享库,如:@Library ( [‘global-shared-library’ , '[email protected]])。
边栏推荐
- CY7C68013A之LED闪烁
- 会话技术之Coookie && Session详解
- 一、MySQL主从复制原理
- Visual Studio新功能出炉:低优先级构建
- Navicat new database
- Embedded system driver primary [2] - _ parameters and dependencies under the kernel module
- 【云原生与5G】微服务加持5G核心网
- 'vite' is not an internal or external command, nor is it a runnable program or batch file.
- Fund investment advisory business
- 【idea 报错】 无效的目标发行版:17 的解决参考
猜你喜欢
Super detailed mysql database installation guide
SQL 入门之第一讲——MySQL 8.0.29安装教程(windows 64位)
shell/bash脚本命令教程
vscode输出中文乱码问题
CNN--各层的介绍
哆啦a梦教你页面的转发与重定向
【pytorch记录】pytorch的分布式 torch.distributed.launch 命令在做什么呢
【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)
MySQL 5.7详细下载安装配置教程
Calculation example of matlab program iEEE9 node system for power flow calculation of AC-DC hybrid system based on alternate iteration method
随机推荐
MySQL详解
《c语言》青蛙跳台阶递归问题
mysql安装教程【安装版】
MySQL 8.0.29 解压版安装教程(亲测有效)
MySQL安装常见报错处理大全
如何在一台机器上(windows)安装两个MYSQL数据库
Jetpack Compose学习(8)——State及remeber
SSM框架简单介绍
蚂蚁核心科技产品亮相数字中国建设峰会 持续助力企业数字化转型
SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)
2022.07.22 _ a day
MySQL中InnoDB的多版本并发控制(MVCC)的实现
Ceph single node deployment
PowerCLi 通过自建PXE Server一键esxi7下批量部署常规New-VM
navicat 新建数据库
【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
关于“算力”,这篇文章值得一看
SQL 入门之第一讲——MySQL 8.0.29安装教程(windows 64位)
【面试题】从输入URL到游览器渲染完成,经历了什么
[Interview: Concurrency 37: Multithreading: Thread Pool] Custom Thread Pool