從零開始建置 CI/CD 會有很多挑戰,不同的團隊和產品會選擇的 CI/CD 工具有所不同。在開始設計流程之前,不妨思考自己的團隊以下幾點可以納入流程去思考:
開發團隊本身就使用 gitlab 或 github,本身平台就提供不錯的 CI/CD 工具可以做自動化使用。因為平台本身夠大,且不斷新增新功能。更能與團隊目前的開發流程做結合的話,其實不需要再考慮其他的 CI/CD 工具了。反過來說,如果是 Windows、AWS 或是 Bitbucket,也有對應的 CI/CD 工具,不一定每一個專案一定要使用 Jenkins 去做建置流程
都 2022 年了,還要講什麼建置在實機是不是跟不上時代了?有些程式碼,或是有些要使用的服務是必需要放在公司內網當中執行,無法上架至雲端。在這種情況之下,也只能選擇實機。而這台機器就要確保連線的穩定度,以及在實機連線上是否也容易操作。在雲端或是外網可執行,當然也是非常方便,但是在權限控管,或是操作方式需制定遊戲規則,也避免有心人士,或是團隊成員不小心操作失誤而帶給團隊損失。
最後來聊聊人,不管機器還是工具,都是選擇當下的最佳合適解法。在開發團隊當中每個人職責本來就不同,有些產品是有自己的 CI/CD 部門,像是 SRE 專責處理,或是有管理佈署的單位等等。也許提出需求,與 SRE 團隊合作也許就不需由開發工程師來執行。
不過大多數的團隊都是開發工程師自己處理 CI/CD,自己建立環境然後將機制做起來。所以當開發團隊需要一個工程師來處理的時候,可能會與原本在執行的任務會有所衝突。因此適時地與開發團隊討論 CI/CD 所帶來的效益也非常重要,同樣尋求主管和開發團隊成員的支持。當產生了效益,長遠看來對產品開發上都是非常好的投資。
列出這些思考的面向,也是希望大家在公司要導入的時候,如何去降低導入的不確定性跟風險。以這些角度切入去做討論,讓大家了解自動化建置帶來的好處。如果努力之下還是與預期有落差也不需要氣餒,也許只是時機未到,放在心中當成一個目標持續往前邁進。