看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1569953630.A.C7F.html
et84121: 推 10/02 02:57
jhengsiaomin: 推 10/02 08:46
jammy50605: 推 10/02 09:26
leveger0903: 推 10/02 10:23
ahan6047: 推 10/02 10:54
dreamnook: 10/02 12:33
voickylin: 推 10/02 18:44
ms0683436: 總結的地方週期愈低重複了兩次 10/03 09:41
※ 編輯: kkc0828 (61.230.5.140 臺灣), 10/04/2019 00:36:46