< 需求 >:
GitLab CI/CD
設置 Data Team monorepo 在 GitLab 的 CI/CD ( 包括 Crawler - Zyte Scrapy 的 Deploy 設置)
< 注意 >:
- GitLab 需要設定
runner
( 一般在 local 自己設定也可以啟動,而以目前公司為例,必須進到 AWS EC2 裡設定)。 - 為了設定 Python環境,目前我先使用 "Docker" executor 的 runner,如此可以設定目標版本,
python:3.9.5
,(還有其他種的 executor 像是 "shell" 等等.. GitLab Executors。 runner
設定時候的 tags 在後來.gitlab-ci.yml
裡定義 Jobs 時標註的 tags 雙方要一樣,不然 CI/CD 是不會跑起來的。- 必須讓 docker engine 跑起來,所以也要在 EC2 裡下載 Docker Engine。
- 在 CI/CD 的時後,也需要一些環境變數,可以在 GitLab 的 repo 裡的 Settings > CI/CD > Variables 這邊可以設置。
< 以下稍微紀錄重點 >:
1. GitLab CI/CD 須設置 .gitlab-ci.yml
一些設定
image
: 我 runner 使用的是 docker executor,所以這樣設置
|
|
tags
: 讓 Job 找到 runner 就需要 tags
|
|
stages
: 定義 CI/CD 時候 Pipeline 的每個 Job(也就是在 GitLab 上那一個個的圈圈)
|
|
-
before_script
: 這個可以跑在每個 Job 的script
之前 -
extends
: 可以放在 Jobs 一起定義 tags 和 image
|
|
-
artifacts
: 可以給下一個 Job 使用 -
script
: 就跑 script -
needs
和dependencies
: needs 是不管如何都會執行的 Job, 而 dependencies 則顧名思義,它依賴於那個 Job,接下來它才能夠執行。假設有一個 Job 叫做build
|
|
如果 needs
需要某個 job 的 artifacts 可以這樣設置:
|
|
2. Docker 的 Install
下載步驟(以我公司 CentOS 為例):
官方推薦 Set up docker's repositories 的方式下載
1. 所以在下載之前要先 Set up 好 Repositories
1-1. 下載 yum-utils
|
|
1-2. Set up repo
|
|
2. 設定完畢後就可以下載 Docker Engine
- 選擇1. 直接下載最新版的 Docker Engine
|
|
- 選擇2. 自行選擇版本
|
|
|
|
|
|
<VERSION_STRING> 要找第二欄的 3:20.10.9-3.el7
這邊,但不是全部放,只要冒號後面一直到 hyphen 之前就好,舉例: 我要 3:20.10.9-3.el7
,那就會是
<VERSION_STRING> 要替換成
20.10.9
|
|
3. 啟動 Docker Engine
sudo systemctl start docker
4. 如果要確認 Docker Engine 有沒有 active,可以下
|
|
如果想設置 EC2 runner 啟動的時候 Docker Engine 就啟動,那可以
|
|
3. yml檔的 script 操作:
- 如果 script 是需要互動的輸入 Key 或是 Password 之類的,就可以很簡單的 echo 它:
|
|
- yml 檔裡如果有 script 需要多行:
|
|
- yml 檔裡如果要用 GitLab 的 Environment Variables:
|
|
< The End >:
結束!
Self Checklist:
- How to setting
.gitlab-ci.yml
file. - How to setting
GitLab runner
. - How to write the basic script.
- Basic Docker concept.