从jenkins作业配置中读取jenkins文件中的SVN URL

从jenkins作业配置中读取jenkins文件中的SVN URL,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个Jenkins管道作业,配置为“来自SCM的管道脚本”,指向SVN中的一个Jenkins文件。例如,SVN URL是 jenkins master执行浅层签出(仅限根文件),然后在根位置查找jenkins文件 该URL在jenkins文件中重复,该步骤在单独的jenkins代理上签出SVN工作区 因此,每当我为一个新分支克隆jenkins作业时,我需要在两个不同的位置修复URL:一个是在jenkins作业配置中指向jenkins文件,另一个是在jenkins文件中。有没有办法避免这种情况

我有一个Jenkins管道作业,配置为“来自SCM的管道脚本”,指向SVN中的一个Jenkins文件。例如,SVN URL是 jenkins master执行浅层签出(仅限根文件),然后在根位置查找jenkins文件

该URL在jenkins文件中重复,该步骤在单独的jenkins代理上签出SVN工作区


因此,每当我为一个新分支克隆jenkins作业时,我需要在两个不同的位置修复URL:一个是在jenkins作业配置中指向jenkins文件,另一个是在jenkins文件中。有没有办法避免这种情况,例如从Jenkins文件中读取当前作业配置?

最后,我设法通过
scm
全局从作业配置中检索SVN URL,将其存储在SVNURL环境变量中,然后在签出步骤中使用它,而不是硬编码SVN URL

stage('stage-name')
{
    steps
    {
        // Get the SVN URL from the pipeline job configuration
        script
        {
            env.SVNURL = scm.getLocations()[0].getURL()
        }

        checkout([
            $class: 'SubversionSCM',
            filterChangelog: false,
            ignoreDirPropChanges: false,
            locations:
                [[
                    credentialsId: '<guid>',
                    depthOption: 'infinity',
                    ignoreExternalsOption: false,
                    local: 'my-checkout-folder',
                    remote: env.SVNURL
                ]],
            workspaceUpdater: [$class: 'UpdateWithCleanUpdater']
        ])
    }
}
stage(“stage-name”)
{
台阶
{
//从管道作业配置中获取SVN URL
剧本
{
env.SVNURL=scm.getLocations()[0].getURL()
}
结帐([
$class:'SubversionSCM',
filterChangelog:false,
ignoreDirPropChanges:false,
位置:
[[
凭证ID:“”,
depthOption:'无限',
忽略外部选项:false,
本地:“我的签出文件夹”,
远程:env.SVNURL
]],
workspaceUpdater:[$class:'UpdateWithCleanUpdater']
])
}
}

不确定是否读取同一作业的配置,但是,这可以通过参数化URL来完成。一旦它被作为参数传递,它就可以被提供给SCM,并且可以在Jenkinsfile中使用。@saurabh14292我找到了一种没有参数化的方法,请参阅答案below@saurabh14292您好,我尝试了很多方法,为什么我不能在SCM的管道脚本中参数化svn url,例如${svn_url}、$svn_url等。这些方法无效,您能帮助我吗?您好,每次添加新分支时,都必须在jenkins ui的SCM的管道脚本中添加一个svn新url。它是多余的吗?有没有办法参数化svn url?当我构建某个参数时,他只是在该url中找到Jenkins文件