Сборочному конвейеру нужно самому понимать, можно ли двигаться дальше, не заглядывая в интерфейс продукта. Для этого есть вычисляемый статус проверки, инструмент командной строки и уведомления о том, что требуется решение человека.
Главное правило здесь одно: проверка даёт доказательства, а решение остаётся за человеком. Ни один флаг, ключ или скрипт этого не меняет.
Статус проверки
Статус не хранится готовым, а пересчитывается заново при каждом чтении по живым данным:
- Ожидание — изменённые снимки ждут решения человека.
- Провал — есть упавшие сборки, отклонённые снимки или сорвавшиеся сравнения.
- Успех — только после того, как отличия одобрены.
Отдельно и честно: сборка, не выбравшая ни одной проверки, — это провал, а не автоматическое прохождение. Пустой список проверок никогда не считается успехом.
Текст проверки
Вместе со статусом всегда идёт текст проверки: что именно было выбрано в сборке и любое переопределение с именем автора и причиной. Ответ на запрос конвейера, комментарий к запросу на слияние и машинный адрес отдают одно и то же — расхождений между ними не бывает, потому что все трое считают по одним и тем же данным.
Комментарий к запросу на слияние
Перед слиянием конвейер оставляет комментарий со списком всех снимков, ждущих решения. Человеку не нужно искать их по интерфейсу: он открывает сборку по ссылке из комментария и выносит вердикты.
Командная строка (viz)
То же самое доступно из командной строки: запустить сборку и дождаться вердикта, посмотреть состояние, получить список «что ждёт решения», запросить правки или починку, выгрузить и загрузить эталоны, опубликовать ссылку, прочитать статус проверки, посмотреть настройки и загрузить снимок из другого инструмента. Инструменту не нужны ни установка, ни сборка — это простой файл для запуска.
Коды завершения — это и есть договор с конвейером:
- 0 — прошло.
- 7 — прошло, но требуется решение человека.
- 8 — провал.
Флаг машинного вывода даёт те же факты в виде данных, а не текста, — удобно для разбора в скриптах. И самое важное: команды «одобрить» не существует. Инструмент может попросить правки, открыть задачу и показать, что человек мог бы принять одним нажатием, но само принятие — только в браузере и только руками человека. Это не ограничение, которое можно снять другим ключом.
Переопределение
Иногда красную проверку нужно осознанно обойти — например, когда отличие известно и выпуск не ждёт. Тогда указывается причина, и она обязательна. Вычисленные вердикты при этом остаются: в тексте проверки появляется «обойдено пользователем …» с причиной, поэтому обход всегда видно. Обойти можно только завершённую сборку, и действие это доступно лишь администратору.
Уведомления
Уведомления уходят на заданный адрес по событиям. По умолчанию включены два: «требуется ревью» и «сборка упала». Доступны ещё два — «ссылка опубликована» и «открыт запрос к человеку». У события «требуется ревью» есть порог по количеству отличий: отличие в один пиксель никого не разбудит.
Неудачные доставки повторяются, а журнал доставок показывает, что отправлено и что не удалось. Если публичный адрес продукта не задан, ссылки в уведомлении честно остаются относительными — открыть их снаружи можно только с того же сервера. Если адрес не отвечает, уведомления приостанавливаются, но само тестирование продолжает работать.
Дальше: кто выполняет сборки и что показывает раздел эксплуатации — в разделе Операции и работоспособность.