2018/05/20

建置 Gitlab Ci/CD :: CD - 使用 Deployer

Deployer 是一套用途很廣泛的PHP部屬工具,
也有另一套 Laravel 的部屬工具 Ennoy
考量可能有其他的專案可能也需要部屬,我選擇 Deployer 來部屬。

建置 Gitlab Ci/CD :: CD - 準備 QA/Production Server

建立好CI之後,可以接著建置CD。

CD會使用 QA/Prod. Server上的一個使用者 (通常叫他 deployer)
透過 SSH Key 的驗證,直接操作遠端主機進行軟體的部屬。

所以 Server 需要安裝 SSH Server, 跟可以被外接連接的網路。
(可以想作 Gitlab會 SSH 到 Server)

建置 Gitlab Ci/CD :: gitlab-ci.yml


分享我使用的設定檔跟說明,避免我自己忘記XD
https://github.com/Aspertw/laravel_cicd_deployer/blob/stage-test/.gitlab-ci.yml

Gitlab 官方已經為多種環境寫了範例的設定檔,
從範例開始會比較簡單,你可以在這邊找到,包含Laravel

建置 Gitlab Ci/CD :: CI

寫在前面

Gitlab的CI非常簡單,只要在專案建立 .gitlab-ci.yml 設定檔
每次 commit 就會照著設定跑一次。

不過事情還是沒有這麼簡單,
因為Gitlab還需要一個角色來執行這件事情 - gitlab-runner

所以麻煩的點會是在 runner 執行的部分,
runner 又有不同的執行方式 (executor),
官方說明文件有一大塊是在說明 runner 的設定,就知道他有多複雜了。

我是使用 docker 來執行,這樣每次的測試環境都是乾淨的。


建置 Gitlab Ci/CD :: 安裝 Gitlab

自從上一份工作用過CI/CD回不去了,
所以這次要來自己架一套Gitlab做CI/CD。

名詞解釋


  • Gitlab: 一套類似Github的軟體,可以在自己的設備建置如Github的私有服務。
  • CI: Continuous Integration 持續整合,持續的驗證軟體是否正確及產生分析報告等。
  • CD: Continuous Delivery 持續部屬,將驗證完成的軟體自動化發佈到正式伺服器。
  • Deployer: 一套PHP的部屬工具,方便做部屬時要做的指令與環境等。https://deployer.org/
  • Laravel: PHP Framework 也是一套用過就回不去的開發工具。https://laravel.com/