Я пытаюсь получить проект .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 по умолчанию использует системный прокси.
Заранее благодарим за любую помощь!