在前兩章介紹 初探Gitlab部署 yml 設定 與 Docker化 docker-compose 後 這個章節要介紹的時如何透過
gitlab runner 與 gitlab Registry讓 他可以 ci/cd 部署到 自己的主機
介紹
gitlab runner
可以跑在任何機器上面幫你完成 .gitlab-ci.yml 上面交代的事情 例如運行test
image: node:8.9.1
cache:
paths:
- node_modules/
- client/node_modules/
- server/node_modules/
services:
- mongo
variables:
NODE_ENV: test
PORT: 3000
stages:
- test
- build
- deploy
test:
stage: test
before_script:
- apt-get update
- npm install
- npm run install-dev
script:
- npm run ci &
- sleep 30
- npm run test
之後再跑部署
deployJob:
allow_failure: true
stage: deploy
script:
- id
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker-compose down
- docker rmi registry.gitlab.com/xxx/erp-system/server
- docker rmi registry.gitlab.com/xxx/erp-system/client
- docker pull registry.gitlab.com/xxx/erp-system/server
- docker pull registry.gitlab.com/xxx/erp-system/client
- rm -rf ./data/db
- docker-compose build
- docker-compose up -d
only:
- master
tags:
- server
gitlab runner 是我們在安裝的時候會指定他的標籤是什麼 對應上面yml檔中的 tags ,tags是設定的主機名稱則就會在該主機運行 , only master 則是指定的 git branch 支線 CI/CD只有在master的時候再動作
gitlab runner 安裝 官方都有詳細的步驟
https://docs.gitlab.com/runner/install/
上面的部署的部分有用到
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
這些變數是官方指定的 可以參考gitlab Registry
Registry 可以讓你有build的時候每一個專案都有自己的docker空間可以推上去 但是在CI/CD中要先登入自己的gitlab帳號密碼 這邊使用 gitlab提供的變數 就可以了
https://gitlab.com/polo13999/erp-system/container_registry
之後的docker script就看專案的需求去制定,這邊是先把遠端的主機docker-compose down 先停用
在刪除之前的docker images後在下載新的 下載的路徑 Registry 中有提供路徑
總結
gitlab 提供了一個完善的免費CI/CD部署環境 透過docker 讓遠端環境不需要在校調可以說這樣的部署是很方便的一開始不太知道這幾個關係的對應,模索了一陣子現在都用這樣的方式在部署,小專案很方便跟大家分享一下 謝謝