我目前正在对Jenkins Pipeline插件(以前称为Workflow插件)进行一些评估。
阅读文档,我发现我目前无法使用检索工作区路径
env.WORKSPACE
:
以下变量目前在工作流脚本中不可用:
NODE_LABELS
WORKSPACE
特定于SCM的变量,例如SVN_REVISION
有没有其他方法可以获得当前工作空间的绝对路径?我需要运行一些测试,然后获取一些参数(一些可执行文件的绝对路径)。
我已经尝试在new File("").absolutePath()
部分中使用@NonCPS
,但看起来非CPS内容总是在主服务器上执行。
有没有人知道如何在没有运行某些批处理脚本的情况下获取此路径,该脚本将路径存储到某个文件中,以后可以再次读入该文件?
答案 0 :(得分:45)
注意:此解决方案仅在从属服务器具有与主服务器相同的目录结构时才有效。由于JENKINS-33511,pwd()
将返回主服务器上的工作区目录。
我曾经使用管道插件的pwd()
功能来做到这一点。所以,如果你需要在奴隶上获得一个工作区,你可能会这样做:
node('label'){
//now you are on slave labeled with 'label'
def workspace = pwd()
//${workspace} will now contain an absolute path to job workspace on slave
}
答案 1 :(得分:26)
自Pipeline Nodes and Processes Plugin(管道插件的一个组件,默认安装)的2.5版以来,WORKSPACE
环境变量再次可用。此版本于2016-09-23发布,因此应该可以在所有最新的Jenkins实例上使用。
答案 2 :(得分:9)
“ WORKSPACE”环境变量适用于最新版本的Jenkins Pipeline。您可以在Jenkins文件中使用此文件:“ $ {env.WORKSPACE}”
以下示例使用:
def files = findFiles glob: '**/reports/*.json'
for (def i=0; i<files.length; i++) {
jsonFilePath = "${files[i].path}"
jsonPath = "${env.WORKSPACE}" + "/" + jsonFilePath
echo jsonPath
希望有帮助!
答案 3 :(得分:0)
对我来说,WORKSPACE是管道本身的有效属性。因此,当我从管道脚本本身将.as-console-wrapper {
max-height: 100% !important;
}
作为参数this
交给Groovy方法时,我能够使用context
(在Jenkins 2.222.3上,构建管道插件1.5.8,管道:节点和进程2.35)