上次交到 Runner 與 Executor 運作方式,今天要來講 Gitlab 與 Docker 之間運作,我們來了解一下,Gitlab 是怎麼幫我們這些指令,之後在自動化佈署的章節會使用到,實現更又效率的佈署。
在這裡你會看到特別的名詞,像是 gitlab-runner、docker+machine 還有 docker image ruby:3.1,那有些更特別的名詞會放在下個章節裡面,我們先來看 gitlab-runner 跟所謂的 ruby:3.1 image 這兩個是做什麼用的
gitlab-runner 是 gitlab 用來註冊每個專案的 runner 工具,如果不知道叫 runner 可以回去看先前文章連結,每個專案可能有多個不同的 runner,比如: ssh runner、docker runner、shell runner,這些不同的 runner 我們會在下個章節提到,先講個概念。
我們剛才看到的 docker image ruby 3.1,代表 runner 運作的時候,有如下圖會去 docker hub 這個雲端服務,抓取 ruby 3.1 這個 image,下載下來就可以執行我們 ruby 這個程式語言指令。
那如果我們不想使用 ruby 這個 image,我們想要抓自己要的比如 node.js 這個 image,是否有 CI/CD 命令可以改,當然是有的我們只要在我們腳本寫上 image 這個指令,就會幫我們抓 node.js 這個 image。我們先來查詢 node 版本,我們這邊先用 node:20.9.0-alpine 這個 image。
接下來我們寫好 image 腳本,然後 push 上去察看結果。
image: node:20.9.0-alpine
stages:
- testing
test-build:
stage: testing
before_script:
- node -v
- npm -v
- yarn -v
script:
- echo '測試打包'
only:
- main
- develop
有如下圖可以看到 Gitlab Runner 先幫我們抓 node:20.9.0-alpine 版本,也成功印出 node 版本、npm 版本和 yarn 版本。