Jenkins 共享库:如何创建,配置和使用
引言
Jenkins 是一款面向软件开发人员和运维人员的的开源自动化 CICD
平台。它允许用户创建和管理自动化构建任务,使软件开发和部署更加直接和高效。而共享库只是其中一个比较通用的插件。
先决条件
- 已经存在部署好的 Jenkins > 2.x 平台,此处不做部署安装配置可自行搜索安装,建议使用快捷 Docker 容器化部署安装;
- 一个可以使用的 WEB 浏览器,推荐谷歌浏览器;
什么是共享库
Jenkins中的共享库是在不同的 Jenkins Job 之间共享 Groovy 脚本的集合,被引入的共享库在执行JOB 的过程中会被拉入 Jenkinsfile 中
注意:共享库存储在 git 存储库中,进行版本控制、标记和其他 Git 功能可供用户使用。
使用共享库
为什么使用共享库
避免开发人员在开始新项目是需要重新编写相同的 groovy 脚本,使用共享库的方式在所有项目间进行共享,从而优化项目软件开发生命周期,并避免代码重复率过高,减少编码时间。
如何创建共享库
步骤 1: 创建共享库脚本
// 公共检出代码
def GetCode(branchName,gitSSHpURL,credentialsId,relativeTargetDir=''){
println("下载代码 --> 分支: ${branchName}")
checkout([$class: 'GitSCM',
branches: [[name: "${branchName}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'RelativeTargetDirectory', relativeTargetDir: "${relativeTargetDir}"],
[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]
],
gitTool: 'Default',
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: "${credentialsId}", url: "${gitSSHpURL}"]]
])
}
步骤 2: 添加脚本到 git 仓库
仓库结构: 仓库名称–>src–>com–>devops–>clone_code.groovy
步骤 3: 添加共享库到 Jenkins
Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries
- Name: 共享库名称,自定义即可;
- Default version: 共享库版本,输入版本库分支名称、Tag 名称、Commit 值其中之一即可;
- Load implicitly:如果选中,脚本将自动访问这个库,而不需要通过@Library请求它即隐式加载;
- Allow default version to be overridden:如果选中,脚本可以通过在@Library注释中添加@someversion来选择库的自定义版本。否则,他们被限制使用您在这里选择的版本;
- Include @Library changes in job recent changes:如果选中该选项,库中的任何更改都将包含在构建的更改集中,而更改库将导致为包含此库的管道运行新的构建。@Library(value=“name@version”, changelog=true|false),意思可以重写调用版本;
- Cache fetched versions on controller for quick retrieval:如果选中此项,使用此库获取的版本将缓存在控制器上;
- Retrieval method: 配置公共库获取的方式,并配置 Git 相关信息;
- Library Path (optional):允许您设置从 SCM 根目录到库目录根目录的相对路径,可选参数;
如何引用共享库
在自定义的 Pipeline或者 Jenkinsfile 中通改过@Libray 形式进行引用;
// 加载名称为devopslib的共享库的master版本
@Library("devopslib@master") _
//导入共享库中的方法类
def builds = new com.devops.clone_code()
def mytools = new com.devops.tools()
def mydeploy = new com.devops.deploy()
def markpack = new com.devops.packdeployment()
stages {
stage('克隆代码') {
steps {
script {
builds.GetCode(branchName,gitSSHpURL,credentialsId,projectname)
}
}
}
}
结论
通过本文您可以轻松的创建 Jenkins 共享库,并能在每个项目上进行使用。