Указание URL-адреса проекта GitHub в многоотраслевом конвейере Jenkins

Я пытаюсь указать GithubProjectProperty в многоотраслевом конвейере Jenkins. Я безуспешно пытался установить запись в блоке опций для управления этим значением.

Генератор фрагментов синтаксиса конвейера предлагает:

properties([
    $class: 'GithubProjectProperty',
    displayName: '',
    projectUrlStr: 'https://myServer/myOrg/myRepo'
])

Ни один из следующего не работает:

1) Попробуйте поместить свойства прямо в блок параметров

options {
        // Set the URL for the GitHub project option
        properties([
            $class: 'GithubProjectProperty',
            displayName: '',
            projectUrlStr: 'https://myServer/myOrg/myRepo'
        ])
}

ОШИБКА: раздел «Свойства» был переименован в версии 0.8. Вместо этого используйте "параметры"

2) Удалите ключевое слово свойств, но оставьте параметр в блоке параметров

options {
        // Set the URL for the GitHub project option
        [
            $class: 'GithubProjectProperty',
            displayName: '',
            projectUrlStr: 'https://myServer/myOrg/myRepo'
        ]
}

ОШИБКА: параметры не могут быть определены как карты

3) Относитесь к GitHubProjectProperty так, как будто он может быть создан (например, office365ConnectorWebhooks)

options {
        // Set the URL for the GitHub project option
        GithubProjectProperty('https://myServer/myOrg/myRepo')
}

ОШИБКА: недопустимый тип параметра «GithubProjectProperty». Допустимые типы опций: [authorizationMatrix, buildDiscarder, catchError, checkoutToSubdirectory, disableConcurrentBuilds, disableResume, durabilityHint, newContainerPerStage, office365ConnectorWebhooks, overrideIndexTriggers, parallelsAlwaysFailFailFast, skitutils, timeoutip, sci-fi, sci-mail, preserveStashes, waitUntil, warnError, withContext, withCredentials, withEnv, ws]

4) Обращайтесь с GitHubProjectProperty так, как будто он может быть создан, но внутри блока сценария (поскольку сценарий должен быть действительным в соответствии с попыткой №3)

options {
    script {
        // Set the URL for the GitHub project option
        GithubProjectProperty('https://myServer/myOrg/myRepo')
    }
}

ОШИБКА: в определениях параметров не может быть блоков.

Плагин office-365-connector-это рабочий плагин, который поддерживается в блоке параметров файла Jenkins. Я сравнил его код с источником github-плагина на GitHub и заметил следующую строку:

@Extension
public static final class DescriptorImpl extends JobPropertyDescriptor {

В коде отсутствует директива @Symbol, которую office365ConnectorWebhooks предоставляет в своем код:

@Extension
@Symbol("office365ConnectorWebhooks")
public final class WebhookJobPropertyDescriptor extends JobPropertyDescriptor {

Существует ли какой-то специальный синтаксис для добавления URL-адреса GitHub в многоотраслевой конвейер или этот плагин просто не поддерживает управление им через Jenkinsfile?


person Greg Pugh    schedule 12.05.2020    source источник


Ответы (1)


Для возможности указывать параметры в конвейере с помощью файла Jenkins требуется символ. В github-плагине Jenkins предлагается исправление, которое добавляет необходимую директиву Symbol, но в настоящее время не является частью плагина с версии 1.30.0.

См .: https://issues.jenkins-ci.org/browse/JENKINS-62339 < / а>

Тем временем разработчик может создать свой собственный обновленный плагин, обновив следующий файл: src / main / java / com / coravy / hudson / plugins / github / GithubProjectProperty.java в найденном источнике по адресу: https://github.com/jenkinsci/github-plugin

Добавьте символ:

    import org.jenkinsci.Symbol;
...
    @Extension
    @Symbol("githubProjectProperty")
    public static final class DescriptorImpl extends JobPropertyDescriptor {
...

И на всякий случай убедитесь, что в коде указана правильная сигнатура функции для newInstance:

   @Override
   public JobProperty<?> newInstance(@Nonnull StaplerRequest req, JSONObject formData)
           throws Descriptor.FormException {

Обновленный плагин может быть установлен администратором Jenkins с помощью опции Advanced в диспетчере плагинов для загрузки файла .hpi из-за пределов центрального репозитория плагинов.

person Greg Pugh    schedule 20.05.2020