Настройка CI/CD runner в Gitlab для автоматического тестирования при комите C#
Всем привет. Прошу помощи. Уже неделю разбираюсь с возможностью настройки автоматического юнит-тестирования при комите решений на C#. Все что я понял - это необходимо иметь проект и юнит-тесты под него, батник для запуска тестов. Каким образом настроить гитлаб, чтобы при комите запускались тесты и их результаты выводились в pipeline?
Ответы (1 шт):
гитлаб сам по себе ничего не делает.
Чтобы сделать то, что вам нужно, вам нужна связка GitLab + Gitlab-runner.
Gitlab-runner - это среда исполнения сборочных линий или отдельных этапов этих линий, как сконфигурируете.
Соответственно, чтобы заработала сборочная линия, в настройках проекта у вас должен быть хотя бы один раннер, который будет обрабатывать сборочную линию. Как установить его, читайте тут Install gitlab runner
Затем, вам нужна сборочная линия, которая конфигурируется в файле .gitlab-ci.yml. Что можно прописать в этом файлике можно почитать тут: GitLab CI/CD pipeline configuration reference
Моя лень сегодня победила и я не доделал публикацию проекта на IIS, но вот пример построения проекта при любом коммите (актуально для мерджей - провалилась линия, мердж не пройдет) и сборка релиза для публикации:
stages:
- build
- deploy
build:
stage: build
script:
dotnet build project.sln
deploy:
stage: deploy
script:
dotnet build project.sln -c Release
only:
refs:
- master
environment: production
Запустить тесты можно командой
dotnet test
или
mstest /testcontainer:testdllname.dll
А поскольку, вы не указали какие именно у вас тесты, MS Unit Test, XUnit, NUnit то предметно разбираться в нюансах придется вам самим, но в целом результаты выводятся как в консоль - вы увидите это в логах линии, так и в файлы - можно поместить в артефакты и хранить хоть вечно.
Обратите внимание, что не тэгированные линии обычно не запускаются - нужно в настройках раннера, привязанного к проекту галочку поставить, либо в yml файле теги раннера указать. Это сделано специально, так как у вас может быть сконфигурирован кластер с кучей различных раннеров под разные среды, тэги помогают определить который будет выполнять вашу сборочную линию.