Какой у вас опыт работы с Gitea?

«Какой у вас опыт работы с Gitea?» — вопрос из категории Git, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я разворачивал и администрировал self-hosted инстансы Gitea для внутренних команд разработки, где использование публичных SaaS-решений (GitHub, GitLab) было ограничено политиками безопасности.

Основные задачи и настройки:

  • Развертывание и обслуживание: Установка Gitea на собственные серверы с использованием Docker и Docker Compose для простоты управления и обновлений. Настройка резервного копирования репозиториев и базы данных.
  • Интеграция CI/CD: Настройка вебхуков из Gitea для запуска пайплайнов в Jenkins и Drone CI. Конфигурация SSH-ключей для автоматизированного доступа.
  • Управление доступом: Создание организаций, команд и тонкая настройка прав доступа к репозиториям (чтение/запись/администрирование).
  • Сравнение с другими решениями:
    • Плюсы: Очень легковесный, быстрый, прост в установке и обслуживании, имеет низкие требования к ресурсам, полностью совместим с Git CLI.
    • Минусы: Меньше встроенных функций (например, нет нативного CI/CD как в GitLab), экосистема плагинов и интеграций скромнее.

Пример docker-compose.yml для развертывания Gitea:

version: '3'
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=postgres
      - DB_HOST=db:5432
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
    volumes:
      - ./gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    depends_on:
      - db
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres_data:/var/lib/postgresql/data