一尘不染

Jenkins声明性管道:仅为管道设置代理时,与阶段关联的工作空间是什么?

jenkins

这是声明性管道的示例,其中为管道设置了代理,但未在各个阶段中设置代理:

pipeline {
    agent { node { label 'linux' } }
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Build') {
            steps {
                sh 'make'
            }
        }
    }
}

我发现的有关脚本化管道的文档清楚地表明,将在单个节点块内使用单个工作空间,但可能会为多个节点块分配多个工作空间,因此有必要在这些步骤之间进行存储,使用外部工作空间插件等如果您想确定步骤之间工作空间中的内容。

我很难找到有关声明性管道的工作空间保证的文档。此示例对工作空间有什么保证?

我相信在测试相似的管道期间,我在不同的工作区中执行了两个阶段,但是我不确定这是怎么回事。我真的很想避免在构建步骤之前就需要存放我的签帐或使用外部工作区插件,因此我希望有一种方法可以强制我的所有阶段都在一个工作区/一个节点上全部运行。


阅读 227

收藏
2020-07-25

共1个答案

一尘不染

呈现的管道代码应仅创建一个工作区并在其中运行所有阶段。除非您agent在任何一个中创建新指令,stages否则它将不会利用其他节点或工作空间。

顺便说一句,它checkout scm是在带有声明性的管道的开头自动发生的,因此您不需要显式调用它。

2020-07-25