Ты можешь сделать это с Хадсоном? - PullRequest
2 голосов
/ 09 марта 2010

Я хочу создать задание hudson, которое принимает идентификатор в качестве параметра. И используйте этот идентификатор для вычисления пути svn-repo.

Где я работаю, у вас есть путь SVN для каждой проблемы, которую вы решаете. И тогда все проблемы объединяются в один svn-путь.

Что я хочу сделать, так это запустить статический анализ кода по частичным проблемам.

Так что я думаю, что, возможно, у меня есть Ant build.xml, который я использую для каждой проблемы, а затем параметризовать работу с идентификатором проблемы.

Я пытался добиться этого, но путь svn не заменяет параметр.

Я пытался с #issueId, %issueId%, ${issueId} и ${env.issueId}, но безуспешно.

Ошибка перехода как:

Location 'http://svn-path:8181/svn/devSet/issues/${env.chuid}' does not exist
Checking out a fresh workspace because C:\Documents and Settings\dnoseda\.hudson\jobs\test\workspace\${env.chuid} doesn't exist
Checking out http://svn-path:8181/svn/devSet/issues/${env.chuid}
ERROR: Failed to check out http://svn-path:8181/svn/devSet/issues/${env.chuid}
org.tmatesoft.svn.core.SVNException: svn: '/svn/!svn/bc/46190/devSet/issues/$%7Benv.chuid%7D' path not found: 404 Not Found (http://svn-path:8181)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
    at 

Мне кажется, что я не могу делать то, что хочу.

Знаете ли вы, как я могу настроить правильную конфигурацию для достижения этой цели?

Спасибо за любую помощь.

Редактировать Раздел задания по настройке, в который я хочу поместить этот параметр, таков:

<scm class="hudson.scm.SubversionSCM">
<locations>
      <hudson.scm.SubversionSCM_-ModuleLocation>
        <remote>http://svn-path:8181/svn/devSet/issues/${env.issueid}</remote>
      </hudson.scm.SubversionSCM_-ModuleLocation>
    </locations>

Новое редактирование: Решено

Моя версия hudson была последней (1.349), но версия плагина svn была 1.11, последняя - 1.13, и она работает с ${issueId}

Спасибо за ответы

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Из hudson wiki :

"Параметр доступен в качестве параметров среды. Так, например, оболочка ($ FOO,% FOO%) или Ant ($ {env.FOO}) могут получить доступ к этим значениям."

Ваш синтаксис не совпадает с синтаксисом в вики.

3 голосов
/ 11 марта 2010

Я настроил проект SVN, который успешно выполняет подстановку параметров.Синтаксис действительно ${issueId}, поэтому я предполагаю, что вы делаете что-то неправильно или используете очень старую версию Hudson.Не могли бы вы обновить вопрос версиями Hudson и используемым вами плагином Subversion?Оформить заказ не удается из-за проблемы аутентификации, но параметр успешно заменен:

Started by user anonymous
Building on master
Checking out a fresh workspace because C:\hudson\jobs\test-svn\workspace\${issueId} doesn't exist
Checking out https://svn.dev.java.net/svn/hudson/trunk/www
ERROR: Failed to check out https://svn.dev.java.net/svn/hudson/trunk/www
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:168)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:534)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:273)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:261)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:516)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1001)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:178)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:482)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:851)
    at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:534)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:893)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:791)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:615)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:541)
    at hudson.FilePath.act(FilePath.java:676)
    at hudson.FilePath.act(FilePath.java:660)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:534)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:482)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:898)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:400)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:349)
    at hudson.model.Run.run(Run.java:1106)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:93)
    at hudson.model.Executor.run(Executor.java:122)
Notifying upstream projects of job completion
Finished: FAILURE
2 голосов
/ 10 марта 2010

В этом комментарии упоминается, что они используют $ {ISSUEID}, поэтому я и предложил это, но все остальные признаки, которые я вижу, говорят, что на самом деле это не работает.

В противном случае я бы порекомендовал не использовать плагин SCM и не выполнять операцию SVN на шаге сценария сборки. Это позволит вам использовать параметры в качестве переменных env, таких как $ ISSUEID

...