Dot-Net

使用 GitLab CI 管道建構 .NET 解決方案

  • March 14, 2018

我有一個包含多個 .NET 項目的解決方案。我使用非自託管的 GitLab 進行版本控制,並且也想開始使用他們的 CI 工具。我已將以下.gitlab-ci.yml文件添加到我的根目錄:

stages:
 - build
 - test

build_job:
 stage: build
 script:
 - 'echo building...'
 - 'msbuild.exe Bizio.sln'
 except:
 - tags

test_job:
 stage: test
 script:
 - 'echo: testing...'
 - 'msbuild.exe Bizio.sln'
 - 'dir /s /b *.Tests.dll | findstr /r Tests\\bin\\ > tests_list.txt'
 - 'for /f %%f in (tests_list.txt) do mstest.exe /testcontainer: "%%f"'
 except:
 - tags

舞台總是失敗,build因為它不知道是什麼msbuild。確切的錯誤是:

/bin/bash:第 61 行:msbuild.exe:找不到命令

經過一番調查,我發現我正在使用共享跑步者。這是作業執行的全部輸出:

Running with gitlab-runner 10.6.0-rc1 (0a9d5de9)
 on docker-auto-scale 72989761
Using Docker executor with image ruby:2.5 ...
Pulling docker image ruby:2.5 ...
Using docker image sha256:bae0455cb2b9010f134a2da3a1fba9d217506beec2d41950d151e12a3112c418 for ruby:2.5 ...
Running on runner-72989761-project-1239128-concurrent-0 via runner-72989761-srm-1520985217-1a689f37...
Cloning repository...
Cloning into '/builds/hyjynx-studios/bizio'...
Checking out bc8085a4 as master...
Skipping Git submodules setup
$ echo building...
building...
$ C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Bizio.sln
/bin/bash: line 61: msbuild.exe: command not found
ERROR: Job failed: exit code 1

看起來我擁有的共享執行器正在為 Ruby 使用 Docker 映像,這似乎是錯誤的。我不知道如何更改或選擇可用於 .NET 的其他選項。經過一些進一步的調查,我開始擔心我必須跳過很多圈才能得到我想要的東西,比如使用 Azure VM 來託管可以建構 .NET 應用程序的 GitLab Runner。

我需要做什麼才能使用 GitLab 的 CI 管道來使用非自託管 GitLab 實例建構我的 .NET 解決方案?

您應該能夠在具有 Framework 4 建構工具的機器上設置您自己的共享執行器(使用 Docker 映像,如 microsoft/dotnet-framework-build,或者只是您的本機機器)。

最簡單的情況是使用您自己的桌面,您知道您的解決方案已經在其中建構。(因為使用 Docker 映像進行建構是絕對可能的,但涉及確保您的機器上有 docker 工作的所有額外步驟)。

  • 從https://docs.gitlab.com/runner/install/windows.html在您的電腦上下載 gitlab-runner

    • 在電腦上創建一個目錄(C:\gitlab-runner)
    • 將最新的二進制x86x64下載到該文件夾
    • 將二進製文件重命名為“gitlab-runner.exe”
  • 為你的跑步者獲取一個 gitlab-ci 令牌

    • 可能最簡單的方法是轉到 gitlab.com 中的項目,然後轉到 Settings -> CI/CD 並展開 General Pipeline Settings。
    • 在 Runner Token 部分,點擊 Reveal Value 按鈕以顯示令牌值。您將在跑步者註冊步驟中需要它。
  • 根據Registering Runners - Windows註冊gitlab runner

    • 打開提升的命令提示符(以管理員身份執行)
    • cd 到 c:\gitlab-runner
    • 類型gitlab-runner register
    • 註冊提示將引導您完成註冊跑步者的步驟,但簡而言之,您將輸入
    • gitlab.com 作為你的協調者 URL,從你的項目中輸入令牌
    • 給你的跑步者起個名字
    • 標記你的跑步者(這樣你就可以將它與它能夠建構、測試等的項目相關聯——為簡單起見,你現在可以跳過標籤)
    • 允許它執行未標記的作業(再次,簡單,說真的)
    • 將跑步者鎖定到目前項目(簡單,說真的)
    • 並選擇執行器(輸入 shell,基本上是說使用 Windows 命令行)
  • 將 gitlab-runner 安裝為服務,以便它幾乎總是檢查要完成的工作

    • 在命令提示符下,鍵入gitlab-runner install
    • 然後輸入gitlab-runner start
    • (現在,如果你去服務,你會看到 gitlab-runner 列出,它應該正在執行 - 就在當/如果跑步者崩潰時,你應該去服務重新啟動它)

唷。現在執行器已設置,當您推送送出或請求合併時應該啟動它。

如果您在正確建構 .gitlab-ci.yml 文件時仍然遇到問題,您可以通過轉到命令行中的解決方案文件夾然後執行c:\gitlab-runner\gitlab-runner build(To例如,測試建構步驟)。

如果建構步驟在查找解決方案文件時遇到問題,您可能需要嘗試將其從“msbuild.exe Bizio.sln”更改為“msbuild.exe .\Bizio.sln”

引用自:https://stackoverflow.com/questions/49268560