昨天晚上去參加了PHP也有Day#43的活動
課程活動說明了如何使用gitlab來進行CICD,我這裡大概記錄一下昨天的筆記
實際上我自己也還沒嘗試過,在這裡記錄是為了未來研究的方向。
首先是CICD,CI就是把寫好的Code很自動的放到網路上的repo裡面,也就是git的程式碼儲存庫。
CD就是把這些程式碼拿出來,部屬到你的環境,而這個過程的意思就是你一旦寫好code,接下來把code上到環境的過程包括測試都是自動化的。
包括
Syntax Check
test
Build
Artifacts
Deploy
這些步驟都可以完成。
而Git lab提供這些功能,而且高度整合,使用gitlab-ci.yml檔可以搞定一切。
昨天晚上講者所說到的,以上的流程稱為Pipeline
簡單來說就是在yml檔裡面寫好每一個步驟,而一個步驟都會用一個container來自動操作,每一個步驟都稱為job
也就是說,如果你想製作一個docker的image,那麼就會必須要用一個裡面已經裝好docker 的container 在裡面再製作image
其實也就是在docker 裡面操作docker
每一個job都可以在container裡面寫像shell一樣的指令,讓container自動化去操作。
當然部屬並不是只有製作環境這麼簡單,還得把code放進去、跑測試、甚至有的還得推上K8S等等,不同階段可能必須要用到不同的container操作。當然你也可以放在同一個container裡面一次做完。
所以可以分成好幾個步驟,好幾個job來做,當然不同job之間可以透過一個叫Artifact的機制來傳遞產出物(檔案),不過現場也有學員提到可以使用cache來傳遞。
還有一個小要點,你的每個Job都可以設定depend,規定某個job一定要等待前一個某個job完成後才進行,避免有些job偷吃步。
另外job也可以偵測是否失敗,失敗之後要做什麼,這些都可以設定的。
最後現場有人提問,如果公司導入CICD大概會花多少成本,獎者回答說,這要看經驗,沒經驗的大概要摸索半年以上,有經驗的也許一個禮拜內就能搞定。
昨天的心得大概就到這裡。
感謝大家的收看,如果喜歡的話不要忘記按訂閱(X