终章:TeamCity 进阶学习路径

之前有幸在一次机会里,与几位在 DevOps 领域深耕多时的前辈对谈。那时前辈曾提到,在带新人时都会要求他们先「手动」的把整个工作流程的每个环节都做过一次,然後再开始思考要在哪些地方导入自动化、以及选择哪个 DevOps 工具。乍听之下或许有点反直觉,但仔细想想其实很有道理。因为过早导入工具,往往会失去脉络,变成为了用工具而用工具,甚至为了配合工具的功能而修改工作流程。到最後可能没有解决当初的痛点,甚至让後续维护的人更难接手。

因此笔者在设计这 30 天的指南时,有别於只单纯谈 DevOps 观念、或是只介绍特定工具,而是以一个开发情境出发,从 IDE 写程序开始、CI 服务器的架设与操作,到开发生态系的整合,更着重在总体工作流程的脉络,希望能从这「做中学」的过程中,让读者更能亲身体会 DevOps 的实践。

不过,要在 30 天内涵盖 TeamCity 所有功能是不可能的,因此在指南的最後整理一下可以继续深入的主题供各位读者参考:

TeamCity 进阶主题遗珠

目前指南介绍到的 TeamCity 功能大概可以满足工作上 60-70% 的需求,但碍於篇幅,每个专案的需求都不同,有些情境也很难 100% 的模拟与重现,所以没有办法把每个功能都深入的讲一遍。这边列出几个笔者的遗珠,希望未来还有再深入介绍的几个点:

  • 不同的 Build Runner:由於指南里的范例是以 Kotlin 为主的 JVM 生态系为主,几乎所有的建置工作都可以用 Gradle 完成。所以教学里只介绍了 Gradle、SSH Upload、SSH Exec 三种 Build Runner。其实 TeamCity 还有为数众多的 Runner 可以使用,尤其是 Docker 相关的 Runner 更是方便。可以用 TeamCity 来 Build Docker Image 或跑 Docker Compose。甚至其他程序语言生态系的 Runner 也不少,各位读者可以多多尝试。
  • 客制化 Agent:因为指南里的范例需求用预设的 Agent 就能完成,但若是专案有用到特殊的环境或工具的话,就会需要客制化 Agent,这部份有需要的话,也可以参考官方文件来试试看。
  • 其他种类的 Trigger:目前我们只用到 TeamCity 预设的 VCS Trigger,也就是当 VCS 有变更时会自动触发 Build Configuration 运作。但除了 VCS Trigger 外,TeamCity 还支援像 Schedule Trigger、Branch Remote Run Trigger…等为数众多的 Trigger,让我们可以组合出更多种自动化流程。
  • 不同的 Build Feature:TeamCity 还支援各种 Build Feature,让我们可以在 Build 完成後再触发後续的动作,比方说合并 PR、自动送 Commit…等,让自动化的流程可以更完整。
  • 更复杂的 Pipeline 设计:在指南的练习范例里,我们只有做到当 Build 通过後,透过手动趋动的方式,拿前一个 Build 完成的 Artifact 做部署。但 TeamCity 其实可以做出更复杂的 Pipeline,比方说先 Build 完後、再过不同型式的测试(单元、整合)、先部署到测试机、再过更多型式的测试(压力、资安扫描)、最後再停在最後一关等人工手动部署到正式机…等。不过这些更复杂的 Pipeline 设定就留待读者依需求自行探索了。
  • 与 Issue Tracker 结合:以软件开发团队来说,Issue Tracker、VCS、CI/CD 往往是三位一体、深度结合的。因此 TeamCity 除了可以支援多种 VCS 外,也可以与市面上常见的 Issue Tracker 整合,让我们在开发各种 Feature 时,能从 Ticket、Feature Branch、CI Build Log 一起联动追踪。

TeamCity 学习资源

为了让各位能迈出进阶学习的第一步,在这边也统整一下 TeamCity 的学习资源供读者们参考:

  • 产品文件 :其实 TeamCity 的官方文件维护的很完整(毕竟是有 Document Team 在维护),直接翻官方文件就可以回答几乎 90% 的问题。这也是笔者在学习 TeamCity 时第一入口。
  • 官方教学 :假如您比较喜欢主题式的学习,尤其是想要知道 TeamCity 怎麽与您习惯的开发生态系整合的话,那可以从这份官方教学下手,直接挑你想看的程序语言主题,应该就可以快速上手 TeamCity。
  • CI/CD 指南 :假如您对 DevOps 的名词解释、观念释疑有兴趣的话,TeamCity 团队整理的这份 CI/CD 指南很值得一读!再也不需要在茫茫网海搜寻了!
  • 官方播放清单 :这是 TeamCity 团队在 JetBrains TV 官方 YouTube 频道的完整播放清单,里面包括 TeamCity 的介绍到历次的 Webinar 录影,非常丰富。不过因为跨了蛮长的年代,加上 JetBrains 产品更新速度很快,所以我会建议从中挑近 2 年的的影片来看会比较贴近当前的版本。
  • TeamCity Technology Day :TeamCity 团队在 2020 年尾举办了一场线上技术日,在这个 YouTube 播放清单里,有很多不同面向的 TeamCity 主题分享,可以挑自己有兴趣的主题来听。
  • TeamCity Cloud Launch Event :假如您因为这个指南而像笔者一样爱上 TeamCity Cloud 的话,那可以参考一下这个 Launch Event 的录影,可以更清楚 TeamCity Cloud 提供的功能与进阶功能。

踏上无尽之路

随着时间的演进、开发典范的转移,开发工具也会持续跟着潮流进化。每当技术圈提到一个职位的技能树时,就会搬出组织严密的 Roadmap 图。不意外的,DevOps 也有一张 。看完後是不是有一种知识焦虑隐隐发作的感觉呢?

说到底,DevOps 是条无尽之路。身为开发者的我们,唯一能做的事情,就是保持开放的心胸接受新观念、并保持对人与技术的热忱。小步前进、持续修正、做到刚好就好,是笔者撰写这指南时的心得。希望您在看完这份小小的 30 天指南後,能帮助您踏出 DevOps 的第一步!

感谢社群夥伴们的互相推坑与鼓励

在最後要特别感谢跟我一同参赛的 Kotlin 社群夥伴们,有彼此的陪伴让每个熬夜赶文章的夜晚多了更多的乐趣。但对他们非常抱歉的是,今年因为自己想要超越极限所以报了双铁,结果在第 24 天的时候因为我发文失误把两篇文章发到同一个系列,结果导致跟他们一起组团的团体赛断赛失败了…只好用剩下的这个 DevOps 主题跟他们一起跑完个人铁人赛。谢谢他们的谅解与鼓励,您们是最棒的夥伴!

欢迎大家订阅我们团队 Kotlin 爱台湾 2021 的文章,我的队友们几乎把 Kotlin 可以运用的各种面向都展示出来了!若你对 Kotlin 有兴趣、想加入 Kotlin 社群,欢迎到 Kotlin Tips 参加我们的线上读书会及练功场,平常每月也会有 Kotlin Meetup 活动,欢迎大家参加!


<<:  vok-orm 自订sql 查询 / db connection - day21

>>:  下个赌场更诱人

Day18 Elastic APM (二)

接下来我们要开始运用APM Agent的函式库来去做应用程序方面的监控。 APM 安装 kibana...

有限状态过程 Finite State Process

有限状态过程 (FSP, Finite State Process) 是有限状态机的一种表达方式,本...

[Day 30] 最後一天了,来复习看看我们学了些什麽

今天是铁人赛的最後一天了,我们花点时间来看看这三十天我们都介绍了些什麽。 首先,我们介绍了一下 Ko...

Day 30 / 结语

30 天挑战终於完成了,终於恢复自由身了!这 30 篇不只是传递分享知识的过程,更是让自己巩固加深原...

[知识篇]WebRTC - ICE(STUN/TURN)

新手入门,如有错误,欢迎指正~~~ 系列文章同步更新於部落格 在整个 RTCPeerConnecti...