作者kkc0828 (慢跑後卫)
看板Soft_Job
标题Re: [请益] 一些有关build(jenkins, CI/CD)的问题
时间Wed Oct 2 02:13:48 2019
※ 引述《naticom (踢踢~)》之铭言:
: 最近接触的工作需要架设build环境
: 但我刚出社会的时候没有Jenkins也没有GIT这些先进的环境
: (当初公司用 linux cron job 写 script 每天晚上build一次,当然也没有CI/CD..)
: 说实在现在学习起来有点门槛
其实Jenkins 不是什麽伟大的东西,一开始发明的目的也就是为了自动化建置,
然後後来针对很多复杂的情境新增了功能优化而已。
CI/CD 这种概念也不是多新的东西,我看过2000年初的专案就有类似的概念,只是
没有这麽多方便的工具,所以很多东西都是需要手工做出来。然後这种概念越来越被
重视,後来的人们为了方便讨论所以发明CI/CD 这个词汇来指称。
: 有些比较细节的问题想要请问专业的大大们
: (我是使用C/C++/JAVA需要编译的语言)
: 1. Jenkins nightly build flow 通常是每晚把整个目录清空
: 然後把Master branch拉下来整个重编吗?
Nightly Build 等同 Daily Build ,是指 每天进行的工作。
这是一种周期性的工作,类似的还有Weekly Build/Monthly Build
至於要针对哪个 Branch 多半没有特定,有可能是 master,也有可能是active sprint
branch。
: 2. CI的部分你们通常是有checkin就跑, 还是固定时间才拉下来一次呢?
: 跑CI的目录会每次都全部清空重跑吗?
: 还是只checkout变更的部分然後做incremental build?
这个是依照时间取舍的结果。如果一个Build job 能够在几分钟内结束,当然用
per-commit clean build。但是如果时间太久,取舍一下变成 per-commit incr build
甚至是 Hourly build/ Daily Build。
决定采用哪种方案通常是 资源 跟 流程之间的取舍。
资源包含时间跟空间,依照产品的不同,一个小app跟android product binary,所
耗用的资源天差地远。考量的点也不会相同。
流程也有许多差异,有的需要经过Code-Review 与CI/CD 才能 merge 回 remote branch
,有的很松散每个人都可以 push。这也影响到是否要做per-commit build。
: 3. 如果CI每次都会清空重跑,是不是和nightly的差别只在拉下来的branch来源不一样呢?
: 谢谢
总结以上,我认为 CI 与 Nightly 本质上并没有太大的差异。只是为了顾及到完整性
与效率,会把 Build Job 分成很多等级。周期越长的完整性越高,周期越短的完整性越
少。如果你的完整build task 可以在很短时间内完成,那根本不需要分等级,全部用
最高等级跑就好。
往往都是考虑到资源之後,才会需要区分等级。而且每个专案的分法都不同,不能一概
而论。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.48.120 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1569953630.A.C7F.html
1F:推 et84121: 推 10/02 02:57
2F:推 jhengsiaomin: 推 10/02 08:46
3F:推 jammy50605: 推 10/02 09:26
4F:推 leveger0903: 推 10/02 10:23
5F:推 ahan6047: 推 10/02 10:54
6F:推 dreamnook: 10/02 12:33
7F:推 voickylin: 推 10/02 18:44
8F:推 ms0683436: 总结的地方周期愈低重复了两次 10/03 09:41
※ 编辑: kkc0828 (61.230.5.140 台湾), 10/04/2019 00:36:46