1

Я пытаюсь получить проект .NET для сборки и тестирования с использованием gitlab CI.GitLab Runner не может восстановить пакеты nuget при запуске из gitlab, но может при запуске локально

Я загрузил и установил самую последнюю версию бегуна GitLab и успешно зарегистрировал ее с помощью нашего экземпляра 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 и nugget.exe (я загрузил и установил самую последнюю версию nugget.exe)

Служба бегуна gitlab регистрируется как та же учетная запись, которую я использовал для запуска команды exec exec.

Я использовал тот же самый nugget.exe как для построенных gitlab-сборок, так и для команды exec exec.

Мы находимся за корпоративным прокси-сервером, нет набора переменных среды HTTP_PROXY. Прокси-сервер настроен в «интернет-вариантах». Я попытался определить параметр HTTP_PROXY для nugget.exe, но позже удалил его после чтения, что nugget.exe по умолчанию использует системный прокси.

Заранее благодарим за любую помощь!

ответ

1

Мне посчастливилось посмотреть сервис в списке услуг и заметил, что, хотя я явно указал пользователя для службы, он был создан с учетной записью «локальная система», которая, как я полагаю, не имела настроек прокси. Служба была исправлена, и теперь она построена правильно.