我正在尝试在Jenkins中创建一个工作,这将允许我构建一个存储在Subversion中的项目,但会问我要构建哪个标记,分支或主干。
我尝试将其设置为参数化构建,添加“List Subversion tags”参数,但这会创建一个只包含/ branches,/ tags和/ trunk的下拉列表。它没有列出单个分支或标签。
我认为使用Subversion Release Manager会对此进行管理,但是它没有提供有关如何使用它的有意义的文档,到目前为止我尝试使用它的所有尝试都导致它没有要求我提供分支,但继续检查整个树干和每个分支和标签。
Jenkins Issue 10678原本应该提供这个,但那是在2011年,如果它仍然有效,我就无法让它为我工作。
有谁知道如何实现这一目标?
答案 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)
答案 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'
)
])