Jenkins 声明式管道 : What workspace is associated with a stage when the agent is set only for the pipeline?

标签 jenkins jenkins-pipeline declarative

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

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

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

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

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

最佳答案

提供的流水线代码应该只创建一个工作区并在其中运行所有阶段。除非你新建一个 agent您的任何 stages 中的指令它不会利用另一个节点或工作区。

顺便说一句,checkout scm使用声明式在流水线的开头自动发生,因此您不需要明确地调用它。

关于Jenkins 声明式管道 : What workspace is associated with a stage when the agent is set only for the pipeline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948248/

相关文章:

java - 从 Linux 服务器中的 Jenkins 触发 Windows 系统中的脚本

arrays - 如何将字符串数组传递到 ps1 文件?

linux - Jenkins 显示错误 chrome not reachable

git - "Thread safe"git pull 或如何避免 ".../.git/index.lock' : File exists. "

python - 声明性 SQLAlchemy 中的标签字典?

android - 为多应用程序 android 项目设置 Jenkins

jenkins - 如何在 Jenkinsfile 中将 Artifactory DiscardOldBuilds 设置为 true?

groovy - 如何在 jenkinsfile 中硬链接(hard link)文件

javascript - 为什么声明式编码适用于并行计算

prolog - 我很好奇逻辑程序是否可以做代数