← Python мануфактура

Після цього уроку ви зможете

Конспект і таймкоди

0:00

CI runners, agents і вартість виконання

GitHub і GitLab називають виконавців jobs runners, Jenkins — agents. Хмарні runners зручні, але в приватних організаціях хвилини виконання можуть тарифікуватися. Self-hosted runner працює всередині інфраструктури компанії, дає більше контролю над ресурсами й доступами та часто зменшує операційну вартість регулярних прогонів.

2:00

Локальний запуск і кілька середовищ

Один репозиторій запускається локально й у CI проти dev, preprod або інших середовищ. Сервіси можуть залежати від баз даних і зовнішніх third-party систем, інколи спільних для кількох середовищ. Локальний ноутбук часто отримує доступ до закритої мережі лише через VPN, тому той самий маршрут не можна автоматично перенести на hosted runner.

Практика

Спроєктувати runner для одного UI-suite

  1. Намалювати маршрут від runner до application і залежностей.
  2. Зафіксувати потрібні credentials та мінімальні network rules.
  3. Запустити suite з обраною concurrency й записати peak CPU/RAM.
  4. Обґрунтувати hosted або self-hosted варіант фактичними даними.

Результат: Короткий capacity та access worksheet без універсальних припущень про RAM або вартість.

4:00

Мережевий доступ і self-hosted runners

Відкривати приватне середовище для широкого діапазону IP хмарного CI дорого в підтримці й збільшує поверхню атаки. Практичніший варіант — runner усередині контрольованої мережі: GitHub або GitLab передає йому job, а сам runner уже має потрібний маршрут до тестової інфраструктури. Доступ усе одно обмежують мережевими правилами й мінімальними правами конкретного runner.

Уточнення

Self-hosted runner не є isolation boundary

GitHub попереджає, що код workflow на self-hosted runner може скомпрометувати машину та доступні secrets. Один runner виконує одну job одночасно, але це не гарантує ізоляцію між послідовними jobs; для untrusted workflows потрібні ephemeral runners або інша isolation strategy.

7:00

Ресурси runner для UI-тестів

Runner клонує репозиторій, встановлює або використовує залежності та запускає тестовий процес. UI-тести додатково піднімають один чи кілька браузерів; навіть headless browser споживає відчутну кількість RAM. Розмір runner слід визначати за реальною паралельністю, наборами браузерів і піковим споживанням, а не за вимогами звичайного application build.

10:00

Gateway, load balancer і спільні залежності

Публічніше середовище може бути захищене authentication gateway, rate limits і load balancer замість VPN. Gateway приймає зовнішній трафік і маршрутизує його до потрібного сервісу; load balancer розподіляє запити між копіями. Під час проєктування тестів треба знати, які середовища ділять third-party інстанс і де саме застосовуються мережеві та частотні обмеження.

Джерела та додаткові матеріали

  • Self-hosted runners reference ↗GitHub · перевірено 2026-07-31

    Фіксує поточні властивості, routing і responsibility model self-hosted runners.