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

时间:2017-05-13 01:01:07

标签: jenkins jenkins-pipeline declarative

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

btw,checkout scm会在带有声明的管道的开头自动发生,因此您不需要明确地将其调出。

答案 1 :(得分:3)

70%肯定 - 基于传闻证据 - 如果您在声明管道中指定一个节点,您将始终在声明性管道的不同阶段在同一节点上获得相同的工作空间最高级别,永远不会覆盖它,就像你正在做的那样。

我保留调整自信心水平的权利,因为我会收到有关此答案的反馈。 :d