如何从结帐中获取SVN版本号以在DSL中使用

swe*_*eet 6 jenkins jenkins-pipeline

我创建了一个管道作业,并希望获得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};"
}
Run Code Online (Sandbox Code Playgroud)

是否有有关结帐功能的文档?可以获取svn修订版号吗?我可以看到修订已输出到日志。

小智 7

我遇到了同样的问题,但是您可以使用调用SCM checkout返回的映射来解决。它包含SVN_REVISION的值。

// Get some code from a SVM repository
def scmVars = checkout(
  ...
)

def svnversionnumber = scmVars.SVN_REVISION
Run Code Online (Sandbox Code Playgroud)


Mik*_*ail 5

在 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']
Run Code Online (Sandbox Code Playgroud)