Сможешь сделать это с Хадсоном?

Я хочу создать задание 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}

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


person user2427    schedule 09.03.2010    source источник
comment
у вас есть путь svn для каждой проблемы, которую вы решаете = ветка для каждой проблемы/ошибки/темы?   -  person matt b    schedule 10.03.2010
comment
да, спасибо за разъяснение   -  person user2427    schedule 10.03.2010


Ответы (3)


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

<project> 
  <actions/> 
  <description></description> 
  <keepDependencies>false</keepDependencies> 
  <properties> 
    <hudson.model.ParametersDefinitionProperty> 
      <parameterDefinitions> 
        <hudson.model.StringParameterDefinition> 
          <name>issueId</name> 
          <description></description> 
          <defaultValue>none</defaultValue> 
        </hudson.model.StringParameterDefinition> 
      </parameterDefinitions> 
    </hudson.model.ParametersDefinitionProperty> 
  </properties> 
  <scm class="hudson.scm.SubversionSCM"> 
    <locations> 
      <hudson.scm.SubversionSCM_-ModuleLocation> 
        <remote>https://svn.dev.java.net/svn/hudson/trunk/${issueId}</remote> 
      </hudson.scm.SubversionSCM_-ModuleLocation> 
    </locations> 
    <useUpdate>true</useUpdate> 
    <excludedRegions></excludedRegions> 
    <excludedUsers></excludedUsers> 
    <excludedRevprop></excludedRevprop> 
  </scm> 
  <canRoam>true</canRoam> 
  <disabled>false</disabled> 
  <triggers class="vector"/> 
  <concurrentBuild>false</concurrentBuild> 
  <builders/> 
  <publishers/> 
  <buildWrappers/> 
</project>

Вот результат сборки. Оформить заказ не удается из-за проблемы с аутентификацией, но параметр успешно заменен:

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
person Michael Donohue    schedule 11.03.2010

Из вики Hudson:

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

Ваш синтаксис не соответствует тому, что в вики.

person Tomislav Nakic-Alfirevic    schedule 09.03.2010
comment
Ты прав. Я пробовал это. Я только что изменил вопрос с правильной информацией. - person user2427; 10.03.2010
comment
Хадсон преобразует имя вашей переменной в верхний регистр, и вы используете оболочку (я предполагаю), поэтому вы хотите использовать http://svn-path:8181/svn/devSet/issues/$ISSUEID - person prestomation; 10.03.2010
comment
Вы можете поставить env прямо в свой скрипт сборки, чтобы распечатать текущую среду, чтобы подтвердить, что параметр делает это так далеко. - person prestomation; 10.03.2010
comment
Я не использую оболочку, настраиваю только раздел конфигурации источника исходного кода при настройке задания. В поле URL репозитория - person user2427; 10.03.2010
comment
О, извините, я думал, вы используете его прямо в скрипте сборки. Попробуйте ${ISSUEID} - person prestomation; 10.03.2010
comment
Если плагин SVN похож на плагин для Git, я не думаю, что это можно сделать (хотя я был бы рад ошибиться в обоих случаях). - person Christopher Orr; 10.03.2010
comment
Я настроил задание, которое принимает тег в качестве параметра и проверяет мой код. URL-адрес выглядит следующим образом: subversion/svn/.../tags/${SVN_TAG } Убедитесь, что параметр также указан в верхнем регистре. Я также снял флажок с опции использования обновления для SCM. - person Peter Schuetze; 10.03.2010

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

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

person prestomation    schedule 10.03.2010
comment
Я понимаю. Но можете ли вы настроить hudson для опроса SCM на наличие обновлений на этапе сборки сценария? - person user2427; 10.03.2010
comment
Кажется, это работает. Итак, как мне настроить задание с помощью сценария, чтобы проверить, есть ли изменение в SCM, и только если есть, выполнить задание? С плагином SCM вы можете сделать это, и это единственная причина, по которой я пытался его использовать. - person user2427; 11.03.2010
comment
Я не знаком с SVN, но вам придется написать сценарий. Grep выходные данные вашей команды svn, чтобы определить, продолжать или нет. - person prestomation; 11.03.2010