2015-04-27 2 views
1

На моем сервере Jenkins у меня есть проект, который проверяет исходный код из SVN и запускает скрипт сборки MakeInstaller.ps1, который был извлечен вместе с исходным кодом. Это довольно прямолинейно, и эта часть отлично работает.Jenkins svn export build step

Что плохо работает, так это то, что часть MakeInstaller.ps1 пытается выполнить экспорт svn конкретной версии какого-либо другого исходного кода, но у него нет учетных данных для подключения к SVN. Когда я запускаю скрипты сборки на моем ПК, это совершенно нормально, потому что Tortoise SVN имеет учетные данные, кэшированные.

У Jenkins уже есть мои учетные данные SVN, но это используется только тогда, когда Дженкинс проверяет исходный код, а не когда мой скрипт сборки пытается проверить исходный код.

Я пробовал:

  1. Установка инструментов командной строки Tortoise SVN на машине, которая работает Дженкинс. Это зафиксировало мою первоначальную ошибку «svn.exe not found», но у нее нет возможности узнать мои учетные данные для этого сервера.
  2. Я даже вошел в систему на сервере SVN, используя Tortoise SVN на этом компьютере, чтобы попытаться его кэшировать учетных данных, но он все еще не работает. Я предполагаю, что это связано с тем, что служба Jenkins не работает под тем же пользователем, с которой я вошел в систему.

Я чувствую, что, несмотря на это, я выхожу на неверный путь. Кажется немного странным, что Tortoise SVN установлен на этой машине вместе с любым SVN-клиентом, который уже использует подключаемый модуль Jenkins SVN.

Мой вопрос: Есть ли способ экспортировать SVN из встроенного скрипта в Jenkins и использовать ли он учетные данные, которые уже знает Jenkins? Можно ли использовать тот же svn.exe, который использует подключаемый модуль Jenkins SVN? Я действительно не хочу включать учетные данные в скрипт сборки.

Большинство подобных вопросов, которые я нашел, включали в себя неудачу из-за неправильных учетных данных, а не проверку, которая происходит как часть скрипта сборки.

ответ

1

В конце концов, я в конечном итоге делает что-то вроде Jenkins: Access global passwords in powershell

мне пришлось использовать EnvInject, потому что учетные данные Связующие плагин дает мне ошибку, когда я пытался сохранить проект. Это включало добавление еще одного экземпляра моего пароля SVN для Jenkins и жесткого кодирования имени пользователя Jenkins в мой скрипт сборки, но он работает.

Теперь скрипт сборки пытается выполнить аутентификацию с помощью команды dummy svn info. Если я запускаю скрипт на своей локальной машине, это работает, и оно продолжается без имени пользователя или пароля. Если команда dummy svn info завершается с ошибкой, она пытается войти в систему с именем -wername Jenkins и -password $ env: svnpassword, где переменная среды svnpassword предоставляется EnvInject.