在Jenkins声明性管道中的参数中定义凭证参数?

时间:2017-05-02 11:22:41

标签: jenkins jenkins-plugins jenkins-pipeline

我目前正在使用带参数化构建的Jenkins Delarative管道

pipeline {
    agent any
    parameters {
        booleanParam(name: 'cleanDB',defaultValue: false,description: 'should clean db ?' )
        string(name: 'host',defaultValue: 'xyx',description: 'DB Host')
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn verify'
            }
        }
        stage('Execute') {
            steps {
                withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'CREDENTIALS', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']])
                        {
                            sh "ant " +"-Ddb.clean=${params.cleanDB} -Ddb.host=${params.host} -Ddb.userid=$USERNAME \"-Ddb.password=$PASSWORD\" "
                        }
            }
        }
    }
}

当我尝试使用参数构建时,它只提示两个param cleanDB,主机params.i希望它也可以询问采用哪个凭证参数。只有在参数化构建中通过UI显式添加时才会占用。

那么如何在参数中添加凭证参数,任何人都可以在下面的语法中共享一个定义它的例子。

parameters {
        booleanParam(name: 'cleanDB',defaultValue: false,description: 'should clean db ?' )
        string(name: 'host',defaultValue: 'xyx',description: 'DB Host')
credentialParam(name: 'host',description: 'Credentials')
    }

2 个答案:

答案 0 :(得分:5)

虽然截至今​​天(2017-08-29)jenkins docs仅提及可能参数的字符串和布尔类型,但有一些ticket可以回答此问题。它说要做:

parameters {
    credentials(name: 'CredsToUse', description: 'A user to build with', defaultValue: '', credentialType: "Username with password", required: true )
} 

我刚尝试过,它运行正常。当第一次执行时它不会提出任何问题,它只是为作业创建参数。之后,它会要求提供凭据。

当然,它适用于Declarative Pipeline语法,因此必须用'管道进行封装。

答案 1 :(得分:1)

尝试以下方法:

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'CREDENTIALS', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']])
                        {
                            sh 'ant -Ddb.clean=${params.cleanDB} -Ddb.host=${params.host} -Ddb.userid=$USERNAME -Ddb.password=$PASSWORD'
                        }

根据有关cloudbees https://support.cloudbees.com/hc/en-us/articles/204897020-Fetch-a-userid-and-password-from-a-Credential-object-in-a-Pipeline-job-

的文档