Значение WOKRSPACE не определено в параллельных сборках - PullRequest
0 голосов
/ 05 ноября 2018

Сценарий: 2 сборки работают одновременно. Конфигурация настроена так, чтобы разрешать параллельные сборки, когда это возможно.

Я пытаюсь найти наиболее вероятную причину для нахождения: переменная WORKSPACE кажется доступной, поэтому клон проекта работает. Любые последующие сборки происходят По-видимому, предоставляется значение ******** вместо значения, которому назначена переменная WORKSPACE.

Пожалуйста, прочтите подробности.

Сборка 1

Первая созданная копия содержит правильный путь, из которого git клонирует проект: Посмотрите на команду, начиная с git clone --branch.

журнал

[INFO] Выполнение: / bin / sh -c cd / var / lib / jenkins / jobs / myapp-build-job / workspace / target && git clone --branch app-00.00.00.002 file: /// var / lib / jenkins / jobs / myapp-build-job / workspace / var / lib / jenkins / jobs / myapp-build-job / workspace / target / checkout

Сборка 2

Проблема найдена в журнале ниже: Посмотрите на команду git clone --branch и далее и обратите внимание на звёздочки. WORKSPACE - это переменная, предоставленная jenkins, значение которой в моем случае для работы: /var/lib/jenkins/jobs/myapp-build-job/workspace.

Если вы замените ******* из приведенного ниже журнала значением, присвоенным переменной WORKSPACE, вы получите /var/lib/jenkins/jobs/myapp-build-job/workspace@2/target/checkout. Это будет правильный каталог, в который должен быть клонирован проект. Следовательно, ошибка не возникнет.

журнал

[INFO] Выполнение: / bin / sh -c cd / var / lib / jenkins / jobs / myapp-build-job / workspace @ 2 / target && git clone --branch app-00.00.00.002 файл: ** ****** @ 2 / цель / выписка

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-release-plugin: 2.5.3: выполнить (default-cli) в приложении проекта: не удалось выполнить локальную проверку -> [Помощь 1]

1 Ответ

0 голосов
/ 05 ноября 2018

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

После значительной потери волос я обнаружил, что символ @, который является разделителем по умолчанию, не экранируется при включении в путь. Вот почему я видел ****

Решение

Изменить значение разделителя по умолчанию.

Как?

На сервере Дженкинс, Debian: открыть файл /etc/default/jenkins RHEL: открыть файл /etc/sysconfig/jenkins

Найти переменную JENKINS_JAVA_OPTIONS

Добавить к нему следующее -Dhudson.slaves.WorkspaceList=SomeSeperatingName

Конечно, SomeSeperatingName может быть чем угодно. Просто не персонаж, которого нужно экранировать

Затем перезапустите Дженкинс

...