jenkins - 源代码控制中的 Jenkinsfile 共享参数
问题描述
我是 jenkins 的新手,继承了一堆代码质量未知的声明性管道。每个管道都使用文件夹属性来设置共享的默认参数值。这将基本变量置于源代码控制之外,从而扼杀了我们的 PR 流程和调试历史。例如
//pipelineA/Jenkinsfile
pipeline {
parameters {
string name: 'important_variable', defaultValue: folderProperty('important_variable')
}
//etc
}
//pipelineB/Jenkinsfile
pipeline {
parameters {
string name: 'important_variable', defaultValue: folderProperty('important_variable')
}
//etc
}
然后在根文件夹中将属性important_variable
设置为"Hello World"
有没有办法通过设置文件夹属性以从 yaml 中提取变量或使用共享库来将其纳入源代码管理?
感谢您的任何帮助!
解决方案
万一有人读到这个,我们结束了:
- 创建
bootstrap.groovy
文件 - 这个文件必须放在
/vars
你的 repo 绝对顶部的目录中 - 使用 Jenkins UI,我们进入管道的父目录 > config 并创建了一个共享库
config-lib
,称为指向我们的 repo 并自动公开bootstrap.groovy
文件方法,只要文件在正确的位置 - 该
bootstrap.groovy
文件有一个call
方法,它为我们的默认参数返回一个带有键值对的映射。这个方法必须命名call
- 在
Jenkinsfile
管道中,我们包括以下两行:
@Library("config-lib") _
config = bootstrap()
库装饰器(注意它以 结尾
_
)导入config-lib
在 jenkins ui 中定义的方法引导函数从该库中的文件调用
call
方法bootstrap.groovy
config-lib
- 在 Jenkinsfile 中使用
config
映射来填充参数默认值
pipeline {
parameters {
string name: 'foo', defaultValue: config.foo
}
它已经完成了。
这个视频帮助很大:https ://youtu.be/Wj-weFEsTb0
推荐阅读
- asp.net-identity - 无法使用 Identity Server 保护 webapi
- .htaccess - 显示不同的 url 并加载不同的页面 htaccess
- c - C - 为什么#pragma pack(1) 将 6 位结构成员视为 8 位?
- java - 如何在 android App 中实现基于 Token 的 Rest API
- git - 如何使用 JIRA 映射 sourcetree 提交
- python-3.x - 为python烧瓶生成优惠券
- javascript - 将一个键的值和值添加到数组中的另一个属性
- c# - C# 解析 SQL 语句以查找存储过程中使用的所有 INSERT/UPDATE/DELETE 表
- css - React-Datepicker:如何更改导航箭头?
- python - 蟒蛇新手。需要帮助来理解代码