Jenkins 对自定义管道步骤实现的配置体的评估
对于自定义Jenkins管道步骤,我有一些使用此步骤的管道,如:Jenkins 对自定义管道步骤实现的配置体的评估,jenkins,groovy,shared-libraries,jenkins-pipeline,Jenkins,Groovy,Shared Libraries,Jenkins Pipeline,对于自定义Jenkins管道步骤,我有一些使用此步骤的管道,如: library 'infrastructure' infrastructurePipeline { project ='jenkins' artifact = ['master', 'backup'] dockerRegistry = [ credentialsId: 'dockerRegistryDeployer', url : "http://${en
library 'infrastructure'
infrastructurePipeline {
project ='jenkins'
artifact = ['master', 'backup']
dockerRegistry = [
credentialsId: 'dockerRegistryDeployer',
url : "http://${env.DOCKER_REGISTRY}"
]
}
但是,在此上下文中,变量env
似乎没有绑定,因此无法计算表达式
我可以用System.getenv()
替换env
,它会工作的。但这带来了一个我宁愿避免的副作用。我必须批准使用被警告为安全漏洞的System.getenv()
自定义步骤按照中的建议实施配置评估
该步骤最相关的代码位于vars/infrastructurePipeline.groovy
def call(Closure body) {
// evaluate the body block, and collect configuration into the object
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
def label=config.label ?: 'docker'
String tag = env.BUILD_NUMBER
String deliveryTag=null
String project = config.project
def artifact = config.artifact
...
}
能否显示
infrastructurePipeline
方法的主体和infrastructure
库?这将有助于理解您是如何编写函数的System.getenv()
将尝试获取运行脚本的Jenkins主机的环境,这就是为什么会出现脚本安全批准问题。您可能不希望这样。已将请求的代码添加到问题中。