jenkins脚本化dsl中的$ class语法

时间:2018-02-14 22:48:14

标签: jenkins groovy jenkins-pipeline

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

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

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

这也记录在哪里?

3 个答案:

答案 0 :(得分:4)

以下是a reference,简要说明了语法。基本上,您为step()函数提供了名称 - 值对形式的参数映射。第一个参数,特别是由名称$ class表示,告诉函数实例化哪个类(插件)。

似乎也不推荐使用这种语法,而是使用更短的语法,也在同一链接中进行了解释。

答案 1 :(得分:0)

我也在努力学习这种语法,但遗憾的是还没有找到任何文档。

我想这种语法用于进行实例初始化。

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

以上都是我的猜想。

答案 2 :(得分:0)

“ Pipeline:基本步骤” github存储库文档中还有另一个快速参考:

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

  

语法

     

作为示例,您可以编写管道脚本:

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

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

     

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

     

简化的语法

     

Jenkins核心自2.2版开始的构建步骤和构建后操作,在某些插件中根据其各自的更改日志,具有定义的符号,这些符号可简化语法。 Snippet Generator将在可用时提供此功能。例如,上面的脚本也可以这样写:

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

NB:简化的语法引用了Plugin Steps parameters