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, 不過還沒有想到哪裡會用到. 暫且先跳過