Как я могу заставить SCP и ftp (из командной строки, а не плагин) работать в Hudson? - PullRequest
0 голосов
/ 12 июля 2010

Я использую сервер HUDSON CI на машине с win32.После успешного завершения сборки я хочу, чтобы созданный exe-файл был размещен на общедоступном веб-сайте.Плагины hudon для SCP и ftp работали не так, как я хотел (в основном потому, что он выбирает несколько нечетных каталогов для их размещения), поэтому я сделал свой собственный скрипт для командной строки scp, который вызывает hudson.

Дляпочему-то, хотя при запуске в среде hudson файл scp bat зависает.Он работает нормально, когда я вызываю его из командной строки, хотя на той же машине.

По-видимому, это также происходит сбой при запуске из планировщика задач.

Может кто-нибудь придумать причину, по которой это не будет работать в среде hudson или планировщика?

pscp.exe -batch -q -pw mypassword ..\..\installers\Output\myfilename  domain.com@domain.com:domains/domain.com/html/downloads

(Обратите внимание, что domain.com является заменой моего доменного имени ...)

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

Обратите внимание также - причина, по которой я вызываю файл bat, заключается в том, что я заменяю имя файла на svn WCREVcommand - поскольку hudson не работает, и не может выполнить эту замену ни в плагинах scp, ни в ftp, ни в вызовах командной строки.Этот метод должен работать fin, но он зависает.

pscp - это ssh-программа командной строки, связанная с Putty .

Еще одна проблема, с которой я столкнулся, заключается в том, что этот проект имеет доступ к двум svn-репозиториям, так что hudson запутывается и не может предоставить номер svn rev по своему желанию в тех местах, где я ожидаю его доступности.(Один репозиторий предназначен для сторонних разработчиков, а другой - наша база кода). Мы используем svn rev из нашей базы кода как часть идентификатора, чтобы назвать созданную программу установки.

Я был бы рад использовать ftp или scp изнутри hudson (плагины), но они, похоже, не работают для меня вообще, учитывая места, в которых hudson решает поместить файлы (используя номера сборки - я делаюя не хочу использовать номера сборки hudson для идентификации сборок - я предпочитаю svn revision) - поэтому я использую версии командной строки, но они тоже не работают - они вешают процесс сборки hudson.

Ответы [ 3 ]

3 голосов
/ 12 июля 2010

Я столкнулся с той же проблемой сам.Проблема в том, что pscp (как и все PuTTY) требует, чтобы ключ хоста для сервера, к которому вы подключаетесь, был загружен в реестр (в HKEY_CURRENT_USER).Без hostkey pscp будет отклонять хост как недопустимый (должно быть сообщение об ошибке, которое будет отображаться в выходных данных консоли, если вы как-то не исключили его. Это разовая вещь, но это нужно сделать для каждого работающего пользователякоманда.

Это основной процесс, который я использую:

  1. Подключение к серверу и порту с помощью PuTTY. Принимайте hostkey при появлении запроса.
  2. Выполнить regedit.exe
  3. Просмотр HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Экспорт соответствующего хост-ключа в файл .reg (щелкните правой кнопкой мыши на SshHostKeys и выберите экспорт)
  5. Войдите как пользовательHudson работает как импорт экспортированного .reg файла

Если Hudson работает как локальная система, вы можете использовать PsExec или метод, описанный в этом блоге MSDN для запуска команды в качестве учетной записи локальной системы.

После того, как вы сделали это один раз, команда должна работать и работать под Hudson.

Edit

Две ссылки - это просто способы запуска командной строки в качестве локальногоСистема.Чтобы узнать, какой идентификатор пользователя Hudson запускается, открыв панель управления службами (services.msc) и найдя службу Hudson и проверив, что она говорит в столбце «Вход в систему».

Если это не локальная система, выдолжен иметь возможность войти в Windows как пользователь и импортировать reg-файл.Если он запускается как локальная система (по умолчанию), вы не можете войти в Windows и должны использовать PsExec или метод, описанный в блоге MSDN, чтобы импортировать файл реестра в дерево HKEY_CURRENT_USER локальной системы.

1 голос
/ 12 июля 2010

Как насчет обновления вашей замазки с помощью Quest PuTTY .Он основан на PuTTY и предлагает параметр -auto_store_key_in_cache.Это должно решить вашу проблему.

См. Также аналогичный вопрос по SuperUser .

0 голосов
/ 13 июля 2010

Я решил свою проблему, используя учетную запись, которая могла выполнять команды scp из командной строки. В частности, в конфигурации служб я настроил службу hudson на использование другого настроенного пользователя, а не системной учетной записи.

Скорее всего, это не лучший способ решить проблему, но в краткосрочной перспективе это сработало.

...