Я хочу использовать разделяемую библиотеку в моем декларативном конвейере Jenkins.Библиотека предоставляет функции для извлечения информации из артефактных артефактов.Для этого я использую следующий код:
class ArtifactInfoResolver implements Serializable {
private org.jenkinsci.plugins.workflow.cps.CpsScript script
...
ArtifactInfoResolver(org.jenkinsci.plugins.workflow.cps.CpsScript script) {
this.script = script
}
void retrieveArtifacts(String url, String credentials, String repoName, String pathRegex) {
script.node {
script.withCredentials([script.usernameColonPassword(credentialsId: credentials, variable: 'USERPASS')]) {
String cmd = "curl " +
"-u ${USERPASS} " +
...
String responseJson = script.sh(returnStdout: true, script: cmd).trim()
...
}
}
}
}
}
}
Соответствующая часть декларативного конвейера:
pipeline {
...
stages {
stage('Gather information') {
steps {
script {
snapshotResolver = new ArtifactInfoResolver(this)
snapshotResolver.retrieveArtifacts(
"${env.RB_ARTIFACTORY_URL}",
'BuildUserCredentials',
"<repoName>",
"<pathRegex>")
...
}
}
}
...
}
}
Проблема в том, что метод retrieveArtifacts
не может не получить заданныйcredentials
от Дженкинс Кейстор.Переменная USERPASS
равна null
.