Jenkins声明性管道 - 如何获取正在使用的Jenkinsfile的路径?

问题描述 投票:5回答:2

我们有一系列相同的Jenkinsfile脚本,除了每个脚本配置一个环境项以指向包含Jenkinsfile的SCM结账中的目录。它用于引用同一目录中的文件。 SCM repo将所有这些Jenkinsfile脚本放在不同的目录中。如果我只能检索包含Jenkinsfile的目录的路径,我会看到一个简单的开头,使管道脚本在每种情况下都相同。

我试过几个不同的东西,比如包含的步骤

script {
    println __FILE__
}

script { 
    scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
    println scriptDir
}

两者都没有运行(在__FILE__情况下给出了不存在的变量,在第二种情况下给出了权限违规)。我试过"${__FILE__}"和其他变种。

我需要在step-sh块中使用该目录,所以我认为它需要在一个环境项中。

现在,Jenkins作业配置提供了Jenkins文件的路径,但我不想重复这一点以在该级别创建另一个环境变量。

已经咨询过:

感谢帮助。

jenkins groovy jenkins-pipeline jenkins-groovy
2个回答
1
投票

如果你真的需要这个,你可以获取"${JOB_URL}config.xml"并解析scriptPath

但这显然不是一个干净的解决方案。


-1
投票

最简单的方法是将Jenkinsfile放在存储库的根目录下,并获取Jenkins设置的WORKSPACE环境变量的值。

鉴于Groovy基本上只是Java,你可以得到如下的绝对路径:

new File("{env.WORKSPACE}").absolutePath
© www.soinside.com 2019 - 2024. All rights reserved.