Как настроить конвейер Jenkins, который будет запускаться при опросе SubVersion?

Мы уже давно используем Jenkins для непрерывной интеграции. Типичное задание на сборку указывает хранилище SVN и учетные данные в разделе «Управление исходным кодом», затем в разделе «Триггеры сборки» мы включаем «Опрос SCM» с расписанием опроса каждые 10 минут (H / 10 * * * *) , Мы обновились до последней версии Jenkins и собираемся настроить конвейерные сборки. Типичный конвейерный скрипт выглядит так:

node {
    stage 'Build'
    build job: 'MyApplication Build'
    stage 'Deploy to test environment'
    build job: 'MyApplication Deploy', parameters: [
        [$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'],
        [$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1']
    ]
    stage 'RunIntegrationTests'
    build job: 'MyApplication Test', parameters: [
        [$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'],
        [$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1']
    ]
}

Когда задание конвейера запускается вручную, тогда все работает нормально, однако мы бы хотели, чтобы этот конвейер запускался каждый раз, когда новая редакция регистрируется в репозитории SVN. Конфигурация конвейера имеет опцию триггера сборки «poll SCM», но не имеет раздела «Управление исходным кодом», где вы можете указать свой репозиторий. Как мы можем достичь этого?

Ответы на вопрос(5)

В качестве альтернативы, когда сценарий конвейера не является частью проекта или определен в задании, вы можете добавитьpoll: true на стадии оформления заказа.

Пример:

stage('checkout') {
    checkout(
        changelog: true, 
        poll: true, /*This is the important option*/
        scm: [
            $class: 'SubversionSCM', 
            filterChangelog: false, 
            ignoreDirPropChanges: false,
            locations: [...], /*ommited for obvious reasons*/
            workspaceUpdater: [$class: 'CheckoutUpdater']
        ])
}

После первого запуска он начнет опрос с этого SCM, а также с SCM, где находится конвейер, если это так.

Эта опция задокументирована вhttps://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm в самом конце страницы без подробностей.

Я думаю тебе нуженПроверять, выписываться этап перед вашимстроить этап, который состоит из информации СКМ. Это позволяет работеОпрос СКМ с нужным интервалом и запустить конвейер.

Вы даже можете использовать конвейерный сценарий, не имея конвейерных кодов для хранения в качестве JenkinsFile в SCM.

Ниже мой SVNПроверять, выписываться этап конвейерного кода перед моимстроить этап:

stage('Checkout') {
    checkout([$class: 'SubversionSCM', 
        additionalCredentials: [], 
        excludedCommitMessages: '', 
        excludedRegions: '', 
        excludedRevprop: '', 
        excludedUsers: 'buildbot', 
        filterChangelog: false, 
        ignoreDirPropChanges: false, 
        includedRegions: '', 
        locations: [[credentialsId: 'b86bc2b6-994b-4811-ac98-0f35e9a9b114', 
            depthOption: 'infinity', 
            ignoreExternalsOption: true, 
            local: '.', 
            remote: "http://svn/something/trunk/"]],
        workspaceUpdater: [$class: 'UpdateUpdater']])
}

Работает для моей работы трубопровода, хотя. Надеюсь это поможет.

 DavidA19 апр. 2017 г., 13:07
В вашем фрагменте кода, как вы получаете CredentialsId?
 zionyx21 апр. 2017 г., 13:44
Идти к$(Jenkins_URL)/credentials/ и выберите идентификатор из списка настроенных учетных данных.

Используя ДженкинсДекларативный трубопровод Сценарий, вы можете настроить работу для опроса URL репозитория SVN каждые 10 минут следующим образом:

pipeline {
    agent any
    triggers {
        pollSCM 'H/10 * * * *'
    }
    stages {
        stage('checkout') {
            steps {
                checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: 'mySvnCredentials', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'http://example.com/svn/url/trunk']], workspaceUpdater: [$class: 'CheckoutUpdater']])
            }
        }
    }
}

pollSCM триггер должен автоматически опрашивать все URL репозитория SCM, связанные с вашей сборкой, включая URL, указанные вcheckout шаги, URL вашего сценария декларативного конвейера из SCM и URL ваших глобальных библиотек конвейеров. Если вы действительно хотите, чтобы конвейер запускался для каждой ревизии, вам нужно настроитькрюк после фиксации вместо.

 0xC0000022L27 июн. 2019 г., 14:25
Можешь ли тыпожалуйста указать авторитетный источник претензии«Триггер pollSCM должен автоматически опрашивать все URL репозитория SCM, связанные с вашей сборкой»?! Я искал высоко и низко и подошел с пустыми руками. Руководство не упоминает об этом (за исключением того, что в каком-то месте, гдеpollSCM являетсяне упоминается).
 heenenee27 июн. 2019 г., 20:54
Документация по плагинам Jenkins - это своего рода дрянь. Этот ответ не основан на каком-либо «авторитетном источнике», он основан на наблюдаемом поведении. У меня были задания, которые меняли URL репозитория Subversion с течением времени, и журнал опроса показал, что опрашивает все из них.
 heenenee24 мар. 2017 г., 22:07
@Akki Я считаю, что он запоминает URL-адреса, когда они выполняются пошагово на любом этапе.
 Akki24 мар. 2017 г., 21:45
Будет ли это опрашивать всю стадию трубопровода?
 Adam11 нояб. 2017 г., 02:08
Кажется, чтоincludedRegions (не проверял другие варианты) игнорируется при опросе. Не важно чтоincludedRegions установлен для любых проверок в указанных местах будет запускать сборку. Какие-либо предложения?
 heenenee12 нояб. 2017 г., 06:10
@ Adam На основании этоговопрос а такжевопрос, похоже на тоincludedRegions в настоящее время не поддерживается. Обходной путь должен был бы сделать проверку на каждый включенный регион отдельно. Помимо этого, ничего очевидного не приходит на ум.
Решение Вопроса

Решение, которое я нашел для работы:

Переместите конвейерный скрипт в файл (по умолчанию JenkinsFile) и сохраните его в корне моего проекта в SubVersion.Установите для моего источника определения задания конвейера значение «Конвейерный сценарий из SCM», введите сведения о том, где найти мой проект в SubVersion в соответствии с обычным заданием сборки Jenkins, и задайте путь сценария, чтобы он указывал на файл JenkinsFile, содержащий скрипт конвейера.Установите триггер сборки задания конвейера на «Опрос SCM» и введите расписание.Вручную запустить работу конвейера

Казалось, что это шаг 4, вручную запускающий конвейерное задание, которое заставило триггер опроса подобрать правильный репозиторий для опроса. До этого казалось, что он не знает, где искать.

 Philippe23 мая 2017 г., 16:54
Я думаю, что это будет работать только тогда, когда в самом Jenkinsfile есть изменения ...
 tarabyte17 сент. 2016 г., 09:50
у вас есть groovy линия, используемая для установки свойства триггера сборки на шаге 3? я думаю, что это будет вложено вproperties(); метод?
 0xC0000022L27 июн. 2019 г., 14:28
Таким образом, исходя из этого, действительно ли решение состоит в том, чтобы регулярно запускать проект конвейера (в дополнение к опросу SCM), чтобы запустить первый «ручной» запуск?

факты

Дженкинс Трубопроводне иметь возможность быть вызванным из SCM.Дженкинс Джобделает есть возможность быть запущенным из SCM.

=> Самый простой способ достичь этого:

Создайте задание Jenkins, которое запускается из SCM.Настройте конвейер Jenkin, который будет запускаться после сборки проекта Jenkins Job.

Это оно!

 0xC0000022L27 июн. 2019 г., 14:22
«Есть» и «нет» относится к возможностям трубопровода Дженкинса? Опыт? Секретные знания о чем-то? Было бы хорошо привести источник для ваших «Фактов». Благодарю.

Ваш ответ на вопрос