![](/img/trans.png)
[英]jenkins on windows. Declarative pipeline jenkinsfile. how to set and get correct variable values
[英]Jenkins Declarative Pipeline - how to get path to Jenkinsfile in use?
我们有一系列相同的 Jenkinsfile 脚本,除了每个配置一个环境项以指向 SCM 结帐中保存 Jenkinsfile 的目录。 这用于引用同一目录中的文件。 SCM 存储库在不同的目录中包含所有这些 Jenkinsfile 脚本。 如果我只能检索包含 Jenkinsfile 的目录的路径,我看到一个简单的开口使管道脚本在每种情况下都相同。
我尝试了几种不同的东西,比如包含的步骤
script {
println __FILE__
}
和
script {
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
println scriptDir
}
两者都没有运行(在__FILE__
案例中给出了不存在的变量,在第二种情况下给出了权限违规)。 我尝试"${__FILE__}"
和其他变体。
我需要在 steps-sh 块中使用目录,所以我相信它需要在环境项中。
现在,Jenkins 作业配置提供了 Jenkins 文件的路径,但我不想在该级别重复创建另一个环境变量。
已咨询:
感谢帮助。
在另一个线程中找到:
def currentScriptPath = new File(currentBuild.rawBuild.parent.definition.scriptPath).parent
但它需要批准很多方法。
如果你真的需要这个,你可以获取"${JOB_URL}config.xml"
并解析scriptPath
。
但这显然不是一个干净的解决方案。
最简单的方法是将Jenkinsfile放在存储库的根目录下,并获取Jenkins设置的WORKSPACE环境变量的值。
鉴于Groovy基本上只是Java,你可以得到如下的绝对路径:
new File("{env.WORKSPACE}").absolutePath
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.