将凭据传递到 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"
            }
        }
    }
}

注-

  1. params 默认情况下在所有管道作业中可用,无论您使用脚本管道还是声明管道。

  2. 您无需在下游作业中定义任何参数