Skip to main content
 首页 » 编程设计

jenkins之获取 Jenkins Pipeline 插件中工作区目录的绝对路径

2024年04月17日45tuyile006

我目前正在对 Jenkins Pipeline 插件(以前称为 Workflow 插件)进行一些评估。 阅读文档我发现我目前无法使用以下命令检索工作区路径 env.WORKSPACE :

The following variables are currently unavailable inside a workflow script:

NODE_LABELS

WORKSPACE

SCM-specific variables such as SVN_REVISION

还有其他方法可以获取当前工作空间的绝对路径吗?我需要运行一些测试,从而获取一些参数(某些可执行文件的绝对路径)。 我已经尝试过使用 new File("").absolutePath()里面 @NonCPS部分,但看起来非 CPS 的东西总是在主服务器上执行。

有人知道如何在不运行某些批处理脚本的情况下获取此路径吗?该批处理脚本将路径存储到某个文件中,以便稍后可以再次读入?

请您参考如下方法:

Pipeline Nodes and Processes Plugin 2.5 版起(Pipeline 插件的一个组件,默认安装),WORKSPACE 环境变量再次可用。该版本于 2016 年 9 月 23 日发布,因此它应该可在所有最新的 Jenkins 实例上使用。

示例

node('label'){ 
    // now you are on slave labeled with 'label' 
    def workspace = WORKSPACE 
    // ${workspace} will now contain an absolute path to job workspace on slave 
 
    workspace = env.WORKSPACE 
    // ${workspace} will still contain an absolute path to job workspace on slave 
 
    // When using a GString at least later Jenkins versions could only handle the env.WORKSPACE variant: 
    echo "Current workspace is ${env.WORKSPACE}" 
 
    // the current Jenkins instances will support the short syntax, too: 
    echo "Current workspace is $WORKSPACE" 
 
}