# 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 для блокировки мерджа если пайплайн не сработал ![](https://i.imgur.com/coRWUVF.png) 3. Этап билд собирает и выкладывает ваш проект в виде артефакта джобы (zip-архивчик становится доступным для скачивания, если зайти в завершенную джобу) ![](https://i.imgur.com/8PV15tk.png) 4. Этап деплой работает только на мастер ветке, имеется manual-джобы, которые скачивают билд и пробрасывают их на соответствующий ранер Закомментировал условие, чтобы проверить на feature ветке ![](https://i.imgur.com/CtPucYH.png) ![](https://i.imgur.com/t9lKm5y.png) ![](https://i.imgur.com/9XJozJr.png)