当前位置:网站首页>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]])。
边栏推荐
猜你喜欢
《c语言小游戏》入门级三子棋游戏(机器人加强版)
如何使用mysql binlog 恢复数据
WLAN部署(AC+AP)配置及常见问题记录
进程调度的基本过程
sqlmap使用教程大全命令大全(图文)
mysql安装教程【安装版】
MySQL installation to the last step in the write the configuration file failed?And after the installation steps
《C语言小游戏》扫雷
关于Error EPERM operation not permitted, mkdir...几种解决办法的比较
一、MySQL主从复制原理
随机推荐
Vscode:Project-tree插件
【云原生】微服务之Feign的介绍与使用
"The C language games" mine clearance
信息收集-DNS
Unreal基础概念
mysql插入新字段方法
关于Error EPERM operation not permitted, mkdir...几种解决办法的比较
【C#】说说 C# 9 新特性的实际运用
《如何戒掉坏习惯》读书笔记
分布式缓存系统必须要解决的四大问题
SSM框架简单介绍
van-uploader uploads images, and cannot preview the image using base64 echo
New in Visual Studio: Low Priority Builds
《C语言小游戏》扫雷
Spark 在 Yarn 上运行 Spark 应用程序
The first part of the R language
ZCMU--1862: zbj的狼人杀
报销流程|By天放师兄
48页智慧城市规划蓝图 解决方案
MySQL中InnoDB的多版本并发控制(MVCC)的实现