问题:Jenkins Pipeline emailext $class parameter for recipientProviders

我一直试图了解下面的管道常规代码:

emailext (
        subject: "STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
        body: """<p>STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
          <p>Check console output at &QUOT;<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</p>""",
        recipientProviders: [[$class: 'DevelopersRecipientProvider']]
      )

1)类前的美元符号(即$class)有什么特殊含义吗?我知道它指的是类类型DevelopersRecipientProvider但是$class是 groovy 中的某种特殊保留字来指示类类型吗?

  1. 在源代码中,recipientProviders是一个List,但在上面的代码中究竟分配了什么?是地图列表吗?

  2. emailext插件源代码中定义的emailext在哪里?我在插件源代码中的所有 .groovy 文件中搜索了 emailext,但似乎找不到类似于上述 emailext 调用的内容。

如果有人能对上述内容有所了解,我将不胜感激,谢谢。

解答

    1. 大致相同:

[$class: 'DevelopersRecipientProvider']是一个映射字面量,键为'$class'(注意它是一个字符串字面量),值为'DevelopersRecipientProvider'。没什么特别的。

关于recipientProviders: [[$class: 'DevelopersRecipientProvider']],

[[$class: 'DevelopersRecipientProvider']]是一个map列表,'recipientProviders'是与'subject''body'相同的key。

你可能认为emailext是一个带有签名的方法:void emailext(Map<String, Object> map)

3)emailext是用Java实现的方法。你可以在这里找到源代码和在这里。

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐