首页 > 解决方案 > Jenkins Scripted Pipeline - 在节点分配工作空间之前指定工作空间目录

问题描述

我有一个多分支管道,在一个脚本管道(来自一个库)中定义,它协调约 100 个构建,每个构建跨多个从属(不同的操作系统)。操作系统之一是 Windows,它有 255 个字符的路径限制。因为我们的一些工作中有大约 200 个字符路径(我们无法控制,因为它是供应商提供的地狱),我需要更改我们的 Windows 从站上的步骤/节点工作区,最好使用 node()步骤,以便 git 仅自动检出一次到自定义工作区。

我尝试了各种不同的风格:

这在声明式管道中有效:

stage('blah') {
    node {
        label 'win'
        customWorkspace "c:\\w\\${JOB_NAME"
    }
    steps {
        ...
    }
}

但我找不到脚本管道的等价物:

pipeline {
    stage('stage1') {
        node('win-node') {
             // the git repository is checked out to ${env.WORKSPACE}, but it's unusable due to the path length issue
             ws("c:\\w\\${JOB_NAME}") {
                 // this switches the workspace, but doesn't clone the git repo again
                 body()
             }
        }
    }
}

理想情况下,我想要这样的东西:

pipeline {
    stage('stage1') {
        node('win-node', ws="c:\\w\\${JOB_NAME}") {
            body()
        }
    }
}

有什么建议吗?

标签: jenkinsjenkins-pipeline

解决方案


推荐阅读