1

我想要使用gitlab CI構建和測試.NET項目。從gitlab啓動時GitLab Runner無法恢復nuget包,但可以在本地啓動時

我已經下載並安裝了最新版本的GitLab runner,併成功將其註冊到我們的gitlab實例中。我創建了以下.gitlab-ci.yaml文件:

variables: 
    Solution: Performance-Validation-Tool.sln 

stages: 
    - build 
    - test 
# - deploy 

build: 
    stage: build 
    script: 
    - echo "Restoring NuGet packages..." 
    - 'C:/nuget/NuGet.exe restore' 
    - echo building... 
    - 'msbuild.exe "%Solution%"' 
    except: 
    - tags 

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

的重要組成部分,是構建行動。

如果我從Gitlab本身我收到以下錯誤對於所有的金塊包的運行構建:

WARNING: Unable to find version '3.5.0' of package 'NUnit.Console'. 

    C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache: Package 'NUnit.Console.3.5.0' is not found on source 'C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache'. 

    https://api.nuget.org/v3/index.json: Unable to load the service index for source https://api.nuget.org/v3/index.json. 

    An error occurred while sending the request. 

    The remote name could not be resolved: 'api.nuget.org' 

但是,如果我運行下面的命令本地:

C:\GitlabRunner\gitlab-ci-multi-runner-windows-amd64.exe exec shell build 

一切完美...

我爲gitlab runner和nugget.exe創建了防火牆例外(我下載並安裝了最新版本的nugget.exe)

gitlab亞軍服務以我用來運行手動exec命令的相同帳戶登錄。

我對gitlab觸發版本和手動exec命令都使用了相同的nugget.exe。

我們背後是一個公司代理,沒有設置HTTP_PROXY環境變量。該代理在「Internet選項」中進行配置。我曾嘗試爲nugget.exe定義HTTP_PROXY設置,但稍後在閱讀nugget.exe默認使用系統代理後將其刪除。

在此先感謝您的幫助!

回答

1

我碰巧看到服務列表中的服務,並注意到雖然我明確指定了服務的用戶,但它是使用缺少代理設置的「本地系統」帳戶創建的,我假設。該服務已得到糾正,現在可以正確構建。