Как передать параметры в конвейер Jenkins из сработавшего задания? - PullRequest
0 голосов
/ 29 мая 2019

Я хочу использовать трубопровод Дженкинса для:

  • создайте мой продукт и загрузите его в Artifactory
  • запустить несколько тестов на моем продукте
  • продвигать сборку Artifactory, если испытания пройдены

Мой продукт собран с использованием gradle. У меня есть отдельное задание, которое создает его, однако я не возражаю отказаться от своей работы и использовать в своем конвейере шаг Artifactory Gradle Build .

Мой вопрос: Как передать версию сборки из задания gradle в конвейер?

Я пробовал следующее:

  1. Отказаться от работы над подготовкой и построить мой продукт, используя шаг Artifactory Gradle Build] 2 .

  2. Запустите задание gradle в моем конвейере и получите rawBuild и возвращаемое значение задания gradle.

Это не сработало.

  1. Установите переменную окружения в моей работе Gradle и прочитайте ее в моем конвейере.

Переменная не была установлена ​​в конвейере, хотя я установил ее в задании gradle.

Что я мог сделать:

  1. Прочитайте последний опубликованный модуль об Artifactory в моей конвейерной работе.

Это громоздко, если я хочу, чтобы мой конвейер работал для нескольких выпусков одновременно.

  1. Запишите версию сборки в файл в задании Gradle и прочитайте его в конвейерном задании.

Я считаю, что наличие такой зависимости между рабочими местами не очень хорошая идея. Представьте, что кто-то уничтожил рабочее пространство или что оно автоматически стирается после каждой сборки Gradle. Кроме того, это не сработает, если можно будет делать параллельные сборки Gradle - я не знаю, в каком рабочем пространстве я должен искать файл.

Это не робастная зависимость.

  1. Рассчитать версию сборки в конвейере и в качестве аргумента для задания gradle.

Это звучит немного чрезмерно для меня. Я уже использую плагин Gradle, который увеличивает версию сборки для меня. Я не хочу его повторно реализовывать - это дублирование кода.

  1. Считайте последний тег в данной ветке в конвейерном задании, так как мое задание gradle помечает мой репо.

Чего мне не хватает? Как лучше всего решить мою проблему? Конечно, у кого-то должен быть такой же вариант использования, и должен быть механизм, который я должен использовать. Или мое мышление как-то ошибочно, и мне вообще не нужна версия сборки?

...