Gitlab Runner – Windows shell ( PowerShell)

Loading

上傳到 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 的語法.

    1. 首先需要選擇測試環境為何, OS 選擇 Windows
    2. 接下來是 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 看程式是否有自行執行(程式有更新都會自動執行).

沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料