Я хочу использовать трубопровод Дженкинса для:
- создайте мой продукт и загрузите его в Artifactory
- запустить несколько тестов на моем продукте
- продвигать сборку Artifactory, если испытания пройдены
Мой продукт собран с использованием gradle. У меня есть отдельное задание, которое создает его, однако я не возражаю отказаться от своей работы и использовать в своем конвейере шаг Artifactory Gradle Build .
Мой вопрос: Как передать версию сборки из задания gradle в конвейер?
Я пробовал следующее:
Отказаться от работы над подготовкой и построить мой продукт, используя шаг Artifactory Gradle Build] 2 .
Запустите задание gradle в моем конвейере и получите rawBuild
и возвращаемое значение задания gradle.
Это не сработало.
- Установите переменную окружения в моей работе Gradle и прочитайте ее в моем конвейере.
Переменная не была установлена в конвейере, хотя я установил ее в задании gradle.
Что я мог сделать:
- Прочитайте последний опубликованный модуль об Artifactory в моей конвейерной работе.
Это громоздко, если я хочу, чтобы мой конвейер работал для нескольких выпусков одновременно.
- Запишите версию сборки в файл в задании Gradle и прочитайте его в конвейерном задании.
Я считаю, что наличие такой зависимости между рабочими местами не очень хорошая идея. Представьте, что кто-то уничтожил рабочее пространство или что оно автоматически стирается после каждой сборки Gradle. Кроме того, это не сработает, если можно будет делать параллельные сборки Gradle - я не знаю, в каком рабочем пространстве я должен искать файл.
Это не робастная зависимость.
- Рассчитать версию сборки в конвейере и в качестве аргумента для задания gradle.
Это звучит немного чрезмерно для меня. Я уже использую плагин Gradle, который увеличивает версию сборки для меня. Я не хочу его повторно реализовывать - это дублирование кода.
- Считайте последний тег в данной ветке в конвейерном задании, так как мое задание gradle помечает мой репо.
Чего мне не хватает? Как лучше всего решить мою проблему? Конечно, у кого-то должен быть такой же вариант использования, и должен быть механизм, который я должен использовать. Или мое мышление как-то ошибочно, и мне вообще не нужна версия сборки?