Kev*_*chs 7 groovy jenkins jenkins-groovy jenkins-pipeline
我们有一系列相同的Jenkinsfile脚本,除了每个脚本配置一个环境项以指向包含Jenkinsfile的SCM结账中的目录.它用于引用同一目录中的文件.SCM repo将所有这些Jenkinsfile脚本放在不同的目录中.如果我只能检索包含Jenkinsfile的目录的路径,我会看到一个简单的开头,使管道脚本在每种情况下都相同.
我试过几个不同的东西,比如包含的步骤
script {
println __FILE__
}
Run Code Online (Sandbox Code Playgroud)
和
script {
scriptDir = new File(getClass().protectionDomain.codeSource.location.path).parent
println scriptDir
}
Run Code Online (Sandbox Code Playgroud)
两者都没有运行(在__FILE__案例中给出了不存在的变量,在第二种情况下违反了权限).我试过"${__FILE__}"和其他变种.
我需要在step-sh块中使用该目录,所以我认为它需要在一个环境项中.
现在,Jenkins作业配置提供了Jenkins文件的路径,但我不想重复这一点以在该级别创建另一个环境变量.
已经咨询过:
感谢帮助.
在另一个线程中找到:
def currentScriptPath = new File(currentBuild.rawBuild.parent.definition.scriptPath).parent
Run Code Online (Sandbox Code Playgroud)
但它需要批准很多方法。
And*_*ray -3
最简单的方法是将 Jenkinsfile 放在存储库的根目录下,并获取 Jenkins 设置的 WORKSPACE 环境变量的值。
鉴于 Groovy 基本上只是 Java,您可以像这样获取绝对路径:
new File("{env.WORKSPACE}").absolutePath
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |