Локальний CI
Цикл «push — очікування — червоний хрестик — виправлення — push» марнує десять хвилин на кожне коло. З act ті самі воркфлоу виконуються в контейнерах Docker на вашій машині, а Gitcito ними керує: виберіть воркфлоу, натисніть «Запустити» і дивіться той самий лог, який надрукував би CI — перш ніж будь-що покине вашу машину.

Інтеграція, а не вбудоване середовище виконання
Gitcito навмисно не постачає act чи Docker — застосунок, що тягне за собою
контейнерне середовище, — це протилежність git-клієнта. Це інтеграція за
бажанням: увімкніть її в Налаштування → Інтеграції (або просто в діалозі),
і Gitcito визначить, що встановлено, і проведе вас через решту —
brew install act, запущений демон Docker, готово. Нічого не запускається,
доки не виконані всі три умови: інтеграцію ввімкнено, act встановлено, Docker
доступний.
Що він робить
- Перелічує кожен воркфлоу з
.github/workflowsза йогоname:. - Запустити виконує воркфлоу через act на вашому робочому дереві — разом із незакоміченими змінами, і в цьому вся суть: тестуйте до коміту, а не після пушу.
- Вивід стрімиться в діалог наживо; Зупинити перериває запуск. Код виходу 0 показує Успішно, усе інше — Збій із кодом.
Вердикти по комітах на графі

Завершений запуск прикріплює свій результат до протестованого коміту: маленька
колба позначає рядок на графі зеленим або червоним, тож з одного погляду
видно, які коміти вже пережили CI локально. Вердикт зберігається як
git-нотатка в refs/notes/gitcito-ci — локально на вашій машині, типово
ніколи не пушиться.
Правило чесності: вердикт прикріплюється, лише якщо робоче дерево було чистим. Запуск поверх незакомічених змін тестував те, чого не містить жоден коміт, тому він показує результат у діалозі, але нічого не позначає.
Перевірити коміт або діапазон — не покидаючи свою гілку
Секція Перевірити коміт або діапазон у діалозі запускає воркфлоу на комітах, на яких ви не перебуваєте. Кожен коміт вивантажується у відокремленому (detached) стані в одноразовий worktree у системному тимчасовому каталозі, act працює там, а worktree видаляється, хай як завершиться запуск — ваше робоче дерево і ваша гілка ніколи не рухаються. Оскільки такий checkout за побудовою бездоганний, вердикт завжди прикріплюється до протестованого коміту. Клац правою кнопкою по коміту на графі одразу пропонує Запустити локальний CI на цьому коміті.
Ціна називається до того, як щось запуститься, а не виявляється потім:
введіть ревізію або діапазон (main..HEAD, HEAD~5.., sha), натисніть
Попередній перегляд, і Gitcito покаже, скільки комітів відповідає умові
та які найновіші N — явний бюджет, обмежений 50 — справді будуть запущені.
Прохід виконує їх послідовно (act плюс Docker достатньо важкі, щоб
паралельні запуски билися за машину), стрімить лог кожного запуску, наживо
позначає кожен коміт як успішний чи збійний, а Зупинити перериває між
комітами, вбиваючи поточний. Розраховуйте на реальні хвилини на кожен коміт.
Ще одне обмеження, про яке варто знати: одноразовий worktree містить файли коміту, але не вивантажені субмодулі вашого репозиторію — воркфлоу, що залежить від ініціалізованих субмодулів, поводитиметься як на свіжому клоні без них.
Обмеження
- act — дуже добра імітація ранерів GitHub, але не ідеальна: екшени, яким потрібні сервіси на боці GitHub, секрети чи екзотичні образи ранерів, можуть поводитися інакше. Локальний зелений — вагомий доказ, але не гарантія.
- Один запуск на репозиторій за раз; старт наступного скасовує попередній.
- Лише запуски цілих воркфлоу — вибір окремих джобів, матриць чи подій — це територія act; коли потрібні прапорці, запустіть його в терміналі.
- Перший запуск завантажує образи ранерів — один раз буде повільно.
Див. також: Хостинг та pull-реквести · Вбудований термінал