第一天:为什麽 CI/CD 对软件开发来说是重要的?

日渐复杂的开发流程

还记得笔者第一个接触的程序语言是 PHP,其直译的设计、简单不复杂的语法,任何人只需要准备一个副档名是 .php 的纯文字档案,写一小段混杂着 HTML 和 PHP 程序码,用 FTP 丢到一台装有 PHP 的主机就可以拥有一个「动态」网站。你说这样写不脏吗?很脏。你说这样写当网站大了以後不会很难维护?不用怀疑,真的超难维护

虽然这样写有很多的问题,但我们不得不承认这样乱糟糟的开发方式对於萌新来说却是

简单!直觉!好上手!

反观现代开发工具链,从环境架设、工具安装、语法特性、架构模式到云端部署,几乎每一个环节都可以写一部 30 天的铁人赛。虽然每一个技术的演进都是为了更长远的开发愿景而设计,但门槛也同时增高,别说对新手不友善,冗长且繁琐的步骤有时连老手都踩坑连连。

难道在严谨的开发流程与流畅的开发体验之间没办法平衡吗?

让 CI/CD 服务器来帮你

当然可以!这时就是使用 CI/CD 服务器的最佳时机!

开发者写程序大多都是为了解决重复执行的动作,而像 CI/CD 这种服务器软件就是为了这样的目的而存在。简单来说,你可以把它想像成机器人,只要你交代它做的事情,它就会按部就班地完成,而且做百遍也不出错、做千遍也不厌倦,是不是很棒?

所以,当发现我们一直在重复地做某些动作,比方说在终端机里打同一个指令、把产生出来的档案上传到服务器上、需要定期监看某些数值或特定报表时,就可以把这些动作抽取出来,交给 CI/CD 服务器来处理。我们只需要在开发流程里设计一个环节触发它运作,然後定期到 CI/CD 服务器上看结果即可。

萌新专属的 TeamCity 上手指南

市面上的 CI/CD 服务器选择也不少,各家云平台也推出不少类似的服务。在本系列文里,将会采用 TeamCity 这个由 JetBrains 推出的老牌 CI/CD 解决方案。TeamCity 拥有良好的 Web UI,在网页版的介面里就可以用滑鼠点选的方式完成所有设定,喜欢用设定档的开发者,也可以用更具语义的 Kotlin DSL 将设定写成 Kotlin Script 来自动完成。TeamCity 也支援完整的工具链,各程序语言生态系的建置工具大多内建,也可以透过 CLI 或 Docker 来执行客制化动作。TeamCity 高弹性的架构,除了支援客制化 Agent 外,也能让大型团队同时运行大量的建置工作。

具体来说,TeamCity 可以帮助我们做哪些事情呢?

  • 在不同的平台及环境平行地建置专案
  • 最佳化程序码整合循环,确保在程序码储存库里不会有引发错误的程序码
  • 聪明地排序测试报表,方便迅速查阅
  • 为专案执行程序码覆盖率及找出重覆的程序码
  • 根据建置时间、成功率及多种程序码品质指标做客制化统计

即便是萌新也别担心!在接下来的 30 天里,笔者将从 DevOps、CI/CD、现代软件开发流程等基本观念讲起,到 TeamCity 的安装与使用,并模拟数个常见的开发情境,详细说明如何让这些现代工具来协助我们更有效率的完成任务,不再被陌生词汇打击,让 TeamCity 变成可以落实到开发工作的助力!

准备好了吗?让我们一起翻开这本 30 天的指南吧!


<<:  Day 6 ( 入门 ) 光影魔术手

>>:  Day 6 图片去背 ( 路径 )

[Day9]参观乙太链与区块链

那我们就实际上网去看一下乙太链跟区块链长怎麽样吧! 参观乙太链 这边分别是最近新增的区块以及最近完...

Day 29 - BFS

大家好,我是长风青云。今天是铁人赛的29天。这是我最後一个要讲的演算法喔。 如果明天的部分不想看不想...

Day 6:监控系统的设计

昨天稍微谈到了一些有关警报的设计,然而,警报的发出与否,应是建立在我们观测到的一些系统的行为,例如说...

前导:乱聊

大家好我是小雨,没想到时隔两年还有机会与铁人们一起磨练~ 刚好最近在「折腾」unRaid,又看到铁人...

第11天~

改标题: 先起个头~继续Intent~官网资料 https://developer.android....