第二十九天:为 IntelliJ Platform 设计的 TeamCity Plugin

在我们整个系列教学里,所有的操作都是在 TeamCity 的 Web UI 上完成,而 TeamCity 的 Web UI 的确设计的很好用也很漂亮,在上面完成所有操作当然没问题。但对於已经熟悉 IntelliJ IDEA 操作的开发者来说,要在 IDE 与 Web UI 间来回跳跃看 Build Log、调查问题发生的原因还是有些不方便。假如在 IDE 里 Commit & Push 後就可以直接看 Build 结果,是不是会觉得更方便呢?

为 IDE 打造的 TeamCity Plugin

没错!这样的想法 JetBrains 团队也想到了,也为 TeamCity 制作了 Plugin ,可以支援所有 IntelliJ Platform 的 IDE,让开发者可以不用离开熟悉的 IDE 环境,就可以看到 Commit 送上 CI 主机上建置的结果。

安装方式很简单,打开 IDE 看到欢迎页後,点选左边的 Plugins,切换到 Marketplace 页签後,在搜寻框里输入 TeamCity,出现搜寻结果後按 Install 安装,安装完成後重新启动 IDE 即完成。

将 IDE 连线至 TeamCity

为了让 IDE 可以读取 TeamCity 上的资料,请先在 IDE 里打开 ShoppingCart 专案,开启下方的 TeamCity 面板後,点选 Log in... 按钮,并在弹出式视窗里输入 TeamCity 主机的 URL、Username 及 Password,完成後按 OK 连线。

成功连线至 TeamCity 後,在 IDE 里的面板会显示目前正在开发的专案,并将该专案的 Build Configuration 显示出来。若想要客制化调整面板里看到的专案或 Build Configuration 的话,可以按面板左上角 Configure Shown Projects 按钮後,开启浏览器进到 TeamCity Web UI 里设定。

Web UI 会进入到登入帐号的 Notification Rules 设定。TeamCity 预设会先继承 All Users 的设定,我们可以根据自己的需求新增规则(Rule)。点击 Add new rule 按钮新增通知规则。

建立通知规则时,首先选择左边想要显示的专案及其下的 Build Configuration(比方说 Shopping Cart 专案下的 3 个 Build Configuration),接着选择右边设定在什麽事件发生时发送通知(比方说 Build fails、Investigation is updated),完成後按 Save 储存。

再回到 IDE 里应该就会看到 TeamCity 面板跟着对应更新,假如一时没有变化的话,可以按一下上方的重新整理(Refresh)按钮。

执行 Build、看 Build Log 及其他开发资讯

要从 IDE 触发 TeamCity 执行建置任务有两种方式,一种就照平常的方式开发、Commit & Push,当 TeamCity 自动执行时,IDE 里的 TeamCity 面板也会同时显示 TeamCity Server 上的资讯;另一种则是在 TeamCity 面板里选定 Build Configuration 後按左上角第二颗播放按钮,就会从 IDE 触发 TeamCity 执行。

待 TeamCity 执行完毕後,就可以在 IDE 里的面板看到建置结果。从画面上可以看到我们这一次的 Build 并没有成功,TeamCity 面板会将该 Build 标记为红色,直接对这个 Build 点两下,就会开启对应的 Build Log。

TeamCity 面板会连线到 Server 上将 Build Log 下载下来显示在面板里,这样我们就不需要到 TeamCity 的 Web UI 查询了,非常方便。

除了 Build Log 外,我们也可以从 TeamCity Server 下载其他开发资讯到 IDE 里显示。点选功能表里的 TeamCity,在下拉式选单里选 Code Inspection、Code Duplicates、Code Coverage 等,就会在 IDE 里以不同的型式显示这些开发资讯。

远端运行(Remote Run)

有时我们会希望可以把程序码先送到 TeamCity 测试看看能不能 Build 成功,但是又不希望这个「暂时」的程序码被 Commit 到版本管理系统里。这时候,我们可以用 TeamCity Plugin 提供的 Remote Run 功能,让我们把一段变更送上 TeamCity 跑跑看,但又不用 Commit 程序码留下冗余的 Log。

趋动 Remote Run 的方式很简单,先在 IDE 里面修改程序码,改好後开启 Commit 面板,对着 Change list 按右键,选择选单里的 Remote Run in TeamCity。

接着在弹出式视窗里点击 Remote Run in TeamCity... 按钮。

可能还会问你要以哪个 Build Configuration 执行,选好後按 OK 送出。

IDE 就会把这些变更以 Personal Build 的方式送到 TeamCity 排程,假如这个时候到 TeamCity Web UI 看,就会看到 TeamCity 还是以一个新的 Build 来执行建置任务,Build 号码也有增加,但是图示不一样。

建置完成後可以在 TeamCity 观看结果,不过在综览画面会将这种 Personal Build 隐藏起来。再检查一下 Git 的 Commit Log,会发现刚刚好像有 Commit 的动作实际上并没有发生。若 Remote Run 後 Build 是有通过的,这时就可以放心的把变更正式 Commit & Push 啦!

小结

针对 IntelliJ Platform 设计的 TeamCity Plugin,可以免除开发者需要在 IDE 及 TeamCity Web UI 间来回的时间,只需要查看 TeamCity 面板,就可以知道自己的变更是否成功在 CI 主机上通过测试及完成建置。甚至还可以透过 Remote Run,直接使用 TeamCity 主机的环境来测试,减轻开发者维护复杂测试环境的负担,也能减少 Git Log 里可能出现的冗余 Commit,大大提昇团队工作效率。

TeamCity Plugin 免除了开发者对 Web UI 的依赖,但当我们设定 TeamCity Project、Build Configuration 时,还是免不了要到 TeamCity Web UI 上用滑鼠点按来设定。是不是能有什麽方式可以让开发者或 DevOps 可以更快速的设定好 TeamCity 专案呢?明天我们就要来介绍一下针对 TeamCity 自动化设计的 Kotlin DSL!

参考资料


<<:  DAY 19 - 九尾狐妹妹 (3) 完稿

>>:  Day 20:如何撰写测试

Day-20 CheckBox

本期的主角是CheckBox,主要是提供一个或多个选项让使用者进行核选 首先我们可以在Design利...

DAY 19 制作 Nav Bar - dropdown content

针对 dropdown content,再来做一些微调,让他更像 vogue 官方的样式 // _d...

从零开始的8-bit迷宫探险【Level 22】奥义隐身术 & 时间静止术

山姆开始发现这座森林里还有一些奇妙的情况。 偶而时间会变得缓慢,宁静的像是只有自己一个人在行走。 ...

Transactions (3-2) - Weak Isolation Levels - Snapshot Isolation

续 Day 3 Snapshot Isolation 和 Repeatable read 先来看个...

Android Studio 上传GitHub

GitHub 官方说明 we announced our intent to require the...