Погружение в DevOps: запускаем GitLab и GitLab Runners локально

от автора

В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.

Важно отметить, что в интернете довольно мало информации о том, как запустить GitLab Runner, который взаимодействует с локальным GitLab сервером. Большинство руководств фокусируются на использовании официального GitLab.com, но для целей обучения и тестирования локальная установка имеет ряд преимуществ.

Во-первых, это позволяет экспериментировать в безопасной среде без риска для реальных проектов. Во-вторых, многие компании используют собственные, часто устаревшие версии GitLab. Имея навыки настройки локального сервера, вы сможете воссоздать среду, идентичную той, что используется в вашей организации, что крайне полезно для отладки и тестирования CI/CD процессов.

Основная часть статьи:

Зачем нужен собственный GitLab сервер?

Собственный GitLab сервер позволяет:

  1. Изучить GitLab CI/CD в безопасной среде

  2. Экспериментировать с настройками без риска для производственных систем

  3. Создать тестовую площадку для отработки CI/CD практик

  4. Получить полный контроль над инфраструктурой и данными

Как запустить свой сервер GitLab в контейнере?

1. Подготовка файловой структуры:

mkdir -p ./data/docker/gitlab/{var/opt/gitlab,var/log/gitlab,etc/gitlab-runner,var/run/docker.sock} mkdir -p ./config touch ./config/config.toml

2. Запуск Docker Compose:

Ссылка на docker-compose.yml

docker-compose up --build

3. Доступ к веб-интерфейсу GitLab:

  • URL: http://localhost:8000/

  • Логин: root

  • Пароль: CHANGEME123

4. Настройка SSH-ключа:

  1. Перейдите на http://localhost:8000/-/user_settings/ssh_keys

  2. Добавьте содержимое вашего ~/.ssh/id_rsa.pub

Регистрация GitLab Runner для выполнения задач в Docker

  1. Создайте в одной папке с docker-compose.yml файл .env:

RUNNER_NAME=ИмяПроекта REGISTRATION_TOKEN=ВашТокенРегистрации

REGISTRATION_TOKEN — Его можно получить в http://localhost:8000/root/${Проект}/-/settings/ci_cd в разделе Runner's-> Project runners -> : -> Скопировать

  1. Перезапустите сервис register-runner:

docker-compose restart register-runner

Управление GitLab Runner

Для выполнения команд войдите в контейнер register-runner:

# Запуск всех раннеров gitlab-runner run  # Список раннеров gitlab-runner list  # Проверка раннеров gitlab-runner verify  # Удаление всех раннеров gitlab-runner unregister --all-runners  # Удаление конкретного раннера gitlab-runner unregister --name ${name_runner}  # Файл с конфигурациями раннеров vim /etc/gitlab-runner/config.toml

Пример настройки проекта с GitLab CI/CD

  1. Создайте новый проект в GitLab, по имени test

  2. Зарегистрируйте runner. Как это сделать было написано выше

  3. Клонируйте проект: git clone ssh://git@localhost:8822/root/test.git

  4. Создайте ветку: git checkout -b test_ci

  5. Добавьте файл main.py:

def main():     print('Hello World')  main()
  1. Создайте файл .gitlab-ci.yml:

stages:     - linting  variables:     COMMIT_MESSAGE_PATTERN: "^.{0,10}:[[:space:]]#[0-9]{5,6}[[:space:]].{5,150}$"  .default_rules: &default_rules     rules:         - if: '$CI_COMMIT_BRANCH != "main" && $CI_PIPELINE_SOURCE == "merge_request_event"'  commit-name-test:     stage: linting     <<: *default_rules     script:         - |             if [[ "$CI_COMMIT_MESSAGE" =~ $COMMIT_MESSAGE_PATTERN ]]; then               echo "Корректный формат сообщения коммита"             else               echo "Некорректный формат: $CI_COMMIT_MESSAGE"               exit 1             fi  pylint:     stage: linting     <<: *default_rules     image: python:3.9     before_script:         - pip install pylint     script:         - pylint **/*.py 
  1. Закоммитьте изменения: git add -A && git commit -m "feat: #12345 Добавлен CI пайплайн"

  2. Отправьте изменения: git push -u origin test_ci

  3. Создайте Merge Request в GitLab

  4. Проверьте выполнение пайплайна на вкладке «Сборочная линия»

Этот гайд поможет вам настроить локальную среду GitLab CI/CD для изучения и экспериментов. Помните, что для продакшен-среды потребуются дополнительные настройки безопасности и производительности.


ссылка на оригинал статьи https://habr.com/ru/articles/824514/