在 Windows 使用本機 Gitlab Runner + Shell Executor 跑 Gitlab CI / CD 腳本

以往我在跑 Azure DevOps 跑 CI 腳本的時候,會把 CI 腳本放到 Server 上面執行,每次都需要透過 Azure DevOps 線上觸發/運行過一遍才能知道  CI 腳本是否有問題 ;gitlab runner 提供了一種機制,讓我們先在本地端執行,確定腳本沒有錯誤再放到 gitlab Server 上面執行,大幅降低 CI 腳本的除錯成本。

開發環境

Windows 10 Pro

 

安裝 Gitlab Runner

從官方網站下載 for 64-bit or 32-bit 

原始檔名為: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

Keyword reference for the .gitlab-ci.yml file | GitLab

Pipeline architecture | GitLab

 

gitlab-runner exec shell job1

執行結果,如下圖:

 

在本地端確定 .gitlab-ci.yml  腳本沒有問題之後,就可以把它放到 Gitlab Server,.gitlab-ci.yml 會對應到 gitlab 的 CI/CD

參考:gitlab-runner exec

 

連接 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 已經建立,但是還沒有啟動
 


參考:gitlab-runner register

 

Run

gitlab-runner run


 執行結果,如下圖:

 


這次可以發現 runner 起經啟動了,如下圖:


參考:gitlab-runner run
 

Service

服務管理

上面的方法是手動安裝,需要跑 CI/CD 的時候再執行它,我們也可以選擇把它變成一個服務,這需要管理員權限

參考:Service-related commands

更多的 Commands:GitLab Runner commands | GitLab 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo