当前位置: 首页 > 知识库问答 >
问题:

是否可以将声明式管道的整个阶段包装为groovy库函数?

卫嘉言
2023-03-14

我想补充一下

myStage()

到詹金斯档案myStage()在共享库中定义,并包含一个完整的阶段。这可能吗?我读到我可以将单个步骤和整个管道放入groovy函数中,但是阶段也可以吗?

共有1个答案

申屠恺
2023-03-14

声明性管道是不可能的。

声明性管道的其他部分可以通过库进行扩展,如选项,但据说:

例如,任何包含实际步骤执行(因此步骤、post、when(部分原因是when表达式,部分原因是它会让人头疼)、stage和stage(因为stage包含步骤,stage包含stage)的内容都不受支持。

看见https://issues.jenkins-ci.org/browse/JENKINS-49135.

此外,自声明性管道1.2以来,正式支持库中的整个管道。

 类似资料:
  • 正如您所知道的,在Jenkins的共享库中,可以在Jenkinsfile中调用vars文件夹中文件的内容。 例如,在共享库的vars文件夹中,我们可以有一个名为在Jenkins文件中,我们可以通过以下方式调用它: 如本节所述。使用groovy文件并使用Jenkins文件中的方法调用它们,我没有任何问题。 但是我想定制一个管道,并使其尽可能通用。所以我想调用包含在文件夹中但在同一管道中的groovy

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

  • 我希望是需要非序列化依赖项才能完成其工作的东西。 我知道我能做到: 这将从源代码读取的字符串包装在包含依赖项的另一个对象中,从而使能够访问这些依赖项,而不需要将它们注入到该对象本身。这是可行的,但我想在Jet之外使用我的映射函数,也是管道的一部分,在这种情况下,必须将依赖关系与被映射的项一起传递,而不是仅仅用它需要的依赖关系初始化映射器,这有点奇怪。它还迫使我毫无意义地在我的流/批处理中为每个项创

  • 问题内容: 我正在尝试做这样的事情: 但这给了我这个例外: 是否可以将阶段定义为外部闭包? 问题答案: 您不能在声明式管道之外定义阶段。声明性管道的主要目的是提供经过简化且自以为是的语法,因此您可以专注于应该做什么(通过使用一些可用的步骤)而不是如何去做。 如果您对更灵活的管道实现方式感兴趣,可以选择“ 脚本化管道”方法,该语法在语法方面并不严格-仅受Groovy和CPS执行模块的限制。 您的示例

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

  • 问题内容: 我想在声明性Jenkins管道内的锁内运行多个阶段: 我收到以下错误: 这是什么问题 该文档明确指出: 也可以用于将多个阶段包装到单个并发单元中 问题答案: 问题是,尽管事实上在2016年9月Beta版中提供了声明式管道,但您引用的博客文章(自10月起)记录的是脚本化管道,而不是声明式的(声明不多,所以我觉得您痛)。尚未将可锁定资源作为声明性管道步骤来使用,而该方式不能启用您正在寻找的