Какой уровень знакомства с Linux требуется для развертывания CI/CD?

«Какой уровень знакомства с Linux требуется для развертывания CI/CD?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

1. Базовое администрирование (обязательно):

  • Работа в терминале, управление файлами и процессами (ps, kill, nohup).
  • Управление пакетами (apt, yum, dnf) для установки агентов CI (Jenkins, GitLab Runner), Docker, утилит.
  • Настройка прав доступа (chmod, chown, sudo) для сервисов и скриптов.
  • Работа с системными сервисами через systemd для управления демонами CI/CD.

2. Сетевая настройка (критично для агентов):

  • Диагностика (ss, ping, curl), настройка фаервола (iptables, firewalld) для доступа к репозиториям, артефактам и другим сервисам.
  • Настройка SSH-ключей для безопасного подключения runner'ов к основному серверу.

3. Мониторинг и логирование:

  • Анализ логов (journalctl, tail -f) для отладки падений джобов.
  • Использование cron или systemd timers для задач обслуживания (очистка артефактов, бэкапы).

Пример настройки GitLab Runner на Ubuntu:

# Регистрация раннера
sudo gitlab-runner register 
  --url https://gitlab.com/ 
  --registration-token $REGISTRATION_TOKEN 
  --executor "docker" 
  --docker-image alpine:latest 
  --description "My Docker Runner"

# Запуск как сервис
sudo systemctl enable --now gitlab-runner

Без этих навыков развертывание будет сводиться к использованию managed-решений (GitHub Actions, GitLab.com), что ограничивает кастомизацию.