Контекст:
Я пытаюсь настроить сервер сборки Jenkins (2.223) (в данном случае сборка с использованием msbuild
) на Windows Server 2012 R2. Jenkins настроен как служба и работает как Local System
.
Проблема:
Я столкнулся с проблемой, при которой я могу запустить сценарий сборки, когда RDP зашел в качестве администратора, но не могу запустить тот же сценарий через Jenkins. Покопавшись, я обнаружил, что каталог с необходимыми ссылками на сборку (C:\Windows\System32\config\systemprofile\.nuget\packages
) не находит Jenkins. Проведя небольшое исследование, я обнаружил, что каталог C:\Windows\System32\config\systemprofile
кажется несовместимым.
Я могу запустить команду dir C:\Windows\System32\config\systemprofile
через свою учетную запись администратора и получить:
Directory: C:\Windows\System32\config\systemprofile
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/11/2020 9:43 AM .dotnet
d---- 3/11/2020 2:27 PM .nuget
d---- 3/9/2020 1:49 PM .ssh
d---- 8/22/2013 6:36 AM AppData
-a--- 3/2/2020 3:41 PM 262144 ntuser.dat
Я могу запустить ту же команду (dir C:\Windows\System32\config\systemprofile
) через Jenkins и получить:
Directory: C:\Windows\System32\config\systemprofile
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/9/2020 1:49 PM .config
d---- 3/6/2020 2:50 PM .groovy
d---- 8/22/2013 8:39 AM AppData
Мне нужно, чтобы ссылки в ...\systemprofile\.nuget\packages\
были видны Jenkins для завершения сборки (ссылки помещаются туда командой nuget restore
, выполняемой службой Jenkins, поэтому мне это кажется разумным). И, честно говоря, я не знаком с концепцией dir
, дающей разные результаты. Я подозреваю махинации с Windows, но мне любопытно, что на самом деле происходит - почему я получаю разные результаты в зависимости от того, какой пользователь запускает команду?
Дополнительная информация:
Я смог заставить это работать на моем локальном рабочем столе Windows 10 без каких-либо проблем. Я по-прежнему получаю разные результаты при выполнении команды
dir
от имени моего пользователя и службы Jenkins, но у них обоих есть доступный каталогsystemprofile\.nuget\packages
.На сервере 2012 года $ env: UserName моего пользователя Admin и $ env: ComputerName равны
Administrator
иWIN-64VG7CF1QK3
соответственно. Локальная система Jenkin $ env: UserName и $ env: ComputerName обаWIN-64VG7CF1QK3
.
C:\Windows\System32
, хотя технически вы можете получить доступ к соответствующему другому каталогу какC:\Windows\SysWOW64
(32-битный каталог из 64-битного процесса) иC:\Windows\SysNative
(64-битный каталог из 32-битного процесса). - person mklement0   schedule 12.03.2020