Локальный 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; когда нужны флаги, запустите его в терминале.
- Первый запуск скачивает образы раннеров — один раз будет медленно.
См. также: Хостинги и пул-реквесты · Встроенный терминал