上傳到 GitLab 的程式有辦法自行進行測試嗎? 可以透過 CI/CD 的功能.
測試環境
- GitLab – Ubuntu 22.04 Desktop ( 虛擬機 IP:192.168.31.167 )
- Windows shell ( PowerShell ) – Windows 10 ( 虛擬機 IP:192.168.31.136 )
安裝 GitLab ( 虛擬機 Ubuntu 22.04 Desktop )
關於 GitLab 的安裝請參考 – https://benjr.tw/105652 , 並建立新使用者 ben .
安裝 GitLab CI Runner ( 虛擬機 Windows 10 )
首先須建立 Runner (也就是上傳後的程式可以在哪邊環境來進行測試)
- 安裝 GitLab CI Runner 套件
使用 administrator 開啟 PowerShell 並執行以下指令.建立 C:\GitLab-Runner 目錄.
PS C:\> New-Item -Path 'C:\GitLab-Runner' -ItemType Directory 目錄: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/12/5 下午 05:01 GitLab-Runner
切換到 C:\GitLab-Runner 目錄.
PS C:\> cd 'C:\GitLab-Runner'
下載 GitLab CI Runner 檔案
PS C:\GitLab-Runner> Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe" -OutFile "gitlab-runner.exe"
安裝並執行.
PS C:\GitLab-Runner> .\gitlab-runner.exe install Runtime platform arch=amd64 os=windows pid=1848 revision=f5da3c5a version=16.6.1
PS C:\GitLab-Runner> .\gitlab-runner.exe start Runtime platform arch=amd64 os=windows pid=2040 revision=f5da3c5a version=16.6.1
- 註冊 runner
要註冊一個新的 Runner ,須回到 Gitlab 網頁的管理介面 Admin Area / CI/CD / Runners (使用 root Administrator 身分) ,這邊主要是可以產生註冊 (Register) runner 語法
我這邊要產生的 Runner (程式測試環境) 使用 另外一台 Windows (Win10) 其 Executor 為 Shell (Powershell) .
點選 New Instance Runner 產生 Runner 的語法.
- 首先需要選擇測試環境為何, OS 選擇 Windows
- 接下來是 Tags
之後 .gitlab-ci.yml 設定檔要對應到相對應的 Tags 來決定 Runner / Executor 是哪一個.
- 執行 Register Runner 的語法
剛剛選擇完畢就會出現下面的語法(產生新的 Runner)
主要是 Step 1 即可.
PS C:\GitLab-Runner> .\gitlab-runner.exe register --url http://192.168.31.167 --token glrt-XhxhUwtwA6NdaQsBRdY2 Runtime platform arch=amd64 os=windows pid=3476 revision=f5da3c5a version=16.6.1 Enter the GitLab instance URL (for example, https://gitlab.com/): [http://192.168.31.167]: Verifying runner... is valid runner=XhxhUwtwA Enter a name for the runner. This is stored only in the local config.toml file: [DESKTOP-THOBKJO]: VM win10 Enter an executor: ssh, instance, custom, docker, parallels, docker-autoscaler, docker+machine, kubernetes, docker-windows, shell, virtualbox: shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! Configuration (with the authentication token) was saved in "C:\\GitLab-Runner\\config.toml"
- 設定皆使用預設值即可.
- 關於 executor 有很多種類,我選擇的是 shell ( 指定 Runner 直接在 Windows 本身環境去執行 CI Job, 須確保環境要包含 如 git , python 等相關套件) , 其他 executor 請參考 – https://chengweichen.com/2021/03/gitlab-ci-executor.html#%E7%9B%AE%E5%89%8D%E5%8F%AF%E9%81%B8%E7%94%A8%E7%9A%84-executor 說明.
Step 3 可以檢視 Runner 是否正常.
PS C:\GitLab-Runner> .\gitlab-runner.exe run Runtime platform arch=amd64 os=windows pid=756 revision=f5da3c5a version=16.6.1 Starting multi-runner from C:\GitLab-Runner\config.toml... builds=0 max_builds=0 Configuration loaded builds=0 max_builds=1 listen_address not defined, metrics & debug endpoints disabled builds=0 max_builds=1 [session_server].listen_address not defined, session endpoints disabled builds=0 max_builds=1 Initializing executor providers builds=0 max_builds=1
剛剛設定內容皆會寫到 C:\GitLab-Runner\config.toml 檔案去.
預設 shell 會使用 “pwsh” ( 這是 PowerShell Core 所使用的) , 需修改成 shell = “powershell” 如下.
concurrent = 1 check_interval = 0 shutdown_timeout = 0 [session_server] session_timeout = 1800 [[runners]] name = "VM win10" url = "http://192.168.31.167" id = 4 token = "glrt-XhxhUwtwA6NdaQsBRdY2" token_obtained_at = 2023-12-05T09:19:21Z token_expires_at = 0001-01-01T00:00:00Z executor = "shell" shell = "powershell" [runners.cache] MaxUploadedArchiveSize = 0
這樣 Runner 就產生好了,其 Tags 為 VM-Win10
環境設定( 虛擬機 Windows 10 )
Windows Runner 會需要用到 git ,我的程式使用 python (執行程式碼環境),皆須安裝,完畢後建議重開機.
- 下載 git 套件
Windows 所需 git 套件可以在 https://git-scm.com/downloads 找到. - python
常遇到路徑問題,請參考 Windows 安裝 Python – https://benjr.tw/106175
Gitlab 程式碼
自行建立一個專案,這邊須注意 Runner 要可以存取有兩種方式.
- 在 設定 / 一般 專案可見性須設定為公開的.
- 或是設定 SSH public key
詳細請參考 – https://benjr.tw/105776
建立以下程式碼.
Python 程式碼
建立一個 hello.py 程式碼.
import sys print(f'Hello {sys.argv[1]}')
需要透過 runner 執行程式需有 .gitlab-ci.yml 這個檔案.
stages: - test Run-Test: stage: test tags: - VM-Win10 script: - python hello.py Ben
說明:
要執行那些 stage
stages: - test
區塊名稱
Run-Test:
Stage 的名稱
stage: test
透過哪一個 runner 來執行.
tags: - VM-Win10
執行指令
script: - python hello.py Ben
Gitlab CI
使用 ben 身分登入 GitLab 網頁,並檢視 runner_test 專案的 CI/CD Pipiline 或是 Jobs 看程式是否有自行執行(程式有更新都會自動執行).