Наскільки важливі щоденні побудови? [зачинено]


20

Одним із критеріїв тесту Джоеля є щоденні побудови . Ідея полягає в тому, що якщо збірка буде порушена, той, хто її порушив, буде навкруги виправити її. Якщо збірку неможливо виправити, кожному доведеться перевірити стару версію та попрацювати над нею. Я можу зрозуміти, як це може бути дуже погано в централізованому контролі версій, коли важливо максимально уникати об'єднання та розгалуження, але це лише звучить як незначна неприємність для розподіленого контролю версій. Чи згодні ви з цим? Чи є інші причини, чому щоденні побудови важливі?


2
Джоель повинен оновити його на "Щоденні побудови та автоматизовані тести"
Пол

1
Або ще краще "безперервна інтеграція з автоматизованими тестами" - іноді ми не будуємо день, іноді будуємо десяток разів на день. Як тільки машини це роблять, це не має значення.
Wyatt Barnett

@WyattBarnett Я повністю погоджуюся =) Я працював над проектом, який починав нарощування коду кожні 15 хвилин (якщо тільки перевірка активності не відбувається), і це було приголомшливо.
Патрік Х'юз

Відповіді:


19

Я думаю, що тут важливо відзначити, що регулярні збірки допомагають вловлювати помилки раніше, ніж пізніше . Він не має бути кожен день, але досить часто. В ідеалі він також може запускати ваші одиничні тести.

Мета полягає в тому, щоб з'ясувати, коли збірка перервана до остаточного етапу тестування, знайти їх якнайшвидше.

Просто встановіть його для створення вашої основної галузі розвитку.

Ми використовуємо його на роботі (хоча ми будуємо щогодини), і часто, коли забуваємо налаштувати, ми виявляємо проблеми за кілька годин до виходу.


2
Щодня будуйте та тестуйте .
Пол

1
@Paul: Тільки якщо ти не можеш це робити частіше. Робити це на кожному вчиненні (ну, з деяким часом гістерезису) приємно.
стипендіати доналу

4

Потрібно додати трохи до цього (і @GoodEnoughs):

але це звучить лише як незначна неприємність для розподіленого контролю версій.

Підкреслимо, що ні - те, що робить "сервер", - це сказати вам, що ваш магістраль буде будувати і проходити свої тести більш чи менш з чистого (тим менше обсяг конфігурації, який потрібно зробити для вашого оточення).

Я замислююся про перехід на DVCS, але навіть зробивши це, ви перетянете мою безперервну інтеграцію з моїх холодних мертвих рук.

Візьмемо простий приклад - ви розробляєте функцію "a" він розробляє функцію "b", яка поширюється, або в якийсь момент вам потрібно зшити все це разом, - якщо, коли ви виконуватимете зобов'язання, ви забудете додати файл, який додаток створить на вашій машині, але більше ніде. Таким чином, коли ви натиснете збірку до свого «магістралі», то безперервна інтеграція запуститься, і збірка буде вийти з ладу, і ви дізнаєтесь і, сподіваємось, перед тим, як хто-небудь витягне ваш не зовсім повний код, ви зможете зробити кроки.

Якщо ви працюєте над проектом з декількома розробниками, ви маєте змогу визначити, звідки беруться версії релізів - фактична магістраль, - це справедливо незалежно від того, як працює ваш контроль версій.

Якщо ви додали функцію, особливо ту, від якої залежать інші люди, - мати можливість бути впевненим, що коли її натискають на «живе», то вона будує та здає тести десь, крім вашого середовища розробників, величезна. Більше того, я розгортаюсь із збірок з мого сервера збірки - його тип того, як можна вказати "остаточну" збірку. Зрештою, у мене виникне збірка розгортання, яку спрацьовує користувач. Його не було добре говорити , що ви можете працювати навколо нього - ви не можете , якщо вам це потрібно (і я вже видерся круглі коробки Дев в офісі , щоб знайти і взяти бракуючі файли).

Це все трохи сильно? Не знаю - але мій сервер побудови - одна з тих речей, які я не маю бажання повертати.


3

Щоденні побудови я вважаю дуже важливими. Якщо у вас є розподілена команда в різних часових поясах, то найкраще знайти час, який приблизно є «кінцем дня» для більшості колективів. Крім того, якщо щоденні збірки мають автоматизований компонент тестування, то це більш бажано.

За часів централізованих систем управління джерелом я б закликав безперервні побудови виконувати кожні 5-10 хвилин, коли щось змінюється у вихідному коді. Оскільки помилка компіляції може сповільнити більшу частину команди. Для організацій, що працюють із системами розподіленого джерела управління, безперервна збірка може знадобитися не так сильно, оскільки розробники рідше торкаються базової коду.


1

В ідеалі, якщо ви не будуєте щось масове, що займає більше півдня, ви б будували більше одного разу на день. Після того, як ви налаштуєте сервер безперервної інтеграції, наприклад Hudson або TeamCity , збірки відбудуться автоматично, як правило, щогодини або на кожній комісії, і ви отримаєте сповіщення про виникнення проблем.

Це хороший спосіб заздалегідь зафіксувати помилки, особливо якщо ви також виконуєте автоматизовані тести в рамках складання. Це особливо корисно для пошуку помилок конфігурації, коли збірка працює на машині одного розробника, але не працює в іншому місці, оскільки щось не було випущено із сховища чи оточення.

Більш просунуті сервери безперервної інтеграції також дозволяють відстежувати показники з часом (наприклад, відсоток покриття коду, час складання, рядки коду тощо)


1

Щоденні збірки в порядку. Ви, безумовно, потрібні їм, якщо у вас немає нічого іншого, крім чесного, я думаю, що тест Джоеля трохи застарів у ці дні.

На мою думку, вам слід постійно будувати весь день, запускаючи тестові приклади свого підрозділу, системного та функціонального рівня, а також ідеально упаковуючи та розгортаючись до такої стадії, як одночасно, перевіряючи, чи існують будь-які механізми версії БД та середовища. працюють як очікувалося.

Якщо час збирання або розгортання є надмірним, тоді варто розглянути можливість усунення деяких із цих проблем з фізичними або програмними дисками, швидшими підключеннями до Інтернету, паралельним складанням і т.д. .


1

Щоденні нарощування не важливі. Щоденні побудови, які завжди є успішними, є (або ті, де вони порушені лише годину). Якщо КІ при збитті збірки 70% часу не дуже корисний, тому що якщо річ здебільшого зламана, це не допоможе вам визначити помилку.


0

Я думаю, що це слід щоденно створювати, тестувати та розгортати на сервері постановки.

Ідея «щоденного побудови» полягає у тому, щоб завжди було готове тестери та керівники проектів, щоб кожен мав уявлення про те, який реальний стан проекту.

Раніше з настільними програмами після "щоденної збірки" тестер або менеджер проектів можуть негайно запустити додаток, тому жодного кроку розгортання не потрібно було згадувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.