Я розробник програмного забезпечення в досить великій команді (у нас вісім розробників активно вносять зміни до одного сховища коду). Кожні два тижні ми підштовхуємо до виробництва нову версію нашого програмного забезпечення. Ось наш поточний робочий процес:
- Розпочинаючи нове завдання, розробники створюють "особливу гілку" від основної гілки розвитку (ми використовуємо git ) і працюємо над цією новою гілкою
- Як тільки розробник закінчив роботу над своїм завданням, вони об'єднують свою функціональну гілку назад у галузь розвитку
- Розробник об'єднує галузь розвитку в гілку якості.
- Побудова запускається з гілки QA. Вихід цієї збірки розміщується в нашому середовищі якості, щоб тестувальники могли розпочати тестування.
Для наших тестувальників досить часто зустрічаються проблеми з цими новими функціями, які були об'єднані у відділення якості. Це означає, що в будь-який момент часу QA-середовище, ймовірно, містить декілька нових функцій - деякі перевірені та без помилок, а деякі зламані. Це ускладнює випуск, тому що рідко будова QA знаходиться в стані, готовому до виробництва.
Щоб пом'якшити це, ми намагалися ініціювати «заморожування якості», що означає, що розробники не об'єднують нашу гілку розвитку у гілку QA за пару днів до випуску. Виправлення помилок у середовищі QA виробляються безпосередньо на гілці QA та об'єднуються до гілки розвитку. Теоретично це запобігає виходу нових, порушених функцій із забезпечення якості, в той час як все ще дозволяє нам виправити проблеми, які вже існують в якості.
Незважаючи на те, що ця концепція "заморожування якості якості" була частково успішною, її важко координувати, і люди часто плутаються, чи їм дозволено об'єднатись до якості. Крім того, важко встановити термін "заморожування якості" - всім подобається ідея про деяку дихальну кімнату між заморожуванням і випуском, але на практиці вони, скоріше, мають свою особливість у наступному випуску, ніж дотримуватись цього терміну.
Чи є кращий спосіб забезпечити чисту структуру для наших релізів через кожний тиждень?