Создание узлов в Windows для сборки Hudson - PullRequest
0 голосов
/ 26 августа 2010

У меня есть работа в Хадсоне, которая работает на подчиненном Windows XP.Я знаю, что символические ссылки невозможны (напрямую) в Windows XP, и поэтому я пытаюсь использовать вместо них переходы.Я написал пакетный скрипт:

@echo off
if "%1" == "" goto ERROR1
if "%2" == "" goto ERROR2
goto create

:create
echo Creating junction for %1 at %2
if exist %2 junction -q -d %2
md %2
junction -q %2 %1
goto :eof

:ERROR1
echo Source directory not specified
goto :eof

:ERROR2
echo Destination directory not specified
goto :eof

В моей работе, когда я вызываю этот скрипт, он висит на строке echo Creating junction for %1 at %2.Это моя Хадсонская "Выполнить пакетную команду Windows":

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64

copy C:\Data\Scripts\slink.bat .
call slink.bat C:\Data\3rdParty64 3rdParty
call slink.bat %WORKSPACE%\..\..\..\tds.core\label\%label% tds.core

... и это вывод:

C:\Data\Hudson\dev\workspace\Common_Windows\label\DFWW9202>call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64 
Setting environment for using Microsoft Visual Studio 2010 x64 tools. 

1 file(s) copied. 
Creating junction for C:\Data\3rdParty64 at 3rdParty

Есть идеи?(если это не тот сайт, пожалуйста, перенаправьте .. извините и спасибо!)

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

Лучший способ решить эту проблему - передать аргумент командной строки / accepteula в команду junction.

например: junction -q% 2% 1 / accepteula

2 голосов
/ 28 января 2011

Эта процедура не сработала для меня, но я сузил реальную проблему.

Краткая справка: в самый первый раз, когда программа «junction.exe» запускается пользователем на компьютере с Windows, она выдает Лицензионное соглашение с конечным пользователем (EULA) с помощью кнопки «Согласен». Когда пользователь нажимает кнопку «Принять», он может использовать утилиту обычным образом.

junction.exe остановил работу Hudson, поскольку служба запускалась как «Пользователь по умолчанию», а «Пользователь по умолчанию» никогда не нажимал кнопку «Согласен». Это привело к тому, что junction.exe незаметно и на неопределенное время зависает, ожидая этого клика, который, конечно же, никогда не появится.

Способ, которым мы это исправили, заключался в том, чтобы настроить систему для запуска службы Hudson как хорошо известной учетной записи, а не как пользователя по умолчанию. Затем мы вошли в систему Windows с этой учетной записью, запустили junction.exe, нажали кнопку «Согласен» и вышли из системы.

С тех пор

junction.exe прекрасно работает в Хадсоне.

Другой вариант - перейти на Windows Server 2008. Мне сказали, что версия имеет функцию соединения в новой утилите "mklink", которая встроена в саму ОС и не имеет лицензионного соглашения.

0 голосов
/ 26 августа 2010

Не берите в голову, нашел это, если кто-то еще ищет - я изменил "call" на slink.bat на "start / B" и добавил полные пути, так:

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64
start /B C:\Data\Scripts\slink.bat C:\Data\3rdParty64 3rdParty
start /B C:\Data\Scripts\slink.bat slink.bat %WORKSPACE%\..\..\..\tds.core\label\%label% tds.core
...