【问题标题】:$class syntax in jenkins scripted dsljenkins 脚本 dsl 中的 $class 语法
【发布时间】:2018-02-14 22:48:13
【问题描述】:

通常在查看脚本化的 jenkins 管道代码时,我会看到这种模式...

step([$class: 'GitHubSetCommitStatusBuilder',
        statusMessage: [content: 'Pipeline Started']])

我没有任何运气找到有关此技术的文档,如果有人能解释这是做什么以及何时/为什么有用,我会很高兴。我相信这是一种实例化和填充底层 groovy 类成员的方法 - 但更详细的信息将不胜感激。

这也记录在任何地方吗?

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline


    【解决方案1】:

    这里是a reference,它简要解释了语法。基本上,您正在为 step() 函数提供名称-值对形式的参数映射。第一个参数,特别是名称 $class 告诉函数要实例化哪个类(插件)。

    这种语法似乎也被弃用,取而代之的是更短的语法,在同一链接中也有解释。

    【讨论】:

    • Pipeline docs 已移至 jenkins.io/doc/book/pipeline,不幸的是,它忽略了记录 $class 的含义 - 但这篇 SO 帖子实际上确实正确解释了 $class。 stackoverflow.com/questions/45773181/…
    • 我不认为这种技术已被弃用,或者至少我找不到任何关于弃用事实的参考。许多插件依赖于以这种形式为其函数指定参数。从插件开发的角度来看,它只是次优。
    【解决方案2】:

    我也在为这种语法苦苦挣扎,但不幸的是还没有找到任何文档。

    我猜这个语法是用来做实例初始化的。

    所有步骤类都实现接口BuildStep。脚本加载后,启动所有步骤实例,然后在构建过程中调用它们的perform 方法。

    以上都是我的猜想。

    【讨论】:

      【解决方案3】:

      还有另一个来自“管道:基本步骤”github repo 文档的快速参考:

      https://github.com/jenkinsci/workflow-basic-steps-plugin/blob/master/CORE-STEPS.md

      语法

      举个例子,你可以写一个 Pipeline 脚本:

      node {
          sh 'make something'
          step([$class: 'ArtifactArchiver', artifacts: 'something'])
      }
      

      在这里,我们正在运行标准归档工件构建后操作 (hudson.tasks.ArtifactArchiver),并配置文件归档属性 (工件) 以归档我们在较早步骤中生成的文件。查看要使用的类和字段名称的最简单方法是使用管道配置页面中的代码段生成器功能。

      有关当前支持的步骤列表,请参阅兼容性列表。

      简化语法

      自 2.2 起,Jenkins 核心中的构建步骤和构建后操作以及在某些插件中根据其各自的变更日志定义了符号,以允许更简洁的语法。 Snippet Generator 将在可用时提供此功能。比如上面的脚本也可以写成:

      node {
          sh 'make something'
          archiveArtifacts 'something'
      }
      

      注意:简化语法,参考Plugin Steps parameters

      【讨论】:

      • 这在声明性管道中看起来如何?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多