2018/05/20

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


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

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



欄位說明

image
使用哪個 docker image 做為測試,你也可以自己建立 image 丟去 docker hub 使用。我是使用 edbizarro/gitlab-ci-pipeline-php:7.1 因為laravel需要的套件他已經包好了,就不用像 Gitlab 的範例需要先安裝花較長時間 (ref: before_script)

services
需要用的相依服務,同樣也是 docker image name。

variables
自定義變數,會變為執行時的環境變數(ENV),讓之後跑的東西吃的到。
Gitlab 也有預設的變數可以使用(文件),讓設定檔可以套用到不同的專案。

cache
快取,同樣的東西不用每次都從網路抓,也可加速跑的時間。

script
實際要跑的指令行,每行縮排前面加 -

artifacts
執行完成後會把底下設定的 paths 目錄打包傳回 gitlab,比如 log 檔、build 完的 binaries, reports, ...etc 等不希望消失的東西。 (docker 跑完就會自己砍掉,東西不會保留)

官方文件

Stages, Job

除了官方保留的關鍵字外,其餘的名稱都會被視為 job name,
job name 可以搭配 stages 彈性配置。
如果沒有 stages ,預設會找 test job。

stages 可以想像成流程的區塊,有點類似標準作業程序 (SOP)
整個 CI 會根據 stages 順序依序執行對應的 stage (定義在 job 內)

每個 stage 又可以有很多不同的工作,相同的 stage 下的 job 是同時執行的,所以需要避免有相依性的工作在同一個 stage


每個工作也可以定義個別的設定,如先前提到的 image, services, ...etc


執行結果


設定完成後每次 commit 都會自動做測試,可以確保每次的 commit 不會出事。
當然還是要自己寫 Feature/Unit Test才可以確保軟體品質


有設定artifacts就會在job看到可以下載的按鈕

沒有留言:

張貼留言