Re: [請益] 一些有關build(jenkins, CI/CD)的問題

看板Soft_Job作者 (慢跑後衛)時間4年前 (2019/10/02 02:13), 4年前編輯推噓8(800)
留言8則, 8人參與, 4年前最新討論串2/2 (看更多)
※ 引述《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

10/02 02:57, 4年前 , 1F
10/02 02:57, 1F

10/02 08:46, 4年前 , 2F
10/02 08:46, 2F

10/02 09:26, 4年前 , 3F
10/02 09:26, 3F

10/02 10:23, 4年前 , 4F
10/02 10:23, 4F

10/02 10:54, 4年前 , 5F
10/02 10:54, 5F

10/02 12:33, 4年前 , 6F
10/02 12:33, 6F

10/02 18:44, 4年前 , 7F
10/02 18:44, 7F

10/03 09:41, 4年前 , 8F
總結的地方週期愈低重複了兩次
10/03 09:41, 8F
※ 編輯: kkc0828 (61.230.5.140 臺灣), 10/04/2019 00:36:46
文章代碼(AID): #1TavTUn_ (Soft_Job)
文章代碼(AID): #1TavTUn_ (Soft_Job)