#jenkins #svn
#дженкинс #svn
Вопрос:
Моя сборка Jenkins использует Subversion для управления исходным кодом. В соответствующих полях графического интерфейса я настроил URL репозиторияhttps://host:port/svn/project/trunk и добавил учетные данные.
Затем сборка состоит из нескольких шагов, каждый из которых является вызовом цели ant на build.xml который поставляется с оформлением заказа SVN.
Сама проверка работает нормально, я могу убедиться в этом, увидев ожидаемые файлы в рабочей области. Таким образом, учетные данные работают, и Дженкинс может подключиться к серверу SVN.
ЗАТЕМ это происходит, когда на одном из этапов сборки требуется удалить и создать тег SVN (в который файлы будут скопированы на следующем шаге — тег позже будет использоваться системой упаковки):
16:54:17 04.svn-tagging:
16:54:17 [echo] svn delete tag https://host:port/svn/project/tags/tagname
16:54:17 [exec] svn: E175013: Unable to connect to a repository at URL 'https://host:port/svn/project/tags/tagname'
16:54:17 [exec] svn: E175013: Access to 'https://host:port/svn/project/tags/tagname' forbidden
16:54:18 [exec] Result: 1
16:54:18 [echo] svn create tag https://host:port/svn/project/tags/tagname
16:54:18 [exec] svn: E175013: Unable to connect to a repository at URL 'https://host:port/svn/project/tags'
16:54:18 [exec] svn: E175013: Access to 'https://host:port/svn/project/tags' forbidden
16:54:19
Поскольку сервер уже смог подключиться кhttps://host:port/svn/project/trunk , почему он не сможет подключиться к https://host:port/svn/project/tags? В дополнительных учетных данных (в Subversion) я попытался добавить учетные данные для https://host:port/svn/project/tags и https://host:port/svn/project но это ничего не меняет.
Возможно, буквальные команды svn выполняются с любым пользователем, от имени которого работает Дженкинс? Как я могу указать Jenkins использовать определенные учетные данные для этой задачи (и как я могу настроить эти учетные данные в Jenkins)?
Ответ №1:
Учетные данные, используемые для проверки, не распространяются на последовательные этапы сборки. Они запускаются от имени пользователя по умолчанию для вашей установки Jenkins. В этом случае у этого пользователя нет доступа к этому репозиторию.
Несколько вариантов кажутся доступными, если у вас нет глобального доступа к серверу сборки Jenkins. Наше решение состояло в том, чтобы (в конфигурации задания):
- Перейдите в среду сборки (это заголовок)
- Установите флажок Маскировать пароли и регулярные выражения (и включить глобальные пароли)
- Добавьте пару Имя / пароль, например, Name = svnpass amp; Password = …
- Затем вы можете использовать пароль в ant-скрипте ${svnpass}
- Добавьте имя пользователя / пароль к ant-вызовам, например svn delete … —имя пользователя … —пароль ${svnpass}