Дженкинс многоотраслевой конвейер и спецификация вышестоящих проектов

jenkins jenkins-pipeline

8339 просмотра

2 ответа

1500 Репутация автора

В настоящее время мы генерируем множество заданий Jenkins для каждой ветки Git, используя задание Jenkins DSL; плагин для многоотраслевого конвейера выглядит как интересный способ потенциально получить первоклассную поддержку генерации заданий с помощью Jenkinsfiles и уменьшить количество поддерживаемых Job DSL.

Например, у нас есть libwidget-server и widget-server, разрабатывающие проекты филиалов. Когда сборка libwidget-server заканчивается, запускается задание widget-server (для ветви разработки). Это относится и к другим веткам.

Это использует Build after other projects are builtдля запуска после завершения восходящей сборки (например, libwidget-server вызывает сборку widget-server).

Кажется, что в плагине для многоотраслевого конвейера нет Build after other projects are builtнастройки - как бы мы достигли вышеизложенного в сборке из многоотраслевого конвейера?

Автор: Fred Clausen Источник Размещён: 19.07.2016 01:13

Ответы (2)


4 плюса

336 Репутация автора

В настоящее время я пытаюсь заставить это работать для нашего развертывания. Самое близкое, что у меня есть, это добавление следующего к нижестоящему Jenkinsfile;

properties([
    pipelineTriggers([
        triggers: [
            [
                $class: 'jenkins.triggers.ReverseBuildTrigger',
                upstreamProjects: "some_project", result: hudson.model.Result.SUCCESS
            ]
        ]
    ]),
])

Это, по крайней мере, заставляет Дженкинса признать, что он должен срабатывать, когда 'some_project' get собран, т.е. он появляется на странице "Просмотр конфигурации".

Однако до сих пор сборки some_project по-прежнему не запускают последующий проект, как ожидалось.

При этом, может быть, вам повезет больше. Дайте мне знать, если это работает для вас.

(Кто-то еще задавал подобный вопрос здесь -> Jenkins: запуск многоотраслевого конвейера при изменении восходящего потока )

Автор: cscutcher Размещён: 31.08.2016 02:38

11 плюса

126 Репутация автора

Решение

Вы должны добавить имя ветки в ваше задание вверх по течению (при условии, что вы также используете конвейер с несколькими ветвями для задания вверх по течению).

Предположим, у вас есть папка с двумя заданиями, оба из которых являются многоотраслевыми конвейерными заданиями: jobAи jobB; jobBдолжен срабатывать после jobA's master.

Вы можете добавить этот фрагмент кода в jobBJenkinsfile:

properties([
  pipelineTriggers([
    upstream(
      threshold: 'SUCCESS',
      upstreamProjects: '../jobA/master'
    )
  ])
])

(Имейте в виду, что любая ветвь jobBздесь будет срабатывать после jobAхозяина!)

Автор: Jo Vandeginste Размещён: 12.09.2016 02:07
Вопросы из категории :
32x32