上次我們已經架好 Gitlab 與 Gitlab-Runner 主機,今天我們要教大家如何使用 Gitlab-Runner 註冊一個 Runner,並使用 tags 這個 script,使用我們的 runner 運作
我們先將之前的 CI_CD_DEMO 專案 push 到我們自己架設的 Gitlab 主機
我們先去查看我們要註冊的這個 CI/CD token 是什麼,待會註冊 Runner 會用到
首先查看我們 gitlab-runner container id
docker container ls
會得到以下有在運行的 container
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3119f6d0c660 gitlab/gitlab-ce:latest "/assets/wrapper" 8 days ago Up 6 minutes (healthy) 0.0.0.0:22->22/tcp, :::22->22/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp gitlab-ce
4cb49c53cf78 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 8 days ago Up 6 minutes gitlab_runner
再來進到先進到 gitlab-runner container 的 bash 裡面
docker exec -it 4cb49c53cf78 bash
我們先註冊一個 Runner,是 Docker Executor,指令如下,輸入後會有一些資訊要我們設定
gitlab-runner register
在這裡輸入我們的註冊 domain,就是我們自架的那台 gitlab 主機網址
Runtime platform arch=amd64 os=linux pid=24 revision=853330f9 version=16.5.0
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.18.35
下一個是詢問你這個專案,要註冊的 Token 是什麼,就輸入我們剛剛設定->CI/CD->Runner 裡的 Token。
Enter the registration token:
GR1348941SzmW4wsKQyCzKanS1zKw
在下一個是你註冊的這個 Runner 給個描述,看各位怎麼描述,這邊要註冊 docker executor,就有如以下描述
Enter a description for the runner:
[4cb49c53cf78]: CI_CD_DEMO docker runner
在下一個是輸入給個 runner 標籤,待會我們會用到這個標籤名子
Enter tags for the runner (comma-separated):
docker
在下一個其實可以不需要理他,不太重要
Enter optional maintenance note for the runner:
在下一個是問你要用哪一個 Executor,這裡打上 docker
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow
Registering runner... succeeded runner=GR1348941SzmW4wsK
Enter an executor: docker-windows, parallels, shell, docker-autoscaler, custom, docker, docker+machine, instance, kubernetes, ssh, virtualbox:
docker
最後一個是問,當你這個 Runner 啟用的時候,預設先抓哪一個 image,這裡我們輸入 node:20.9.0-alpine
Enter the default Docker image (for example, ruby:2.7):
node:20.9.0-alpine
再來註冊一個 Runner,是 Shell Executor,指令如下,輸入後會有一些資訊要我們設定
gitlab-runner register
下一個是詢問你這個專案,要註冊的 Token 是什麼,跟剛剛一樣輸入我們 CI/CD 專案 Token
Enter the registration token:
GR1348941SzmW4wsKQyCzKanS1zKw
在下一個是你註冊的這個 Runner 給個描述,看各位怎麼描述,這邊要註冊 shell executor,就有如以下描述
Enter a description for the runner:
[4cb49c53cf78]: CI_CD_DEMO shell runner
在下一個是輸入給個 runner 標籤,待會我們會用到這個標籤名子
Enter tags for the runner (comma-separated):
shell
在下一個其實可以不需要理他,不太重要
Enter optional maintenance note for the runner:
在下一個是問你要用哪一個 Executor,這裡打上 shell
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow
Registering runner... succeeded runner=GR1348941SzmW4wsK
Enter an executor: ssh, virtualbox, docker+machine, kubernetes, custom, docker-windows, shell, docker-autoscaler, instance, docker, parallels:
shell
經過一番設定後,你會看到有兩個 runner
tags 作用就是將我們的工作分派給不同的 Runner 以及 Executor 分派工作,達到分散處理。
在我們工作定義寫上 tags,然後定義我們剛剛設定好的 Runner 之 tags 名稱
test-build:
stage: testing
tags:
- shell
before_script:
- ls -al
script:
- echo '測試打包'
only:
- main
- develop
接下來我們玩玩看這些 Runner 運作,有如以下腳本
stages:
- testing
test-build:
stage: testing
tags:
- shell
script:
- docker ps -a
only:
- main
- develop
run-unit-test:
stage: testing
tags:
- docker
image: node:20.9.0-alpine
script:
- node -v
- npm -v
- yarn -v
only:
- main
- develop
來看一下 test-build 運作
在看一下 run-unit-test 運作