Groovy URL getText () возвращает экземпляр PasswordAuthentication - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь загрузить содержимое защищенного паролем URL Gerrit в конвейерном скрипте Jenkins Groovy. HTTPBuilder недоступен, поэтому я использую класс URL с Authenticator:

// To avoid pipline bailing out since data PasswordAuthentication is non-serializable
@NonCPS
def getToString(data) {
    data.toString()
}

def fetchCommit(host, project, version) {
    withCredentials([usernamePassword(credentialsId: 'my-credentials',
                                      usernameVariable: 'user',
                                      passwordVariable: 'PASSWORD')]) {
        proj = java.net.URLEncoder.encode(project, 'UTF-8')
        echo "Setting default authentication"
        Authenticator.default = {
            new PasswordAuthentication(env.user, env.PASSWORD as char[])
        } as Authenticator
        echo "https://${host}/a/projects/${proj}/commits/${version}"
        url = "https://${host}/a/projects/${proj}/commits/${version}".toURL()
        result = getToString(url.getText())
        echo "${result}"
    }
}

Результатом является экземпляр PasswordAuthentication, а не ожидаемые данные:

[Pipeline] echo
java.net.PasswordAuthentication@3938b0f1

Я боролся сэто на время. Я пробовал разные способы настройки аутентификации и чтения данных, но в большинстве случаев это исключение. Использование eachLine () в URL не приводит к закрытию вообще. Работа также быстро завершается, создается впечатление, что она даже не пытается установить соединение.

Refs:

...