当前位置: 首页 > 面试题库 >

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

曾瀚昂
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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

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



 类似资料:
  • 我正在使用詹金斯声明管道,不知道是否有任何方法可以定期触发特定阶段。 我的意思是,当我们签出SCM时,管道会触发,但阶段2对我们的一些项目来说太长了。因此,我不想等待这个阶段,我只想每天运行这个阶段,但仍然将这个阶段保存在Jenkins文件中。 有没有办法做到这一点?这样做的最佳方法是什么?

  • 问题内容: 我正在使用声明性管道语法在Docker容器中执行一些CI工作。 我注意到,用于Jenkins的Docker插件使用主机中jenkins用户的用户ID和组ID运行一个容器(即,如果jenkins用户具有用户ID 100和组ID 111,它将运行管道以创建带有命令)。 我遇到了一些问题,因为该容器将以不存在的用户运行(特别是我遇到了用户没有主目录的问题)。所以我想到了创建一个Dockerf

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 我正在编写一个Groovy脚本,其中包含部署terraform的作业。我正在使用作业DSL并使种子作业由JCasC实现,一切正常。然后我有一个包含作业的Groovy文件的存储库。 如果我将Groovy文件保持为单个作业,它就可以正常工作。 然而,我希望能够构建具有构建阶段的管道。我知道我可以把管道写在詹金斯文件中 我有这个作为开始: 但是,我看到了这个错误: 我已经尝试了各种方法,并阅读了一堆文档

  • 当我在jenkins中运行多分支管道代码时,我收到以下的以下错误: java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法“管道”[archive,bat,build,catchError,checkout,deleteDir,dir,echo,emailext,EmailExtrecients,error,fileExists,getContext,git,inp

  • 问题内容: 如何报告声明式管道失败的阶段?在fail块中,我想获取failureStage.name并将其报告(最终报告为松弛)。 问题答案: PipelineVisitor是一种很好的方法。但是,如果您只想查看错误,那么利用可能会更好。 以下内容提供了每个失败步骤的映射列表,并且还遍历了下游作业。我发现它非常有用。 您将要使用共享库来避免安全沙箱警告/批准