GitHub Actions медленно убивает команды разработчиков.




Я был одним из первых сотрудников CircleCI и, скрепя сердце, использовал практически каждую мыслимую CI-систему: Jenkins, Travis, CircleCI, Semaphore, Drone, Concourse, Wercker (кто-нибудь ещё помнит Wercker?), Teamcity, Bamboo, Gitlab CI, Codebuild и, вероятно, ещё полдюжины других, которые я, слава богу, забыл. Я основательно протестировал эти системы на вас — шрамы хорошо видны.

Но сегодня я говорю о Github Actions. И что я могу сказать: это нехорошо, даже не сносно. Пожалуй, самое приятное, что я могу о нём сказать, это то, что он находится прямо в вашем репозитории — и именно это обеспечивает ему его долю рынка.

То, как должна ощущаться CI (Continuous Integration), показывает Buildkite. Но давайте сначала разберёмся, как CI не должна ощущаться.

Если вы используете Nix, можете сразу прекратить чтение

Прежде чем я углублюсь в детали, общее замечание: если вы используете Nix, вам лучше всего ознакомиться с Garnix(открывается в новом окне) . Он анализирует ваш файл flake, определяет, что нужно скомпилировать, и компилирует это. Здесь нет YAML и конфигурации пайплайна. Garnix просто смотрит на ваш flake.nix и делает то, что нужно. Иногда лучшая конфигурация CI — это отсутствие конфигурации CI.

Однако большинство не используют Nix. Этот пост адресован вам. Мои соболезнования.

Часть I: Нисхождение

Позвольте мне начать с драматического примера. Возможно, это звучит преувеличенно, но это не так.

Ситуация: Сборка падает, на Pull Request появляется красный крест. Вы кликаете, чтобы увидеть, что произошло. И начинается пытка.

Сначала вы попадаете на страницу обзора проверок, которая показывает список запусков рабочих процессов. Возможно, один упал, возможно, три. Вы кликаете на тот, который выглядит релевантным.

Теперь вы на странице запусков рабочих процессов, которая показывает список задач. Вы кликаете на упавшую задачу, страница задачи показывает список шагов, все раскрываются. Вы кликаете на шаг, который упал, страница дёргается, вы прокручиваете. Затем наступает пауза, в которой вы задерживаете дыхание. Затем появляются логи — но так же медленно, как манускрипт, открывающий просителю строку за строкой, пока тот не доказал свою достойность.

Требуется три, четыре клика, только чтобы увидеть ошибку. При каждом клике загружается новая страница со своим собственным индикатором загрузки, и ни одна из них не быстрая. Вы пробираетесь через бюрократические джунгли, заполняете формы, словно в департаменте транспортных средств CI.