Jenkins声明性管道:当仅为管道设置代理时,哪个工作空间与阶段关联?

use*_*968 6 declarative jenkins jenkins-pipeline

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

pipeline {
    agent { node { label 'linux' } }
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Build') {
            steps {
                sh 'make'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我很难找到有关声明性管道的工作空间保证的文档.这个例子对于工作空间有什么保证?

我相信在测试类似管道的过程中,我遇到了在不同工作空间中执行的两个阶段,但我不确定发生了什么.我真的希望避免在构建步骤之前隐藏我的结帐或使用外部工作区插件,所以我希望有办法强制我的所有阶段在一个工作区/一个节点上运行.

小智 5

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

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