将凭据传递到 Jenkins 管道中的下游构建步骤
Passing credentials to downstream build step in Jenkins pipeline
我们正在尝试启动下游构建,它需要“用户名”和“用户密码”作为参数。
withCredentials([usernamePassword(
credentialsId: params.deployCredentialsId,
usernameVariable: 'MY_USER',
passwordVariable: 'MY_PASS',
)]) {
build(job: "deploy/nightly",
parameters: [stringParam(name: "UserName", value: MY_USER), password(name: "UserPassword", value: MY_PASS),
... more parameters
)
}
但下游作业永远不会看到 UserName / UserPassword 参数。上面的定义有没有bug,还是要看下游作业?
您需要查看下游作业。它应该有一个 'parameters' 块,看起来像:
parameters {
string(defaultValue: "", description: 'foo', name: "UserName")
string(defaultValue: "", description: 'foo', name: "UserPassword")
}
那么在你的舞台上你可以这样做:
stage('PrintParameter'){
steps{
sh 'echo ${UserName}'
}
}
假设您有 2 个名为 job-A 和 job-B 的 Jenkins 管道作业,您希望通过传递一些参数从作业 A 调用作业 B,并且您希望访问作业 B 上的那些。该示例如下所示:
工作-A
pipeline {
agent any;
stages {
stage('Build Job-B') {
steps {
build(job: "job-B", parameters: [string(name:"username",value: "user"),password(name:"password",value: "fake")], propagate: false, wait: true, quietPeriod: 5)
}
}
}
}
工作-B
pipeline {
agent any;
stages {
stage('echo parameter') {
steps {
sh "echo $params"
}
}
}
}
注-
params
默认情况下在所有管道作业中可用,无论您使用脚本管道还是声明管道。
您无需在下游作业中定义任何参数
我们正在尝试启动下游构建,它需要“用户名”和“用户密码”作为参数。
withCredentials([usernamePassword(
credentialsId: params.deployCredentialsId,
usernameVariable: 'MY_USER',
passwordVariable: 'MY_PASS',
)]) {
build(job: "deploy/nightly",
parameters: [stringParam(name: "UserName", value: MY_USER), password(name: "UserPassword", value: MY_PASS),
... more parameters
)
}
但下游作业永远不会看到 UserName / UserPassword 参数。上面的定义有没有bug,还是要看下游作业?
您需要查看下游作业。它应该有一个 'parameters' 块,看起来像:
parameters {
string(defaultValue: "", description: 'foo', name: "UserName")
string(defaultValue: "", description: 'foo', name: "UserPassword")
}
那么在你的舞台上你可以这样做:
stage('PrintParameter'){
steps{
sh 'echo ${UserName}'
}
}
假设您有 2 个名为 job-A 和 job-B 的 Jenkins 管道作业,您希望通过传递一些参数从作业 A 调用作业 B,并且您希望访问作业 B 上的那些。该示例如下所示:
工作-A
pipeline {
agent any;
stages {
stage('Build Job-B') {
steps {
build(job: "job-B", parameters: [string(name:"username",value: "user"),password(name:"password",value: "fake")], propagate: false, wait: true, quietPeriod: 5)
}
}
}
}
工作-B
pipeline {
agent any;
stages {
stage('echo parameter') {
steps {
sh "echo $params"
}
}
}
}
注-
params
默认情况下在所有管道作业中可用,无论您使用脚本管道还是声明管道。您无需在下游作业中定义任何参数