第十七天:TeamCity 通知机制

自从有了 TeamCity 後,很多原本需要人工操作的任务都可以交给 CI 主机做。因为它会在每一次发现变更的时候自动执行,一方面不会漏掉或忘了执行、另一方面在执行的时候也不会有流程或顺序上的失误(只要我们有设定正确)。更重要的是,随着专案愈来愈大,建置任务会需要较长时间执行,所以不用在电脑前面等也能节省不少开发者的时间。

不过,每次开发者都还要自己记得回去 TeamCity 的 Web UI 上看结果,还是会花掉一点时间,而当建置任务是成功的时候,其实好像也没有回去看结果的必要。是不是能让 TeamCity 平时就安安静静的执行任务,等到有错误发生时,再主动通知我们就好?

TeamCity 通知机制

当然可以!TeamCity 内建通知(Notifier)机制,可以将建置的结果通过支援的频道发送通知,目前内建支援以下这些通知机制:

  1. Email Notifier:提供一组 SMTP 主机的帐号密码,TeamCity 就可以透过 Email 发送通知,这是预设的接收频道。
  2. Slack Notifier:提供 Slack 的 Auth Token,TeamCity 就可以将通知推送到指定的 Slack 频道。适合习惯使用 Slack 做通讯工具,也喜欢即时收到推播通知的团队。
  3. IDE Notifier:TeamCity 可以与 IDE 整合,直接将建置结果显示在 IDE 介面里,方便开发者直接在 IDE 里进行调查与除错。这部份我们後续会再详述。
  4. Jabber Notifier:TeamCity 可以透过 Jabber 通讯协定推播通知,不过现在用 Jabber 的服务好像愈来愈少了,比较少看到这样的需求。
  5. Atom/RSS Feed Notifier:直接将 TeamCity 的建置结果汇整成 Atom/RSS。若是团队在办公室有「战情室」的数据电视的话,可以直接将这个 Feed 显示在面板上。

今天我们就针对最常使用的 Email Notifier 做重点介绍,其他 Notifier 的设定方式也大同小异,详细的内容可以参考官方文件。

设定 Email 通知

今天我们就以 Email 通知做范例,带着大家了解一下 TeamCity 里的通知功能。首先需要设定一台 SMTP 主机给 TeamCity 发信使用(On-Premise 版才需要、Cloud 版可跳过这步),请先进入 Administration 页,选择左边的 Email Notifier 进入设定页。

在设定页填入 SMTP host、port、发送 email、帐号、密码等资讯後,可以用 Test connection 功能来测试发信功能。当然,假如想要客制化发送的信件内容也是可以的,细节可以参考 官方文件

设定通知规则

TeamCity 会自动套用预设的通知规则在群组上,当然,管理员可以依照管理需求增加群组订阅规则,而每一个帐号也可以客制化自己的订阅规则,非常弹性。

以群组管理来说,先到 Administration 底下的 Groups 设定,选择 All Users 群组(或是您想更改设定的群组)。

选择左边侧边栏的 Notification Roles 选项,在 Email Notifier 分页里,可以针对你想订阅(Watch)哪些专案(Project)的 Build Configuration 的哪些事件(Event)按下 Edit 连结做设定。

对个人帐号来说,先到 Administration 底下的 Users 设定,进入想要修改的帐号,选择左边侧边栏的 Notification Roles 选项,在 Email Notifier 分页里,可以看到因为群组设定而继承的规则,也可以按下 Add new rule 按钮来新增新的订阅规则。

用 Build Features 触发 Notification

TeamCity 可以依据建置任务的结果触发不同的後续动作,这个功能叫 Build Feature。在 Build Feature 众多的动作里,其中一个就是 Notification。其实机制跟上面的 Notifier 类似,支援 Email 及 Slack 两种通知频道,可以将 Build 结果送到特定 Email 或 Slack 里。

设定方式很简单,首先进到 Shopping Cart 专案底下的 Build Configuration,选择左边侧边栏的 Build Features 设定,按一下右边的 Add build feature 按钮。这时会弹出一个设定视窗,选择 Notifications,Notifier 选 Email Notifier、设定目标 Email 位置、勾选想要订阅的事件後按 Save 就完成了。

小结

经过今天的介绍,我们知道如何客制化 TeamCity 的通知功能,就不用每次都要到 TeamCity 的 Web UI 看结果,而是等接到通知後再去看报表,又省下不少时间。不过,若是团队不想被 Email 轰炸、或是用的不是 Slack 的话,有没有什麽方式可以扩充 TeamCity 呢?我们明天来揭晓!

参考资料


<<:  [Day7] Local File Inclusion / Remote File Inclusion

>>:  Day 07 Section Summary

Day05-入口管制(四)

前言 前面几天谈的都是纯文字的资料验证,像是信箱、电话等等,但很多 API server 除了文字资...

URLSession 介绍 Day 15

今天来介绍使用API会用到NSURLSession 其实NSURLSession 与 URLSess...

p value到底怎麽解释

在面试的时候很常都会从基础的问题开始问起,p值就像是你吃饱了吗一样每次都会出现,今天就来讲解一下这个...

[Day26] Vue3 E2E Testing: Cypress 实战之 Todo MVC (中)

前情提要 昨天,我们为了让大家更加了解 Cypress 的语法以及要如何攥写 E2E 测试,所以开始...

Day 21网路通讯协定

前言 网路通讯协定就是为电脑进行资料交换而建立的规章或标准的集合。常用的有TCP/IP协定、HTTP...