在Jenkins构建SVN主干,分支和标签?

时间:2014-05-09 20:15:00

标签: svn jenkins

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

我尝试将其设置为参数化构建,添加“List Subversion tags”参数,但这会创建一个只包含/ branches,/ tags和/ trunk的下拉列表。它没有列出单个分支或标签。

我认为使用Subversion Release Manager会对此进行管理,但是它没有提供有关如何使用它的有意义的文档,到目前为止我尝试使用它的所有尝试都导致它没有要求我提供分支,但继续检查整个树干和每个分支和标签。

Jenkins Issue 10678原本应该提供这个,但那是在2011年,如果它仍然有效,我就无法让它为我工作。

有谁知道如何实现这一目标?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我正在使用subversion插件,它工作得很好。 自发布问题以来,不确定是否有一些变化。

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

它提供了一个带有屏幕截图的分步解决方案。

答案 2 :(得分:-1)

您使用的是Pipeline吗?声明还是脚本?如果你想用脚本化的管道来做这个尝试以下...我花了很多时间撞击我的脑袋,同时试图解决这个问题。声明性管道很好,但是只要你需要做一些不同的事情就会变成一场噩梦(根据我的经验)。更不用说在寻找示例/文档时,你最终会发现许多关于声明性管道而且几乎没有编写脚本。

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'
    )
])
相关问题