Исправьте странные ошибки в Jenkins

#jenkins #gradle #continuous-integration

#Дженкинс #исправьте #непрерывная интеграция

Вопрос:

Я пытаюсь развернуть наши проекты на Jenkins, но каждый компонент просто использует файл settings.gradle в корневом каталоге, даже если я добавил отдельный файл settings.gradle для каждого из них.

В настоящее время у меня есть такая структура.

  • ROOT
    • Пользовательский интерфейс
      • отправить (включить settings.gradle и build.gradle в эту папку)
      • порядок
      • Качество
        • обзор
    • настройки.gradle
    • build.gradle

У меня есть include("ui:shipnotice") в файле settings.gradle как для корневого каталога, так и для каталога ship.

У меня есть задача с именем copy, когда я попытался вызвать эту задачу в папке ship, мне нужно использовать ../../graldew —no-daemon —info copy

Я получил следующее Settings evaluated using settings file 'xxx/ui/shipnotice/settings.gradle.kts'.

Однако после того, как я развернул его с помощью Jenkins, все становится странным. В Jenkins он продолжает использовать файл settings.gradle в корневом каталоге.

 Settings evaluated using settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'.

FAILURE: Build failed with an exception.

* What went wrong:
Project directory '/home/jenkins/workspace/xxx/ui/shipnotice' is not part of the build defined by settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'. If this is an unrelated build, it must have its own settings file.
  

Я попытался добавить rootProject.name = "shipnotice" include("ui:shipnotice") , чтобы сделать shipnotice корневым проектом, но он все еще использует файл из root.

Кто-нибудь может дать мне некоторое представление об этой ошибке? Заранее спасибо!

Ответ №1:

Я бы рекомендовал избавиться от вложенных settings.gradle . Это не рекомендуемая настройка.

Что, скорее всего, происходит в вашей сборке Jenkins, так это то, что папка, из которой выполняется команда Gradle, является корневой папкой проверки. И таким settings.gradle образом, из этого корня извлекается.

Комментарии:

1. Спасибо, Луис. Я обнаружил, что в моем файле Jenkins я забыл использовать {env.workspace} в одном месте. После того, как я изменил его, он был решен. Тем не менее, мне интересно удалить эти избыточные файлы настроек. Я понимаю, что Gradle может найти подпроекты в том же каталоге. Однако, для случая компонента review, который находится в более глубоком каталоге. Как его можно найти без файла settings.gradle?