Jenkins Pipelines: как использовать withCredentials () из сценария с общей переменной

this в Javascript всегда ссылается на «владельца» выполняемой функции.

Если явный владелец не определен, то ссылается на самый верхний владелец - объект окна.

Итак, если бы я сделал

function someKindOfFunction() {
   this.style = 'foo';
}

element.onclick = someKindOfFunction;

this, он ссылался бы на объект элемента. Но будьте осторожны, многие люди делают эту ошибку

<element onclick="someKindOfFunction()">

В последнем случае вы просто ссылаетесь на функцию, а не передаете ее элементу. Поэтому this будет ссылаться на объект окна.

0
задан Dustin Oprea 13 July 2018 в 16:57
поделиться

1 ответ

Я использую общую библиотеку, а не общую переменную, но я думаю, что это аналогичная ситуация. Я не использую параметр $class, но я вызываю непосредственно одну из функций, предложенную генератором фрагментов конвейера. У вас может быть список здесь . В приведенном ниже примере я использую привязку usernameColonPassword. В конвейере я создаю экземпляр утилит класса и передаю конструктору this. Затем в библиотеке я использую объект step для доступа к шагам конвейера (например, withCredentials или usernameColonPassword).

class Utilities implements Serializable {
    def steps
    Utilities(steps) {
        this.steps = steps
    }
    def doArchiveToNexus(String credentials, String artifact, String artifact_registry_path){
        try {
            steps.withCredentials([steps.usernameColonPassword(credentialsId: credentials, variable: 'JENKINS_USER')]) {
                steps.sh "curl --user " + '${JENKINS_USER}' + " --upload-file ${artifact} ${artifact_registry_path}"
            }
        }catch (error){
            steps.echo error.getMessage()
            throw error
        }
    }
}
0
ответ дан Fabio 17 August 2018 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: