Jenkins Scripted Pipeline -在节点分配工作空间之前指定工作空间目录

jdgnovmf  于 2023-02-21  发布在  Jenkins
关注(0)|答案(1)|浏览(206)

我有一个多分支管道,在脚本化管道中定义(来自库),协调约100个构建版本,每个构建版本跨多个从属版本(不同的操作系统)。其中一个操作系统是Windows,它具有255个字符的路径限制。因为我们的一些作业中具有~200个字符的路径(我们无法控制,因为它是供应商提供的),我需要修改windows slave上的step/node工作区,最好用node()步骤修改它,这样git在自定义工作区中只会自动 checkout 一次。
我试过各种各样的款式:
这在声明管道中有效:

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()
        }
    }
}

有什么建议吗?

cgfeq70w

cgfeq70w1#

未测试(专门定义节点内的选项),但您可以尝试跳过默认检出,并在更改工作区后执行,如下所示:

pipeline {
    stage('stage1') {
        node('win-node') {
            options {
                skipDefaultCheckout true // prevent checkout to default workspace
            }
            ws("c:\\w\\${JOB_NAME}") {
                checkout scm // perform default checkout here
                body()
            }
        }
    }
}

相关问题