一尘不染

收件人提供者的Jenkins Pipeline emailext $ class参数

jenkins

我一直在努力理解下面的管道常规代码:

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中是某种特殊的保留字来表示类类型吗?

2)在源代码中,recipientProviders是a,List但是在上面的代码中到底分配了什么?它是地图列表吗?

3)emailext插件源代码在哪里定义了emailext?我在插件源代码中的所有.groovy文件中搜索了emailext,但似乎找不到上面的emailext调用。

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


阅读 667

收藏
2020-07-25

共1个答案

一尘不染

1)2)大致相同:

[$class: 'DevelopersRecipientProvider']是具有键'$class'(请注意是字符串文字)和value
的映射文字'DevelopersRecipientProvider'。没什么特别的。

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

[[$class: 'DevelopersRecipientProvider']]是地图列表,'recipientProviders''subject'或相同'body'

您可能会认为emailext是具有签名的方法:void emailext(Map<String, Object> map)

3)emailext是用Java实现的方法。您可以在此处此处找到源代码。

2020-07-25