Re: [请益] 一些有关build(jenkins, CI/CD)的问题

楼主: kkc0828 (慢跑后卫)   2019-10-02 02:13:48
※ 引述《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 可以在很短时间内完成,那根本不需要分等级,全部用
最高等级跑就好。
往往都是考虑到资源之后,才会需要区分等级。而且每个专案的分法都不同,不能一概
而论。
作者: et84121 (焦糖玛琦屎)   2019-10-02 02:57:00
作者: jhengsiaomin (siaomin)   2019-10-02 08:46:00
作者: jammy50605 (小刀)   2019-10-02 09:26:00
作者: leveger0903 (脆笛酥)   2019-10-02 10:23:00
作者: ahan6047 (vis)   2019-10-02 10:54:00
作者: voickylin (红小茶)   2019-10-02 18:44:00
作者: ms0683436 (乂随风飘)   2019-10-03 09:41:00
总结的地方周期愈低重复了两次

Links booklink

Contact Us: admin [ a t ] ucptt.com