Почему Jenkins игнорирует переменную% PATH% при использовании MSBuild? - PullRequest
9 голосов
/ 20 апреля 2011

Я пытаюсь использовать Jenkins для компиляции моего проекта MSBuild, созданного с помощью Delphi. У меня установлен плагин MSBuild в Jenkins и настроен. Я выбираю конкретную конфигурацию для моей работы по сборке.

Я установил все переменные окружения в Jenkins, которые требуются компилятору Delphi (из rsvars.bat для ваших типов Delphi.)

Проект прекрасно компилируется в командной строке. Если я сделаю это в командной строке, MSBuild сообщит о хорошей большой жирной переменной PATH (правильной) как части командной строки, которую он использует для вызова компилятора Delphi.

Однако, когда я пытаюсь использовать его с Дженкинсом, результат совершенно другой:

C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\dcc32.exe -$D- -$L- -$Y- --no-config -B -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DRELEASE -K00400000   HTMLWriterTestApp.dpr   
  Embarcadero Delphi for Win32 compiler version 22.0
  Copyright (c) 1983,2010 Embarcadero Technologies, Inc.

Обратите внимание на полное отсутствие пути или любую другую информацию о том, чтобы найти то, что нужно компилятору. Эта информация появляется при запуске из командной строки.

Может кто-нибудь придумать причину, по которой Дженкинс не может получить правильную информацию о PATH?

Ответы [ 4 ]

14 голосов
/ 20 апреля 2011

В зависимости от того, как вы запускаете Jenkins, он может не иметь полной линии пути, которую вы привыкли видеть. Например, если вы запускаете Jenkins в качестве службы Windows и заполняете переменную USERS PATH, ее необязательно заполнять для пользователя SYSTEM. В этом случае измените учетную запись входа в систему, используемую Сервисом, чтобы она была вашей учетной записью, а не системной.

5 голосов
/ 16 ноября 2011

У меня есть Jenkins, работающий на сервере внутри Glassfish, работающем как локальная системная учетная запись, как она была установлена, с использованием производного от этого блога , и я смог заставить его работать,установка переменных свойств в «конфигурации системы» (плагин Jenkins Environment Injector) в Jenkins.(BDS, BDSCOMMONDIR, FrameworkDir, FrameworkSDKDir и т. Д ...)

Тогда уловка для Delphi, чтобы выбрать подходящий путь, состоит в том, чтобы отправить параметр командной строки "Win32LibraryPath" в MSBuild.Обязательно избегайте двойных кавычек в этом параметре в Jenkins, иначе вы вырвете свои волосы.

2 голосов
/ 19 января 2012

Я запустил Jenkins как службу Windows, и она не смогла найти команду SVN, даже если у меня был SVN \ bin в моей переменной PATH для пользователя System.

Кажется, что служба использует только переменные средыдоступны во время запуска.Поэтому, если позже вы добавите еще несколько переменных среды для пользователя системы Windows, они не будут доступны службе.Все, что вам нужно сделать, это перезапустить оконную службу, и она выберет новые переменные окружения!

0 голосов
/ 06 февраля 2018

Все, что связано с командами git pull / where git, которые не выполняются Jenkins, связано с проблемой пути в переменных среды в Windows.

  1. Проверьте PATH в переменных среды.
  2. Убедитесь, что та же команда выполняется из командной строки Windows или нет.
  3. Если она выполняется и Windows работает как ведомая служба, перезапустите подчиненную службу с services.msc.
...