Практическое задание

Эта задача — шаг 20 курса «Git на каждый день»

Защити main: только через MR

сложно~25 мин

Проект app лежит в нашем GitLab и склонирован в /root/app (вход в веб — на вкладке «GitLab»). Сейчас в main можно пушить напрямую, а merge request сливается даже с красным пайплайном. Наведи порядок:

  1. Защити ветку main так, чтобы пушить в неё напрямую не мог никто, а сливать merge request'ы могли мейнтейнеры.
  2. Включи проверку «Pipelines must succeed»: MR сливается только с зелёным пайплайном.
  3. Выпусти версию 1.5.0 уже по новым правилам: в отдельной ветке запиши 1.5.0 в VERSION, открой MR в main и слей его, когда пайплайн станет зелёным.

test.sh и .gitlab-ci.yml не меняй.

Что потренируешь:
  • protected branches
  • merge request
  • GitLab CI
  • GitLab

Разбор темы

Защищённая ветка (protected branch) ограничивает, кто может в неё пушить и кто — сливать merge request'ы. Обычная настройка для main: прямой push запрещён всем, сливать MR могут мейнтейнеры. Тогда любое изменение проходит через MR, а force-push и случайный коммит в обход ревью невозможны. Проверка «Pipelines must succeed» добавляет второе условие: кнопка Merge доступна, только когда пайплайн MR зелёный.

Что проверяется

  1. Прямой push в main запрещён всем
  2. Сливать MR в main могут мейнтейнеры
  3. Включено «Pipelines must succeed»
  4. В main слит MR с зелёным пайплайном
  5. В main версия 1.5.0, CHANGELOG дополнен
  6. test.sh и .gitlab-ci.yml не изменены

Как это выглядит