svn создает тег из ant в jenkins

#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. Наше решение состояло в том, чтобы (в конфигурации задания):

  1. Перейдите в среду сборки (это заголовок)
  2. Установите флажок Маскировать пароли и регулярные выражения (и включить глобальные пароли)
  3. Добавьте пару Имя / пароль, например, Name = svnpass amp; Password = …
  4. Затем вы можете использовать пароль в ant-скрипте ${svnpass}
  5. Добавьте имя пользователя / пароль к ant-вызовам, например svn delete … —имя пользователя … —пароль ${svnpass}