上次我們教到 GitLab CI/CD 的 artifacts,今天我們要來講一個叫做 Group Runner,什麼是 Group Runner 我們今天待會會講道。
我們可以看到官網文件,Gitlab 提供了三種 Runner 類型,第一種叫 Shared runners,第二種叫 Group runners,第三種叫 Project runners
Shared runners: 也就是我們之前看到 Gitlab 提供的那些 Runner
Project runners: 也就是這個 Runner 設定只能在某一個專案跑
Group runners: 也就是說我會開一個群組,如果有些專案是在這群組的,可以共用這些群組上的 Runner
接下來我們來創建一個群組,將我們的專案加入進群組,並且創建一個 Group runner,讓我們的專案可以使用群組上的 Runner,首先先點回去到 Gitlab 首頁->點擊 Groups->然後再點擊 New group
接下來在點擊 Create group 進去
接下來取名好群組名稱後,按下 Create group 按鈕,就可以成功建立群組
接下來我們進到 develop 這個目錄裡面有個 Build->Runner 的最右手邊這裡就有我們的註冊 Group runner 之 token
接下來我們來建立 Group Runner,建立方法和之前建立 Project runners 很像再次教大家使用 gitlab-runner,首先先輸入以下指令
gitlab-runner register
在來這裡輸入我們要註冊的 Gitlab 網址
Runtime platform arch=amd64 os=linux pid=96 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
接下來我們輸入要註冊的 Group Runner Token
Enter the registration token:
GR1348941o_zySTzw_HbSJnnyzgiN
接下來我們給這個 Group Runner 一個描述說明我們在做甚麼
Enter a description for the runner:
[4cb49c53cf78]: Group Docker Runner
接下來我們給這個 Group Runner 給一個 tag
Enter tags for the runner (comma-separated):
docker
接下來我們看到這個訊息可以跳過,不太重要
Enter optional maintenance note for the runner:
接下來這一個是我們目標要建立什麼樣子的 Group Runner,在這裡我們先輸入 Docker,我們要建立 Docker Group Runner
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=GR1348941o_zySTzw
Enter an executor: custom, docker, parallels, virtualbox, docker-autoscaler, instance, kubernetes, docker-windows, shell, ssh, docker+machine:
docker
最後這裡是說我們這個 Runner 啟動時,我們預設先 Pull 哪個 image,在這裡我們先寫上 alpine
Enter the default Docker image (for example, ruby:2.7):
alpine
接下來我們要將我們上次的 .Net Core Web Api 專案,搬進 develop 這個群組
拖到底下會看到一個叫 Transfer project 的東西,我們把專案搬移到 develop 群組
接下來我們來使用這個 group runner 去實際應用,我們先來用上次的 .Net Core Web Api 專案,去寫一個 CI/CD 腳本,上傳上去看看結果
image: mcr.microsoft.com/dotnet/sdk:6.0
stages:
- testing
unit-tests:
stage: testing
tags:
- groupdocker
script:
- dotnet test DotNetCoreWebApiCiAndCdCourse.Tests > DotNetCoreWebApiCiAndCdCourse.Tests.txt
artifacts:
paths:
- DotNetCoreWebApiCiAndCdCourse.Tests.txt
expire_in: "30 days"
only:
- main
- develop
可以看到我們成功將這個 group runner 啟動應用,也成功將自動化測試做好