我创建了一个管道作业,并希望获得svn版本号,以便在调用shell脚本时启用进一步的下游处理。我正在使用类似于以下的管道脚本:
node {
// Mark the code checkout 'stage'....
stage 'Checkout'
// Get some code from a SVM repository
checkout(
[
$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [
[
...
]
],
workspaceUpdater: [$class: 'UpdateUpdater']
]
)
def svnversionnumber=${SVN_VERSION}
sh "/.../someshellscript ${svnversionnumber};"
}
是否有关于结帐功能的文档?是否有可能获得svn修订号?我可以看到修订版输出到日志中。
答案 0 :(得分:6)
我遇到了同样的问题,但你可以使用从调用SCM checkout返回的地图来解决它。它包含SVN_REVISION的值。
// Get some code from a SVM repository
def scmVars = checkout(
...
)
def svnversionnumber = scmVars.SVN_REVISION
答案 1 :(得分:3)
我最终调用了一个shell来获取svn修订号,如下所示
def svnVersionNumber = sh(
script: "svn info --show-item last-changed-revision $url",
returnStdout: true
)
这是我能让它正常工作的唯一方法。
答案 2 :(得分:2)
build dir中有一个名为revision.txt的文件。 SubversionSCM提供了读取此文件的方法。
//Here remote returns url@revision but the revision part is across the entire repo
//We will use the url part to get the revision for our branch
def remote = scm.locations.first().remote
def url = remote.split('@').first()
//The revision file has the revision for our branch. Parse returns a map.
def revmap = scm.parseRevisionFile(currentBuild.rawBuild)
revmap[url]
在Jenkinsfiles上可以使用scm变量。如果您没有使用Jenkins文件,您应该能够创建scm对象并将其传递给checkout方法。
答案 3 :(得分:2)
在Groovy管道脚本中,可以将checkout scm
命令的结果导入TreeMap变量,然后得到你需要的东西:
def checkoutResults = checkout([
poll: false,
scm: [
$class: 'SubversionSCM',
...
]
])
echo 'checkout results' + checkoutResults.toString()
echo 'checkout revision' + checkoutResults['SVN_REVISION']
echo 'checkout revision' + checkoutResults['SVN_REVISION_1']
echo 'checkout revision' + checkoutResults['SVN_REVISION_2']
答案 4 :(得分:1)
这段代码在jenkins管道中为我工作:
String url = 'svn+ssh:...'
SVN_REVISION_IN = sh returnStdout: true, script: 'svn info --show-item last-changed-revision ' + url
currentBuild.displayName = "Rev: ${SVN_REVISION_IN}"
答案 5 :(得分:0)
答案 6 :(得分:0)
Jenkins环境变量SVN_REVISION直接提供