2014-05-09 70 views
5

我试图在Jenkins创建一个工作,这将允许我构建一个存储在Subversion中的项目,但会问我要构建哪个标记,分支或树干。在Jenkins中构建SVN主干,分支和标签?

我试着让它成为一个参数化的版本,增加了“List Subversion tags”参数,但是只创建了一个只有/ branches,/ tags和/ trunk的下拉菜单。它没有列出单个分支或标签。

我以为使用Subversion Release Manager可以解决这个问题,但是它没有提供如何使用它的有意义的文档,到目前为止我所有的尝试都没有要求我使用分支,而是继续检查整个树干和每个分支和标签。

Jenkins Issue 10678应该是提供了这个,但那是在2011年,如果它仍然应该工作,我一直无法为我工作。

有谁知道如何做到这一点?

回答

5

您可以将变量用于存储库位置,因此jenkins中的存储库URL看起来像http://myhost.com/MY_REPO/${some_branch},其中some_branch是您的参数。可以将此参数设置为可以手动输入的字符串参数,也可以使用动态选项参数,然后使用存储库中的信息(https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Dynamic+Parameter+Plug-in)自动填充下拉菜单。例如:

动态选择参数:“some_branch”

// Choices Script (groovy) 
def dirs = ['trunk/'] // defaults to trunk 

def command = ['svn', 'ls', 'http://myhost.com/MY_REPO/tags'] 
def proc = command.execute() 
proc.in.eachLine { dirs.add('tags/' + it) } 

command = ['svn', 'ls', 'http://myhost.com/MY_REPO/branches'] 
proc = command.execute() 
proc.in.eachLine { dirs.add('branches/' + it) } 

dirs 
+0

在库网址[JENKINS-18426(https://issues.jenkins-ci.org/browse/JENKINS-18426?page=com.atlassian使用变量时要警惕这个问题与Subversion插件。 jira.plugin.system.issuetabpanels:all-tabpanel) – coz

+0

也可以指向版本库根目录。像那样,例如可以使用参数$ VERSION,其将包括例如“trunk”,“branches/branch1.2.3”或“tags/tag-3.4.5”。 – Alex

0

我使用的颠覆插件和它的作品真的很好。 不确定自发布问题后是否有更改。

只需a note即可为初学者设置插件。

它提供了一个一步一步的解决方案与截图。

0

您使用管道?声明或脚本?如果你想用脚本管道来做到这一点,请尝试以下内容......我试图弄清楚这一点的同时,我花了好几个小时敲着脑袋。声明式管道很好,但只要你需要做一些不同的事情,它就会变成一场噩梦(根据我的经验)。更不用说在查找示例/文档时,最终会发现关于声明性管道的很多内容,而且很少介绍脚本。

parameters([ 
    [$class: 'ListSubversionTagsParameterDefinition', 
      name: 'SVN_TAG_TO_BUILD', 
      tagsDir: 'https://server/svn/repo/tags', 
      credentialsId: 'jenkins', 
      maxTags: '50', 
      reverseByDate: true, 
      reverseByName: false], 
    string(
     defaultValue: 'Running release build', 
     description: 'Comments to leave when creating the release build tag', 
     name: 'SVN_COMMENTS' 
    ) 
])