Coroid принимает множество решений в процессе выполнения задачи: стоит ли превращать запрос в реальную работу, как её реализовать и достаточно ли качество результата для предъявления вам. Некоторые решения никогда не выходят из рук людей. Слияние — самый явный пример такого случая.
Решения, принимаемые Coroid
- Станет ли запрос основой для работы. Проверка соответствия требованиям Проверяются дубликаты, уже исправленные ошибки и ситуации, которые невозможно воспроизвести. Для запросов, поступивших без участия человека, решение об их принятии принимается в рамках вашего мандатов можно ли начать работу сейчас, позже или вообще не начинать.
- Как реализуется и проверяется работа. План, код, тесты, этапы контроля качества, проверка QA и процесс рецензирования. Подробнее Как Coroid проверяет собственную работу.
- Что бы он решил относительно слияния. Coroid фиксирует свое суждение по каждому рассматриваемому pull request, но не применяет его на практике. Подробнее Как Coroid проверяет собственные суждения.
Решения, оставшиеся за людьми
| Решение | Кто его принимает |
|---|---|
| Слить pull request в вашу ветку | Человек внутри GitHub или GitLab, либо с Утвердить и слить в Coroid |
| Релиз и развертывание | Человек через ваш конвейер или релиз в Coroid |
| Укажите назначение автоматизированной работы и её бюджет | Владелец или администратор путем публикации мандата |
| Укажите, что считается завершенной работой | Человек, который её запросил, в рамках её контракта на результат |
| Создать задачу. Проверка соответствия требованиям прервана | Человек с соответствующими правами, с Создать задачу в любом случае и указанием причины |
Coroid никогда не сливает изменения самостоятельно, и нет настройки, которая бы это позволяла. Подробнее Слияние.
Мандаты не влияют на того, кто осуществляет слияние
Мандат позволяет начать работу без необходимости запрашивать разрешение на каждый этап. Однако он не дает возможности автоматически завершить её и отправить результат на рассмотрение. Работа, начатая по мандату, проходит ту же проверку, что и любая другая задача, и в итоге превращается в пул-реквест, ожидающий решения человека.
Главное преимущество мандата — это ответственность за неконтролируемую работу: какие проекты он может затрагивать, сколько средств он может использовать и полный перечень всех принятых по нему решений.
Как Coroid проверяет собственные суждения
Для каждого pull request, который рассматривает Coroid, и для каждой задачи, готовой к слиянию, Coroid фиксирует, какое решение он бы принял, если бы ему разрешили выполнить слияние:
- Было бы одобрено. Все необходимые условия выполнены и подтверждены: проверки качества последнего коммита pull request, рецензирование Coroid, проверки вашего поставщика, корректное слияние, а также вердикты QA и рецензента по задаче.
- Было бы заблокировано. Хотя бы одно из этих условий не выполнено.
- Невозможно определить. Чего-то необходимого не хватало. Отсутствующие доказательства никогда не считаются основанием для одобрения.
Это суждение никогда не публикуется в pull request, не влияет на статус задачи и не приводит к слиянию. Оно пока не отображается в Coroid.
Coroid затем сравнивает каждое суждение с тем, что произошло после слияния:
- более поздний pull request с названием Отменить… отмечает предыдущий вариант как отменённый;
- более поздний pull request, в котором указано Исправления #n отмечает pull request n как быстро исправленный;
- на экране рецензирования задачи, в разделе Что произошло после слияния, любой сотрудник организации может отметить слившийся pull request как отменённый, быстро исправленный или ошибка зафиксирована.
Одобрение по pull request, которое позже было отменено или исправлено, считается ошибочным. В собственном репозитории Coroid также подает намеренно искажённые копии реальных изменений, чтобы проверить, насколько эффективно он их выявляет.
Зачем сохранять этот реестр?
Чтобы на вопрос «Можно ли доверять Coroid при слиянии таких изменений?» можно было ответить на основе фактов — как часто его одобрения оказывались ошибочными, для каких типов изменений и на скольких примерах — а не на основе интуиции. Сейчас этот реестр никак не влияет на процесс. Если это когда-нибудь изменится, такое решение будет принято владельцем осознанно, и именно этот реестр станет его основой.