Домой java Как заставить Hudson поддерживать доступ SVN + SSH?

Как заставить Hudson поддерживать доступ SVN + SSH?

334
0

Сегодня моя компания перенесла весь репозиторий исходного кода на другой сервер и попросила всех разработчиков начать использовать svn + ssh для доступа ко всему исходному коду. Например, svn + ssh: //mkyong.com/share/svn/repo . Наша компания использует Hudson CI для автоматического создания исходного кода.

Цель : я должен настроить Hudson так, чтобы он поддерживал доступ svn + ssh .

1. Попробуйте агент аутентификации F-Secure

Я пытаюсь использовать F-Secure Authentication Agent для генерации пары ключей — открытого ключа и личного ключа. Однако, когда я отправляю закрытый ключ в Hudson Subversion Authentication, я нажимаю на следующую ошибку Hudson.


Error
Attempting a public key authentication with username mkyong
Failed to authenticate: svn: File 'NULL' is not valid OpenSSH DSA or RSA private key file
FAILED: svn: Authentication failed for svn+ssh://mkyong.com/share/svn/repo

Понятия не имею, что не так, похоже, что Хадсон не распознал формат закрытого ключа, сгенерированный агентом аутентификации F-Secure.

2. Попробуйте Putty

Я пытаюсь использовать Putty для генерации пары ключей — открытого ключа и закрытого ключа. Однако, когда я отправляю закрытый ключ в Hudson Subversion Authentication, я сталкиваюсь с другой ошибкой


javax.servlet.ServletException: java.lang.NullPointerException
org.kohsuke.stapler.Stapler.invoke(Stapler.java:449)
org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:263)
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:361)
org.kohsuke.stapler.Stapler.service(Stapler.java:121)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:61)
hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:53)
hudson.security.HudsonFilter.doFilter(HudsonFilter.java:88)
root cause

java.lang.NullPointerException
org.kohsuke.putty.PuTTYKey.toKey(PuTTYKey.java:140)
org.kohsuke.putty.PuTTYKey.(PuTTYKey.java:108)
org.kohsuke.putty.PuTTYKey.(PuTTYKey.java:69)
hudson.scm.SubversionSCM$DescriptorImpl.doPostCredential(SubversionSCM.java:1111)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:103)
org.kohsuke.stapler.Function.bindAndinvoke(Function.java:57)
org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:75)
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:263)
org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:440)
org.kohsuke.stapler.Stapler.invoke(Stapler.java:361)
org.kohsuke.stapler.Stapler.service(Stapler.java:121)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:61)
hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:53)
hudson.security.HudsonFilter.doFilter(HudsonFilter.java:88)

Похоже, что формат закрытого ключа Putty также не подходит Хадсону. Хм … я думал, что все методы генерации закрытых ключей должны соответствовать каким-то стандартам?

Решение

Поиск в Google Хадсон … Ошибка поиска в Google … Поиск в Google … целый день я узнаю, что Хадсон использует формат закрытого ключа OpenSSH . Есть ли другие инструменты, которые я могу использовать, чтобы преобразовать свой существующий закрытый ключ в формат OpenSSH?

Да, PuTTYgen.exe поставляется с функцией преобразования закрытого ключа замазки в формат закрытого ключа OpenSSH . Хорошие новости, я импортирую свой существующий закрытый ключ, созданный Putty, и нажимаю на экспорт в формат OpenSSH.

После экспорта в формат OpenSSH закрытый ключ работает как шарм! Хадсон теперь поддерживает доступ svn + ssh.

Заметка
Я также столкнулся со следующей ошибкой во время конфигурации Hudson для поддержки svn + ssh, я думаю, что это также связано с неверным форматом закрытого ключа После использования формата OpenSSH эта ошибка также исчезла.


INFO: Failed to access subversion repository svn+ssh://mkyong.com/share/svn/repo
org.tmatesoft.svn.core.SVNCancelException: svn: No credential to try. Authentication failed
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:36)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:31)
...
at org.tmatesoft.svn.core.internal.io.svn.SVNSSHConnector.open(SVNSSHConnector.java:70)
at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:73)

Hudson SSH SVN

Как заставить Hudson поддерживать доступ SVN + SSH?

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Пример JSF 2.0 + Ajax hello world

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь