CI/CD 入門 - GitLab ====== > ***不知自己不知道, 那你會以為你知道.*** ###### tags: `CI/CD` `軟體` 此篇前言 ------ - 為什麼要導入 CI/CD 呢?(此次主要想學習的) - 單元測試價值的衍生 - 軟體周期迭代的**更快** - 部屬的流程自動化 - 人工作業的時間減少, 有利於空出時間來做其它事情. - 系統管控從**發布程式碼**到**APP上版**, 更有利於追蹤與管理. - 軟體專案每次的調整與部屬, 將有**信心**地應對. - 工具與環境 - GitLab - CI/CD 要點 - 最少須包含: 版控、自動建置與整合測試(unittest、auto testing...)、發行管理 - 依據需求選定工具, 通常是選擇時間成本較低的 - 關於版控可以研究 git flow, 依團隊需求制定策略. 簡單點可以使用兩個分支(現行是 master & developer) - CI 導入初期, 可以關注以下 - success build - pass unit test - manage artifacts - CD - 分成測試環境與正式環境, 兩個環境最好能相仿. 以環境面較為複雜, 須注意任何細節. - 因為環境與 package 的關係, 難以找到自動化部屬相關的套件. 建議使用 container - containers 能夠把 web sites, services, jobs, cli tools 等等形式的 application 都包裝成 container image - 統一用 docker registry 的方式管理 - 微服務可參考: https://columns.chicken-house.net/2017/05/28/aspnet-msa-labs1/ # ch01 DevOps & GitLab 基本認識 - DevOps 起初關注於軟體生命週期中**開發團隊**與**維運團隊**的溝通和協作是否能**降低隔閡** 與 **維運更加敏捷**. - 廣義的 DevOps: - 企業應帶給客戶之價值 - 組織文化的深遠影響 - 企業轉型運動 - 打破企業中的隔閡(Breaking Down Silos) - 狹義的 DevOps: 聚焦於開發到維運(Dev ~ Ops)的流程所遇到的問題 - 實踐 DevOps 時, 請記得 DevOps 之父 Patrick Debois 說的「***DevOps, is a human problem***」 - GitLab CE 和 GitLab EE 選擇: **選擇 EE** - EE 為 CE 的威力加強版 - 免去未來若想要 CE 升為 EE 的流程 - 選擇 GitLab Server 或 gitlab.com - 資安考量 - 自行架設需額外考慮維護 Server 的成本 - 各有優缺點請依據需求與情境去考量 # ch02 使用 GitLab 因考量穩定性問題想自行架設 GitLab Server, 要安裝時發現是用沒接觸過的方式. 經考量先用較快速的方法 - [Linix 作業系統的選擇](https://www.linuxyes.com/blog/linuxyes-2/post/2021-linux-ubuntu-centos-12) - 2021 年的比較差異要點為: - CentOS 未來是要付費的 - ubuntu 可能是未來的趨勢 - 使用 windwos 下的 hyper-V - hyper-V 掛載 ubuntu 後安裝 docker ## GitLab 安裝過程 2.2 - windows 10 開啟 hyper-v service - 下載 ubuntu 20.04 LTS x64 - https://www.ubuntu-tw.org/modules/tinyd0/ - 安裝 .iso 時遇到 "The signed image hash is not allowed": 因安全性問題只能安裝特規授權的映像檔. - 須在設定中找 Security 將 Secure Boot 關閉, 才能進入安裝. - 安裝過程中可以設定 AD, 不過還沒有想到哪裡會用到. 暫且先跳過