以往我在跑 Azure DevOps 跑 CI 腳本的時候,會把 CI 腳本放到 Server 上面執行,每次都需要透過 Azure DevOps 線上觸發/運行過一遍才能知道 CI 腳本是否有問題 ;gitlab runner 提供了一種機制,讓我們先在本地端執行,確定腳本沒有錯誤再放到 gitlab Server 上面執行,大幅降低 CI 腳本的除錯成本。
開發環境
Windows 10 Pro
安裝 Gitlab Runner
原始檔名為:gitlab-runner-windows-amd64.exe
將它更改為:gitlab-runner.exe
或者是通過以下方式安裝
Choco
choco install gitlab-runner
安裝參考 WIndows 套件管理工具 - Chocolatey 配置與安裝 | 余小章 @ 大內殿堂 - 點部落 (dotblogs.com.tw)
Scoop
這是我個人目前偏好的方式,因為它可以使用 Users 角色安裝應用程式,還可以很輕易的切換版本
Scoop install gitlab-runner
安裝參考 WIndows 套件管理工具 - Scoop 配置與安裝 | 余小章 @ 大內殿堂 - 點部落 (dotblogs.com.tw)
安裝結果如下圖:
執行 gitlab-runner --version 查看一下版本
在本地端執行 CI 腳本
如果只是想要在本機執行建置,可以不需要連接到 gitlab server,而是讀取本地端的 .gitlab-ci.yml 內容如下:
stages:
- build
- test
job1:
stage: build
script:
- echo "This job runs in the build stage."
last-job:
stage: .post
script:
- echo "This job runs in the .post stage, after all other stages."
job2:
stage: test
script:
- echo "This job runs in the test stage."
有關 .gitlab-ci.yml 可以參考
The `.gitlab-ci.yml` file | GitLab
gitlab-runner exec shell job1
執行結果,如下圖:
在本地端確定 .gitlab-ci.yml 腳本沒有問題之後,就可以把它放到 Gitlab Server,.gitlab-ci.yml 會對應到 gitlab 的 CI/CD
連接 Gitlab Server
根據不同的權限,有三種 Gitlab Runner
- Shared runners:可用於 GitLab 實例中的所有組和項目。
- Group runners:可用於小組中的所有項目和子小組。
- Specific runners:與特定的項目相關聯。通常,特定的運行器一次用於一個項目。當你沒有管理 runner 的權限時,可以用這個來建立屬於自己的 gitlab runner
Register
先到 Gitlab Server 取得和 Token
gitlab-runner register
依照 UI 互動,填寫資訊,紅框處就是需要填寫的內容,如下圖:
在 %userprofile% 目錄底下長出了一個 config.toml,有關 config 可以參考 Configuring GitLab Runner | GitLab
在 gitlab server 上可以看到 Specific Runners 已經建立,但是還沒有啟動
Run
gitlab-runner run
執行結果,如下圖:
這次可以發現 runner 起經啟動了,如下圖:
Service
服務管理
上面的方法是手動安裝,需要跑 CI/CD 的時候再執行它,我們也可以選擇把它變成一個服務,這需要管理員權限
更多的 Commands:GitLab Runner commands | GitLab
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET