# gitlab-ci
Что нужно сделать:
1. Спроектировать pipeline, который должен состоять как минимум из трех этапов:
Тест -> сборка -> деплой
2. Задача этапа тестирования - не пропустить merge request, если тесты не проходят. (джоба краснеет -> пайп краснеет)
*Напомню, что в настройках проекта есть запрет на мерж, если пайплайн красный
**Если у вас нет тестов на проекте - напишите.
***Если не умеете - придумайте какую-то симуляцию теста, которую будет можно пройти/не пройти.
3. Задача этапа сборки - собрать исполняемые файлы проекта (в случае .net - скорее всего необходимо скомпиллировать в бинарь) и выложить результат как job artifact
4. Задача этапа деплоя - необходимо вытягивать артефакт с джобы предыдущего этапа (из джобы сборки).
Сделать это можно через api gitlab-а.
Затем распаковывать их на выбранном раннере в директорию /project
Джобы этого этапа должны появляться только на master-ветке вашего проекта и должны иметь ручное управление (manual).
Что показать ментору и на что ему нужно будет обратить внимание:
1. Готовую версию вашего .gitlab-ci.yaml в которой есть
3 stage-а: test - build - deploy
2. Этап тест блокирует возможность мержа в мастер ветку при непрохождении тестов.
3. Этап билд собирает и выкладывает ваш проект в виде артефакта джобы (zip-архивчик становится доступным для скачивания, если зайти в завершенную джобу)
4. Этап деплой работает только на мастер ветке,
имеется manual-джобы, которые скачивают билд и пробрасывают их на соответствующий ранер
# Ответы
```
stages:
- test
- build
- deploy
Test:
stage: test
script:
- ls -la
- if [ -f ./docker-compose.yml -a -f ./Convertet_C-F.sln ]; then echo "ok"; else false; fi;
tags:
- "dev"
Build:
stage: build
script:
- dotnet build "Convertet C-F" -c Release -o ./artifacts/tamplate_project
artifacts:
name: "Release"
paths:
- ./artifacts/tamplate_project
untracked: false
expire_in: 1 days
tags:
- "dev"
allow_failure: false
Deploy:
stage: deploy
script:
- curl --location --output Release.zip https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=Build
- unzip Release -d ~/project
when: manual
# only:
# - master
tags:
- "dev"
```
Поставил галочку на Pipelines must succeed для блокировки мерджа если пайплайн не сработал

3. Этап билд собирает и выкладывает ваш проект в виде артефакта джобы (zip-архивчик становится доступным для скачивания, если зайти в завершенную джобу)

4. Этап деплой работает только на мастер ветке,
имеется manual-джобы, которые скачивают билд и пробрасывают их на соответствующий ранер
Закомментировал условие, чтобы проверить на feature ветке


