如何在Jenkins脚本化管道中调用Jenkins凭据(非声明性)

如何在Jenkins脚本化管道中调用Jenkins凭据(非声明性),jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,我试图使用jenkins脚本管道调用配置文件提供程序插件,同时从jenkins获取用户名和密码的凭据,但下面的方法似乎不起作用 节点{ def mvnHome def MVN设置 阶段(‘准备’){ mvnHome=工具“maven-3.5.4” } 阶段(“签出”){ 校验scm } 阶段(‘部署’){ def usernameLocal、passwordLocal、usr、psw 使用凭据([$class:'UsernamePasswordMultiBinding',CredentialI

我试图使用jenkins脚本管道调用配置文件提供程序插件,同时从jenkins获取用户名和密码的凭据,但下面的方法似乎不起作用

节点{
def mvnHome
def MVN设置
阶段(‘准备’){
mvnHome=工具“maven-3.5.4”
}
阶段(“签出”){
校验scm
}
阶段(‘部署’){
def usernameLocal、passwordLocal、usr、psw
使用凭据([$class:'UsernamePasswordMultiBinding',CredentialId:'xyz',passwordVariable:'PASSWORD',usernameVariable:'USERNAME']]){
usernameLocal=env.USERNAME
passwordLocal=env.PASSWORD
}
configFileProvider(
[配置文件(文件ID:'********',变量:'MAVEN_设置',replaceTokens:true)])
{
usr=“${usernameLocal}”
psw=“${passwordLocal}”
sh“回声$usr”
sh“${mvnHome}/bin/mvn'-s$MAVEN_设置部署-Dserver.username=“${usernameLocal}”-Dserver.password=“${passwordLocal}”
}
}

}
withCredentials创建的变量是Groovy变量,而不是环境变量。请尝试以下操作:

stage('Deploy'){    
  withCredentials([usernamePassword(credentialsId:'xyz', passwordVariable: 'Password', usernameVariable: 'Username')]) {
    configFileProvider([configFile(fileId: 'abcde', variable:'MAVEN_SETTINGS')]) {  
        sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy -Dserver.username=${Username} -Dserver.password=${Password}" 
    }   
  }     
}

好的,我找到了解决方案,在
块下声明
configFileProvider
整个部分,并通过:

-Dserver.username='${usernameLocal}' -Dserver.password='${passwordLocal}'

(请注意单引号)。通过这种方式,值也会被替换,并以屏蔽的形式输出到日志中。

可能会添加到您收到的错误中。我已经提供了可能有用的所有详细信息,包括错误消息。简短的是,我想调用Jenkins的凭据来检索用户名和密码(出于某种原因)在脚本化管道中,将它们作为参数传递给配置文件提供程序mvn命令。这是你现在可以看一看并帮助我解决问题的东西吗?谢谢马克的及时回复。是,密码使用特殊字符。但是,我如何知道配置文件提供程序sh脚本是否正在用我在该脚本中传递的值替换settings.xml用户名和密码?请尝试sh“echo'${mvnHome}/bin/mvn'-s$MAVEN_settings deploy-Dserver.username=“${usernameLocal}”-Dserver.password=“${passwordLocal}”,这也不起作用。最奇怪的错误是:在sh行中出现了:-unexpected“,这意味着在处理凭证时只能使用“”(单引号)。