Документация

Фильтры качества

Как правила определяют допустимые к прохождению результаты и где каждый шлюз может остановить задачу.

Это шлюз качества — это проверка, которую должна пройти работа перед тем, как она сможет продолжить выполнение. Шлюзы позволяют превратить критерий «достаточно хорошо для релиза» из субъективного суждения в требование, которое система применяет одинаково в каждом случае.

Блокирующие и рекомендательные

Каждый шлюз относится к одной из этих категорий, и именно это и определяет всю его логику:

  • Блокирующие — при неудаче выполнение задачи останавливается. Работа не будет продолжена, пока она не пройдет проверку или пока человек не отменит это ограничение.
  • Рекомендательные — при неудаче результат проверки фиксируется как замечание и прикрепляется к запросу на объединение, но выполнение задачи продолжается.

Начните с рекомендательных шлюзов. Понаблюдайте за тем, что именно они выявляют в реальных задачах в течение недели-двух, а затем переведите те из них, которые себя оправдали, в разряд блокирующих. Если шлюз начнет блокировать работу с первого дня без предварительной настройки, он скорее всего заставит команду обходить его.

Что может проверять шлюз

Шлюзы располагаются на этапе верификации и могут охватывать:

  • успешное прохождение вашего собственного набора тестов
  • пороги покрытия кода тестами
  • линтинг и статический анализ
  • сканирование на наличие уязвимостей
  • браузерные тесты на запущенном превью-сайте
  • доказательства от внешних поставщиков, прикрепленные к pull request

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

Где шлюз может остановить работу

Шлюзы запускаются во время верификации, после завершения работы агента разработчика и перед этапом Рецензирования. При блокирующей ошибке задача возвращается на доработку, а не превращается в pull request, который вам пришлось бы отклонить.

Такая последовательность действий не случайна: дешевле допустить ошибку в процессе выполнения, чем столкнуться с ней при просмотре результата.

Правила

Шлюзы объединены в правила, которые вы фактически привязываете к проектам. Правило — это именованный набор шлюзов с указанием их типа (блокирующие/рекомендательные), чтобы можно было использовать один стандарт для продуктивных сервисов и более мягкий набор для внутренних инструментов.

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

Отмены

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

Именно этот учет и важен. Шлюз, отмену которого никто не может сделать, заставит команду искать способы его обойти; шлюз, отмену которого может сделать любой без следа, — это не шлюз вовсе. Отмена с сохранением записи — это и удобно, и прозрачно.

Чего шлюзы не делают

Шлюзы проверяют свойства. Они не определяют, решает ли работа нужную задачу — для этого существуют критерии приемки в спецификации , а также этап Рецензирования.

Изменение может пройти все шлюзы и при этом оказаться неверным.