🍰给微软团队带来蛋糕📣
🍰给微软团队带来蛋糕📣
原文:https://medium.com/hackernoon/bringing-cake-to-microsoft-teams-b49848981d5d
从蛋糕构建脚本向微软团队发送通知

尽管微软的团队会感谢你带给他们这不是这篇文章的内容,而是微软团队协作/团队聊天产品的通知。

蛋糕呢? Cake 是一个开源的构建系统,它让你以一种非侵入性的方式使用 C# DSL 跨平台和跨环境地编排围绕你的构建过程的一切——如果你是. NET 开发人员,所有这些都使用现有的技能。 ( 看多了)
就这么定了,如果你能从你的蛋糕脚本发送通知到微软团队频道不是很好吗?猜猜看——有!
插件
蛋糕可以通过插件扩展,蛋糕插件可以是任何。NET 程序集作为 NuGet 包在任何 nuget feed 上可用,其中nuget.org是最广为人知的包源。然而,您可以通过使用几个属性(即CakeMethodAliasAttribute和cakenamespace importattribute)成为一个更“原生”的 Cake addin,因为它们允许您使用 #addin 预处理器指令来扩展 DSL 和导入名称空间。
我已经创建了这样一个插件,它可以让你轻松地与微软团队频道交流
#addin指令从 nuget 获取程序集,引用它,找到任何 Cake 扩展方法并导入名称空间——使它们在您的 Cake 脚本中方便地全局可用。
安装/拆卸
通过在 Cake 脚本主机上的 Setup 和 Teardown 方法上注册动作,可以实现脚本何时启动以及脚本何时成功/失败的报告,设置在 Cake 任务执行之前执行,而拆除总是在任务执行之后执行。
正如您所看到的,拆卸上下文具有指示构建成功/失败的成功属性和包含失败异常的抛出异常属性。一个成功的构建应该是这样的:

失败的构建将包含如下异常/堆栈跟踪:

任务设置/拆除
如果您想跟踪单个任务的进度,可以使用任务设置和任务拆卸来注册任务执行前后执行的动作。

设置和拆卸上下文都提供了任务属性,该属性为您提供了关于任务的元数据,拆卸上下文还提供了持续时间和跳过的属性,指示任务是否被执行以及执行该任务需要多长时间。
高级格式
因此,除了添加只接受字符串作为消息的方法之外,还有一个microsoftteamsopstmessage重载,它接受一个MicrosoftTeamsMessageCard,这让您可以更好地控制消息布局。
为构建的每一步发布一条消息可能会变得非常冗长,剪裁这条消息,而不是像下面这样在一条消息中简洁地总结构建,从长远来看可能更具可持续性。

这与 Cake 输出到控制台的内容非常相似

失败时,你会得到一个图标,清楚地表明失败和成功时执行的步骤。

但是在扩展消息时,您也可以从任何错误中获得完整的堆栈跟踪

那么这个代码会是什么样子呢?你可以在下面测试一个完整的例子
上面的代码基本上是将设置、拆卸和任务拆卸的动作挂钩。仅在最终调用拆卸之前收集数据。这只是 C#所以你可以去疯狂,因为你想要的,但以上是一个很好的起点。
结论
希望这篇文章已经向你展示了如何从你的 cake 脚本发送通知,以及 Cake 为此提供了什么扩展点。这显然可以在其他消息平台上重复使用,如果你查看 Cake 网站上的插件部分,你会发现 Slack、HipChat、Gitter、Twitter 等插件。



