jenkins - 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()
}
}
}
有什么建议吗?
解决方案
推荐阅读
- linux - 如何使用管道发送参数
- apache - Regular Expression requiring a fix
- ios - 如何在动态 UITableView xcode 项目中更改单元格中的数据?
- python - NameError:未定义名称“消息”
- html - Html:如何将两个图像放在另一个上面与文本在同一行中?
- dynamics-crm - 从 .Net Core 2.1 WebApp 调用 Dynamics 2011
- php - Symfony Twig 错误提示:未定义索引
- c++ - Qt - QLineEdit 不更新页面和 URL
- sql - 是否定义了 SQL SELECT 中的“OR”子句的结果?
- logstash - 如何在 Kibana/Logstash 中对日志进行分组?