[GitLab 系列 緒論] 軟體工程師不得不學會的 GitLab

GitLab 是強大的 DevOps 工具,不僅集合軟體版本控管機制提供軟體工程師做程式碼的版本控管外;
還能提供給專案人才等營運管理團隊做文件的整合、錯誤的回報等工作
Dev 就是指研發人才、Ops指的是營運人才,透過這工具將看似不同的兩個團隊功能整合在一起,互相協作達到彼此不再孤軍奮戰

我的版本控管工具經驗- 從SVN到GitLab之路

作為研發工程師,我想就軟體工程師的角度,聊聊為什麼會從眾多工具中挑選 GitLab。
先從版本控管談起,之前維護過一個印象深刻的專案,整個專案大概有數萬行的程式碼,雖然主要著手在影像分析的核心演算法開發,但這部分最少同時作業的工程師就有三位以上。那時候我們挑選的工具 TortoiseSVN ,這也是我所接觸的第一套版本控管軟體。其實也滿好用,一樣可以開分支,大夥分開作業,就這樣也跑了數個專案用了兩年左右。

新工具出現所帶來的潛在效益

後來 Git 越來越熱門,它解決掉SVN一個麻煩的小問題,那就是支援本地註解提交
印象中之前使用SVN一定要有網路,才能順利Commit上去,但機構內的資安管理比較嚴格,或有時在外出差,其實不太容易隨時隨地透過網際網路存取
還有一個有趣的地方: 那就是我們分頭複製一份專案,一定得先說好各自負責的範疇,才埋頭苦幹,最後還得開一個分支合併整合的會議來解決在合併上的不便

Git 與 GitLab的選擇

自己也在思考還有沒有更好的方案 。

Git就在此時浮上腦海,雖然解決本地存儲的問題,但我想要的遠遠不只有版本控管這項功能。舉個例子來說: 寫程式碼前,我們會思考整體架構,構思相關模組化函式、拉出接口與測試單元等。

過往,我們可能把一個功能加上後,為了避免可能改到先前的功能,一定要做單元測試,但人力有限,有時可能不小心忘了做,打包好的程式出現不再預期內的錯誤或是例外狀況。

這幾年接觸的案子技術範疇更廣,甚至有可能需要在本地完成開發再將整個專案部署到遠端叢集伺服器。技術門檻不高,就是一連串的ssh、程式碼上傳、跑起整個服務等繁瑣重複流程。

上面談到的持續性整合測試與部署,正是 GitLab 在談的 CI/ CD,持續性整合(Continuous Integration)與持續性部署(Continuous Deployment) 。
更理想的是它能架設在自己的伺服器上,無須擔心專案程式碼散播在公有雲所帶來的潛在資安與保密問題

此外,一套系統的開發經過上面一層又一層的規劃,中間產出的文件也不少。GitLab 也能像維基百科一樣,以網頁的形式在上頭編輯、修訂,甚至是多人共同協作與共享,大幅降低管理與維護的成本。

越是一人團隊 你越需要一套可以減輕開發負擔的好用工具

台灣很多企業甚至是研發機構的研發人力有限,工程師往往需要同時負擔多項專案甚至是跨程式語言的開發任務。我們常常抱怨光搞研發時間就不夠,哪還有時間學習這些有得沒有的技術。

但就根據自己一路走來的經驗,哪怕你只是一人團隊,你更需要這項便利的工具。

  • 我們都會透過程式來解決繁瑣的生活問題,那何不如找機器/平台來解決我們有限人手與時間的 Routine works 呢
    想想寫完成程式後,有人自動幫你測試過一輪,沒有大問題甚至還自動幫你部署,你只需要專注在每一次的新功能開發上,多麼美好的世界
  • 再者程式碼專案與文件不再埋在硬碟裡,隨時要用都能透過這個大平台找到過往類似的案子
    GitLab 對於工程師而言,就像作品庫一樣,你可以好好將你的曠世鉅作與研發歷程給保留下來,甚至多好幾個人手與你一同分擔工作任務

發佈留言