当前位置: 首页 > 面试题库 >

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

宗政金鹏
2023-03-14
问题内容

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

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调用。

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


问题答案:

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实现的方法。您可以在此处和此处找到源代码。



 类似资料:
  • 随着@provides方法变得更加复杂,可以使用Provider接口将这些方法移动到单独的类中。 class SpellCheckerProvider implements Provider<SpellChecker> { @Override public SpellChecker get() { String dbUrl = "jdbc:mysql://localhost

  • 提供者(Provider) 是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。 EtherscanProvider 和 InfuraProvider 提供连接公开的第三方节点服务提供商,无需自己运行任何以太坊节点。 JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点(包括主网,测试网,权威证明(PoA)节点或Ganache)

  • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge

  • 简介 服务提供者是所有 Lumen 应用程序启动的中心所在。包括你自己的应用程序,以及所有的 Lumen 核心服务,都是通过服务提供者启动的。 但是,我们所说的「启动」指的是什么?一般而言,我们指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。服务提供者是设置你的应用程序的中心所在。 若你打开 Lumen 的 bootstrap/app.php 文件,你将会看到 $app->

  • 确保最新的pact契约得到验证 使用最新的可用的pact契约访问地址。 不要依赖手动干预(例如,将文件复制到提供者项目中)。因为这个步骤将分解或中断验证过程,导致某些验证任务错误。 不要试图通过手动更新pact契约的方式来“保证”测试通过。 pact:verify是集成验证的金丝雀方式 - 而手动更新就像给金丝雀戴上防毒面具,失去了本来意义。 确保Pact测试作为CI构建的一部分它应该与所有其他测