В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.
Важно отметить, что в интернете довольно мало информации о том, как запустить GitLab Runner, который взаимодействует с локальным GitLab сервером. Большинство руководств фокусируются на использовании официального GitLab.com, но для целей обучения и тестирования локальная установка имеет ряд преимуществ.
Во-первых, это позволяет экспериментировать в безопасной среде без риска для реальных проектов. Во-вторых, многие компании используют собственные, часто устаревшие версии GitLab. Имея навыки настройки локального сервера, вы сможете воссоздать среду, идентичную той, что используется в вашей организации, что крайне полезно для отладки и тестирования CI/CD процессов.
Основная часть статьи:
Зачем нужен собственный GitLab сервер?
Собственный GitLab сервер позволяет:
-
Изучить GitLab CI/CD в безопасной среде
-
Экспериментировать с настройками без риска для производственных систем
-
Создать тестовую площадку для отработки CI/CD практик
-
Получить полный контроль над инфраструктурой и данными
Как запустить свой сервер 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 up --build
3. Доступ к веб-интерфейсу GitLab:
-
URL:
http://localhost:8000/
-
Логин:
root
-
Пароль:
CHANGEME123
4. Настройка SSH-ключа:
-
Перейдите на
http://localhost:8000/-/user_settings/ssh_keys
-
Добавьте содержимое вашего
~/.ssh/id_rsa.pub
Регистрация GitLab Runner для выполнения задач в Docker
-
Создайте в одной папке с
docker-compose.yml
файл.env
:
RUNNER_NAME=ИмяПроекта REGISTRATION_TOKEN=ВашТокенРегистрации
REGISTRATION_TOKEN
— Его можно получить вhttp://localhost:8000/root/${Проект}/-/settings/ci_cd
в разделеRunner's
->Project runners
->:
->Скопировать
-
Перезапустите сервис
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
-
Создайте новый проект в GitLab, по имени
test
-
Зарегистрируйте runner. Как это сделать было написано выше
-
Клонируйте проект:
git clone ssh://git@localhost:8822/root/test.git
-
Создайте ветку:
git checkout -b test_ci
-
Добавьте файл
main.py
:
def main(): print('Hello World') main()
-
Создайте файл
.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
-
Закоммитьте изменения:
git add -A && git commit -m "feat: #12345 Добавлен CI пайплайн"
-
Отправьте изменения:
git push -u origin test_ci
-
Создайте Merge Request в GitLab
-
Проверьте выполнение пайплайна на вкладке «Сборочная линия»
Этот гайд поможет вам настроить локальную среду GitLab CI/CD для изучения и экспериментов. Помните, что для продакшен-среды потребуются дополнительные настройки безопасности и производительности.
ссылка на оригинал статьи https://habr.com/ru/articles/824514/
Добавить комментарий