Плагин Hudson Subversion: параметризованная сборка не смогла найти учетные данные - PullRequest
2 голосов
/ 15 ноября 2011

Я пытался настроить параметризованную сборку в Hudson.Это строковый параметр, который будет установлен, когда я запускаю сборку вручную.Это пример URL репозитория.
svn://xxx/java/common/tags/${revision}

Я получил следующее исключение, когда попытался выполнить сборку с $ revision = 1.0.0.0

error: failed to check out svn://xxx/java/common/tags/1.0.0.0
org.tmatesoft.svn.core.SVNCancelException: svn: No credential to try. Authentication failed
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:219)
    at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.createSaslClient(SVNSaslAuthenticator.java:304)
    at org.tmatesoft.svn.core.internal.io.svn.sasl.SVNSaslAuthenticator.authenticate(SVNSaslAuthenticator.java:91)
    at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.authenticate(SVNConnection.java:173)
    at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.authenticate(SVNRepositoryImpl.java:1265)
    at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:1243)
    at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:168)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:482)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:873)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:534)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:901)

У меня уже естьустановите имя пользователя / пароль для URL репозитория выше.Похоже, что плагину Subversion не удалось получить учетные данные, поскольку URL генерируется динамически.Если я настрою URL как статический и настрою имя пользователя и пароль соответственно, я смогу проверить проект.Любая помощь будет оценена.Thx.

Версия Hudson: 2.1.0
Версия плагина Subversion: 2.0.1

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Thx mliebelt для вашего быстрого ответа. Каким-то образом я нахожу обходной путь. Это subversion.credentials, который я нашел в папке проекта hudson.

Вы можете видеть, что есть хеш-таблица, которая отображает URL на учетные данные. Посмотрите на третью запись. Во время выполнения, когда параметр $ revision разрешен, плагин может не найти учетные данные с соответствующим ключом. В отчаянии я добавил те же учетные данные с «Переопределить глобальные учетные данные» с включенным флагом «Да». Это четвертая запись ниже. Похоже, сделать трюк. Я предполагаю, что глобальная аутентификация хранится только на основе имени хоста?

<?xml version='1.0' encoding='UTF-8'?>
<hudson.scm.PerJobCredentialStore>
  <credentials class="hashtable">
    <entry>
      <string>svn://xxx/java/common</string>
      <hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
        <userName>chiangs</userName>
        <password>MWNoaWFuZ3MyMw==</password>
      </hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
    </entry>
    <entry>
      <string>svn://xxx/java/common/trunk</string>
      <hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
        <userName>chiangs</userName>
        <password>MWNoaWFuZ3MyMw==</password>
      </hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
    </entry>
    <entry>
      <string>svn://xxx/java/common/tags/${revision}</string>
      <hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
        <userName>chiangs</userName>
        <password>MWNoaWFuZ3MyMw==</password>
      </hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential>
    </entry>
    <entry>
      <string>&lt;svn://xxx:3690&gt; 01f58c58-b008-11dd-a3df-af2b63c5a78d</string>
      <hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential reference="../../entry[2]/hudson.scm.SubversionSCM_-DescriptorImpl_-PasswordCredential"/>
    </entry>
  </credentials>
</hudson.scm.PerJobCredentialStore>
0 голосов
/ 15 ноября 2011

Я проверил его на одной из наших установок Hudson. Я сделал следующее:

  1. Создана новая работа Гудзона.
  2. Скопировал URL-адрес SVN в проект Ant и заменил последний сегмент на `$ {project}.

    До этого было: https://our.svn.com/svn/trunk/public/develop/build/ant/ant-simple

    Теперь это: https://our.svn.com/svn/trunk/public/develop/build/ant/${project}

  3. Затем я добавил параметр в сборку:

    • Тип: строковый параметр
    • Название: проект
    • Значение по умолчанию: ant-simple
  4. В качестве шага сборки я определил Ant с target clean.
  5. Диалог конфигурации сообщает мне, что URL SVN (с ${project} в нем) не существует в хранилище, и предлагает обновить учетные данные. enter image description here
  6. Я не делаю Update credentials.

Когда я сейчас запускаю сборку, он запрашивает параметр (я не изменяю значение по умолчанию), зависает на несколько секунд (с сообщением pending - ???), а затем выполняет сборку правильно. Причина, по которой это работает (я подозреваю, что, но вы можете это доказать), заключается в том, что Хадсон имеет кэш для учетных данных, которые он использует, если это возможно.

В качестве обходного пути вы должны запустить одно задание сборки без параметра (просто скопируйте текущую сборку и удалите параметр, указав URL-адрес .../tags/1.0.0.0) и соберите его один раз. Вы должны ввести туда правильные учетные данные, и теперь теперь должна работать параметризованная сборка.

...