Я работаю в компании SaaS, которая каждые шесть недель выпускает новые функции и исправляет ошибки для наших клиентов.Когда мы пишем изменения кода, они проходят через различные этапы (например, конечный автомат), прежде чем попадают на рабочие серверы.Шаги различаются в зависимости от того, сделано ли изменение в обычном цикле разработки или в качестве экстренного исправления.В настоящее время мы используем Harvest для управления шагами и отслеживания того, какой код (функции и исправления ошибок через пакеты) выпускаются клиентам, и в этом смысле он работает хорошо.
К сожалению, Harvest дорог и труден с точки зрения программиста.Ветвление и слияние - это кошмар.Итак, мы собираемся перейти на Mercurial.Mercurial, кажется, преуспевает в этих областях.Однако Mercurial, похоже, не предназначен для отслеживания изменений и управления вышеупомянутым процессом, он работает только с SCM.
Q: Какие опции у нас есть, когда дело доходит до процесса выпуска, конечно жеСуществуют ли другие SaaS-компании (например, Google, Flickr, Facebook, LinkedIn), которым нужен контроль качества перед выпуском кода на рабочие серверы?
В: Плохо ли пытатьсяпостроить процесс в Mercurial или есть другие инструменты, которые нам нужно использовать вместе с Mercurial?
[Редактировать] Чтобы уточнить, это наша (рекомендуемая) веткаструктура .
Вот процесс, который мы сейчас имеем в Harvest:
Hotfix <--> Test Level 1 <--> Test Level 2 <--> Master (Production)
Feature <--> Test <--> Release Test <--> Master (Production)
Я не ищу средство отслеживания ошибок, а скорее средство развертывания, которое помогает нам отслеживать иразвернуть код, который был проверен нашими тестировщиками (код в ветке релиза).Если одновременно работает несколько исправлений, мы должны иметь возможность протестировать их вместе, и если кто-то нарушает код, мы должны иметь возможность «демотерировать» изменения кода, возвращающиеся на один шаг в потоке процесса.Сегодня двум разработчикам достаточно «продвинуть» свои изменения на уровне тестирования 1, и систему можно протестировать с обоими изменениями вместе.Если изменения одного разработчика ломают что-либо только тогда, когда они вместе с кодом другого разработчика, это может быть легко понижено с Тестового Уровня 1.