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

Ответ

Для самостоятельного развертывания и поддержки 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), что ограничивает кастомизацию.

Ответ 18+ 🔞

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

1. Базовое администрирование (без этого вообще никуда):

  • Терминал — твой новый дом. Уметь не просто ls -la, а управлять процессами (ps, kill, nohup), когда джоб завис и жрёт все ресурсы.
  • Ставить софт через пакетные менеджеры (apt, yum). Тебе же надо будет поставить самого раннера (Jenkins или GitLab Runner), Docker, кучи утилит. Без этого — как без рук.
  • Права доступа (chmod, chown, sudo). А то запустишь сервис от root'а, а он потом артефакты создаёт, которые скрипт не может прочитать — и всё, пизда рулю, пайплайн падает с криптографическими ошибками.
  • Работа с systemd. Потому что все эти раннеры и агенты — это демоны, сервисы. Научись их включать, выключать, перезапускать и смотреть, почему они, блядь, не стартанули.

2. Сетевая настройка (тут без понимания — просто овердохуища боли):

  • Диагностика (ss, ping, curl). Раннер не коннектится к гитлабу? Репозиторий не клонируется? Артефакт-сервер недоступен? Первым делом — проверяй сеть, а не молись.
  • Фаервол (iptables, firewalld). Частая причина: ты всё поставил, а раннер сидит и бздит, потому что порты закрыты. Надо уметь их аккуратно открыть, а не выключать фаервол полностью, делая из сервера манду с ушами.
  • SSH-ключи. Для безопасного общения между серверами. Настроил один раз и забыл, но если накосячишь — будешь потом ебаться с known_hosts и пермишенами до посинения.

3. Мониторинг и логирование (когда всё падает, а ты нихуя не понимаешь почему):

  • Логи (journalctl, tail -f). Это твои лучшие друзья. Джоб отвалился? Лезу в логи раннера, лезу в логи джоба, смотрю, где именно он обосрался. Без этого ты как слепой котёнок.
  • Планировщики задач (cron или systemd timers). Чтобы не захламить диск артефактами за месяц. Поставил задачу раз в неделю чистить /tmp или старые билды — и живёшь спокойно.

Вот, смотри, живой пример, как на убунте GitLab Runner поставить. Проще пареной репы, если руки из нужного места:

# Регистрируем нового раннера. Токен свой подставь, ёпта.
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

Если этих скиллов нет, то твой удел — это GitHub Actions или GitLab.com, где тебе дадут коробочное решение, а как только захочешь что-то своё, хитрожопое — всё, потолок. Доверия к таким решениям, блядь, ноль, если речь о чём-то сложнее хеллоу ворлда.