Day 16:CI / CD

前言


DevOps 是一种理念,目的是让开发到发布的速度、稳定性都能提升。
而 CI/CD 是实践 DevOps 的其中一种实践方式,CI/CD 分成 持续整合持续交付持续部署

遇到了什麽问题


如果我们的产品已经步上正轨,我们会遇到很多重复的事情:

  • 平常开发到某个时间点早就已经改坏了,但因为没有一直跑测试,所以不知道。
  • 手动执行所有单元测试、 UI 测试,可能要等个半天。
  • 结果上面那步凌晨跑完了,早上发现测试失败,可是今天要请假,别人难帮忙。
  • 要自己编译 aab / apk 并传给要出版上架的人。
  • 上架後要归档,以後才找得到。
  • keystore 不是大家都有,每次都是同一个人编出 sign 过的 apk 也太可怜。
  • 需要紧急出版,我的电脑根本没那麽快能走完测试并编译许多版本出来。
  • 出版前要走过很多检查流程,但每次做还是很累。
  • 啊,出版前一刻发现忘记改版号、改文案,全部再来一次。
  • 最近公司 API 不稳定,但又不可能一直重新整理。

这样的话,我们出版可能就要花个一两天,如果我们一两周出一次版,那是很高的时间占比,所以就需要 CI/CD 了。

CI 可以做到什麽


先用白话文说,CI 就是一个机器人,跟它说什麽情况下帮忙做什麽事,它还会在事情完成後通知我们。

CI 可以在自己的电脑、自家的 server、云端服务上架设(不同 CI 能支援),也有线上的服务,而他就是台电脑,所以可以写任何程序在里面呼叫执行,只是透过该 CI 软件的 GUI 或语言来设定。

我们可以选择很多种触发方式,例如:

  • git repo 中的某 branch 有 commit push 上来的时候。
  • 定时、周期触发。
  • API 呼叫。
  • 某专案编译完。
  • 手动。
  • 还有很多,各家 CI 支援不同。

举例一般的情境:
我们让 CI 侦测某 branch 被 push 後,执行测试,待测试完毕且通过後,编译出我们要的档案,并且不论成功或失败,都发消息至通讯软件中提示开发人员。

CI 软件


有很多,只列出一部分:
GitHub Actions
GitLab CI/CD
Jenkins
CircleCI

另外,CI 可能有 plugin 可以帮我们省下不少时间,像是 GitHub Actions 的部分就有上万种插件,Jenkins 的部分也有很多,还可以绘制图表。


<<:  [DAY 16] AutoEncoder-Decoder 结构简介

>>:  Day16:SwiftUI—GeometryReader

Day 14 - Object and Arrays - Reference VS Copy

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

安装 Zorin OS 16 Core 与呒虾米

本文同步刊载於我的部落格:安装 Zorin OS 16 Core 与呒虾米 – jute 前言 Zo...

Day18 参加职训(机器学习与资料分析工程师培训班),Django

今日一样教学Django class registration_info(models.Model)...

Day14 NodeJS-NPM I

终於进入NodeJS中最为人知的套件管理系统NPM了,不讳言的当初对NodeJS一知半解的我对於No...

DAY28 - 来试试看 line notify吧

在前一篇把 line message api 缺点和难用的地方写出来後,其实也在找其他的替代品,有...