Я в шоці - і справді здивований - числом відповідей тут сказати "не оновлювати, якщо не потрібно". Я це зробив, і хоча це простіше за короткий термін, він згорає як пекло в довгостроковій перспективі. Частішими, меншими оновленнями є набагато, набагато простіше керувати, ніж інколи великі, і ви швидше отримуєте користь від нових функцій, виправлень помилок тощо.
Я не купую цю думку, що зміни бібліотеки якось складніше перевірити, ніж зміни коду. Це точно так само - ви вносите зміни в базу коду, і вам потрібно перевірити її перед тим, як зробити їх, і більш глибоко перед випуском. Але для цього ви вже повинні мати процеси, оскільки ви вносите зміни коду!
Якщо ви працюєте в ітераціях тривалістю від двох до чотирьох тижнів, я б запропонував зробити оновлення бібліотек одноразово на кожну задачу ітерації, щоб зробити її якнайшвидше після початку, коли все буде дещо спокійніше, ніж безпосередньо перед ітерацією кінцевий термін, і проект має більше можливостей сприйняти зміни. Попросіть когось (або пару, якщо ви займаєтесь парним програмуванням), щоб сісти, подивитися, які бібліотеки оновлено, і спробуйте залучити кожну з них і запустити відновлення та тест. Бюджет від півдня до дня на кожну ітерацію, можливо. Якщо все працює, перевірте зміни (я припускаю, що ви зберігаєте бібліотеки в контролі джерел, як і ми; я не впевнений, як ви контролювали б зміни, якщо це не так). Це, очевидно, буде набагато простіше, якщо у вас є автоматизовані тести, ніж якщо тестування повністю ручне.
Тепер питання полягає в тому, що ви робите, якщо оновлення порушує речі - чи витрачаєте ви час на їх виправлення, чи залишаєте його? Я б запропонував схилитися до останнього; якщо це можна буде виправити за годину, зробіть це, але якщо оновлення потребує значної роботи для інтеграції, тоді підніміть його як своє власне завдання розвитку, яке буде оцінено, встановлено пріоритетність та заплановано так само, як і будь-яке інше. Шанси полягають у тому, що, якщо це не призведе до надзвичайно важливих виправлень або покращення, пріоритет буде низьким, і ви його ніколи не обійдете. Але ніколи не знаєш, до моменту, коли наступне ітераційне оновлення дня прокручується, проблема, можливо, сама по собі виправиться; навіть якщо ні, то, принаймні, тепер ви знаєте, що на шляху оновлення є блокпост, і це не застане вас зненацька.
Якщо ви не робите ітерацій такої тривалості, я б створив якийсь окремий графік оновлень - не довше щомісяця. Чи є якийсь інший ритм проекту, з яким ви могли би його пов’язати, наприклад, щомісячний огляд статусу чи засідання ради архітектури? День оплати? Ніч піци? Повний місяць? Як би там не було, вам потрібно знайти щось набагато коротший, ніж традиційний цикл випуску, адже намагання оновлювати все за один раз кожні 6-18 місяців буде болісним і деморалізуючим.
Зайве говорити, що якщо ви робите гілки стабілізації до випусків, ви не застосовували б цю політику до них. Там ви лише оновили бібліотеки, щоб отримати критичні виправлення.