前置条件下的Jenkins声明性管道负载参数
在jenkins声明性管道中,有一种执行前置条件的方法,它应该从文件中加载构建参数。在詹金斯有一个选项,我们可以重新启动个别阶段。因此,我希望每个阶段都从groovy文件加载参数 目前是前置条件下的Jenkins声明性管道负载参数,jenkins,jenkins-pipeline,jenkins-declarative-pipeline,Jenkins,Jenkins Pipeline,Jenkins Declarative Pipeline,在jenkins声明性管道中,有一种执行前置条件的方法,它应该从文件中加载构建参数。在詹金斯有一个选项,我们可以重新启动个别阶段。因此,我希望每个阶段都从groovy文件加载参数 目前是 pipeline { agent any stage("Grep the values") { steps { load "${WORKSPACE}/file-parameter.groovy&quo
pipeline {
agent any
stage("Grep the values") {
steps {
load "${WORKSPACE}/file-parameter.groovy"
}
}
stage("Perform Deploynment) {
when {
expression { "${Perform_Deployment}" == "true" }
}
steps {
withCredentials([
usernamePassword(credentialsId: "LoginID", passwordVariable: "LoginPassword", usernameVariable: "LoginUser")
]) {
ansiblePlaybook (
playbook: "${WORKSPACE}/ansible-playbook.yml",
forks: 5,
extraVars: [
loginUser: "${LoginUser}",
loginPassword: "${LoginPassword}"
]
)
}
}
}
}
}
如何在when条件之前的阶段中加载“${WORKSPACE}/file parameter.groovy”。我的期望值如下
pipeline {
agent any
stage("Grep the values") {
steps {
load "${WORKSPACE}/file-parameter.groovy"
}
}
stage("Perform Deploynment) {
load "${WORKSPACE}/file-parameter.groovy"
when {
expression { "${Perform_Deployment}" == "true" }
}
steps {
withCredentials([
usernamePassword(credentialsId: "LoginID", passwordVariable: "LoginPassword", usernameVariable: "LoginUser")
]) {
ansiblePlaybook (
playbook: "${WORKSPACE}/ansible-playbook.yml",
forks: 5,
extraVars: [
loginUser: "${LoginUser}",
loginPassword: "${LoginPassword}"
]
)
}
}
}
}
}
load
步骤返回groovy脚本执行时返回的任何内容,因此需要将其存储在变量中
文件参数.groovy
可以如下所示:
return [
performDeployment: true,
// other variables
]
还是像这样
performDeployment = true
// other variables and methods
return this
在这两种情况下,您都可以在管道中使用它,如下所示:
stage("Grep the values") {
steps {
script {
fileParams = load("${WORKSPACE}/file-parameter.groovy")
}
}
}
stage("Perform Deploynment) {
when {
expression { fileParams.performDeployment }
}
我非常确定您不需要进行字符串比较,您可以使用布尔值来代替。我尝试了这两种方法,但当我重新启动第一阶段时,遇到了错误org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:找不到这样的字段:field java.lang.string performDeployment。如果只需单击build no issue。问题发生在我重新启动stageSomehow fileParams时,在您的案例中它是一个字符串,而不是一个应该是的映射。你试过把它打印到控制台上吗?但你说当你正常启动它时它起作用了?是的,对。该问题仅在重新启动阶段发生。在声明性管道中,我们可以重新启动单个阶段。例如,如果我们在jenkins中重新启动Perform Deployment,则会发生问题您是否尝试添加打印语句?fileParams似乎是错误的类型,我想知道确切的内容是什么。你能打印出这个变量并重现错误吗?