Чи можете ви зробити збірку за один крок?


14

З тесту Джоеля :

Чи можете ви зробити збірку за один крок?

Я повинен сказати, що не можу. Зараз я працюю над веб-додатком, у якому є список елементів, які необхідно виконати для розгортання. Тож моє запитання - як я можу це автоматизувати ? Чи має бути організація в цілому? Поради / методи?


3
Це залежить від того, які елементи в списку? В ідеалі, так, ви повинні мати можливість його автоматизувати.
Ніхто

4
en.wikipedia.org/wiki/Build_automation BTW: Деякі зупиняються на один крок - це занадто багато :)
Mchl

Всілякі - переміщення файлів, скрипт із збережених процедур тощо - є 14 кроків!
billy.bob

2
З іншого боку, що у списку ви вважаєте, що не можете автоматизуватись?
Тянна

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

Відповіді:


10

Make може автоматизувати процес збирання в один крок. Make може робити майже все, що завгодно. Я не впевнений, чому саппоро вважає, що Make застосовується лише до C / C ++. Ви можете використовувати make для запуску будь-якого типу команд. Він навіть не пов'язаний з програмуванням, хоча саме для цього зазвичай використовується.


2
make є одним із таких інструментів "швейцарський армійський ніж"; люблю працювати з цим. Ще дещо слід зазначити, де зробити корисним буде те, що якщо ви автоматизуєте збирання / процес / тощо, і один або кілька кроків залежать від успішного завершення іншого, зробіть зупинку, якщо цей крок не вдасться, не дозволяючи цим іншим крокам просуватися і можливо, спричинить проблеми.
Чи буде

1
Оскільки у багатьох програмах "nix додатки / системи встановлено" ./configure; зробити; Зробити встановлення "Я думаю, що також зростає вдвічі як двигун установки. Якщо він може це зробити, я також впевнений, що це може вирішити склад ОП.
JBRWilkinson

Зробіть, але синтаксис досить незрозумілий. На сьогоднішній день я стикався з 2 альтернативами: SCON (набагато простіше, ніж Make + makedepend) та інструмент для автоматизації створення Makefile (фірмового).
Матьє М.

@JbRWilkinson ... як я вже сказав, можна зробити дуже багато всього, що ти хочеш;)
Pemdas

3

Залежно від вашого оточення, ви можете подивитися на Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - це ті, з ким я знайомий. Швидше за все, є популярне рішення для вашого оточення.


Його середовище ASP.NET / SQL
billy.bob

@ m.edmondson - тоді cruisecontrol.sourceforge.net - це, мабуть, ваш шлях
bobah

Ще одне хороше середовище безперервної інтеграції для ASP.NET - TeamCity. Я використовував CruiseControl та TeamCity, і я виявив, що TeamCity трохи простіший у використанні та трохи потужніший. Але це вже не може бути так.
RationalGeek

NANT - це .NET ANT варіант, який ми добре використовували як доповнення до круїз-контролю, який я не використовував би для створення коду для розгортання, де ви хочете отримати кілька додаткових речей, включених / налаштованих / встановлених та змінених параметрів тощо. . Саме в цьому ANT / NANT хороші.
Джон Хопкінс

Я другий на пропозицію @Jon Hopkinds - nant - це чудова відповідність для вашого оточення.
JBRWilkinson

3

У роботі ми використовуємо FinalBuilder , завдяки якому легко налаштувати скрипт для автоматизації всього процесу: перевірити код, створити все, запустити тести, створити пакет розгортання тощо.

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


0

Впевнені, що є спосіб автоматизувати це. За допомогою таких інструментів, як шеф-кухар , налаштування абсолютно нового щойно встановленого сервера може бути таким же простим, як:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

У моєму випадку кілька кроків, виконаних цією єдиною командою, є:

  • Встановіть необхідні бібліотеки, програми та модулі Python
  • Створюйте нових користувачів із вказаними доступними правами доступу
  • Створюйте нові бази даних, завантажуйте потрібну схему, встановлюйте права власності та права доступу
  • Завантажте та встановіть код проекту, а потім випишіть інформацію про конфігурацію
  • Привести все у виробничий режим, запустивши сервери баз даних, налаштувавши завдання cron тощо.

Я не впевнений, як шеф-кухар буде працювати у вашому середовищі, оскільки підтримка Windows вказана як «попередня», але для системи на базі UNIX це коліна бджіл.

Лялька - це схожа система, яка трохи старша від шеф-кухаря і може запропонувати кращу підтримку Windows.


0

З Maven у світі Java це просто

mvn clean deploy

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

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

Артефакт знімку (WAR) копіюється в сховище Maven для спільного використання з іншими розробниками (відповідно до стандартної deployповедінки Maven ).

Гаразд, але ви розгорнули лише знімок для розробника, а як щодо тесту та виробництва?

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

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

Нарешті, після того, як всі тестувальники щасливі, незмінний файл WAR SFTP'd до кластеру сервера аварійного виробництва, коли хтось пильно стежить і негайне місце відкату на місці у випадку катастрофи.


0

Я подумав, що можу перевірити це на нашому тесті Джоела так ...

Я зробив сервер збірки в python автоматизовано його за допомогою pychron .

Код був синхронізований з VSS з командного рядка, будуйте з borland make (більшість IDE створюватимуть файли для вас, незалежно від того, вони їх називають чи ні. Delphi використовувався для викачування файлів і виклику їх .BPG файли, тепер вони ' re MSBuild XML-файли, і ви можете використовувати MSBuild), а помилки були введені у XML-файл, до якого я щойно продовжував додавати.

Отже .. Просто напишіть пакетний файл і зробіть ці речі.

  1. Синхронізуйте код з управління джерелами
  2. Видаліть тупі речі (окремі конфігураційні файли для проектів), які, як ви знаєте, не дозволять вам будувати все.
  3. Побудуйте все (я б все збудував, зробив би брата).
  4. Реєструйте свої помилки, попередження та інше, але не припиняйте створювати. (Якщо ви справді розумні, ви отримаєте ім’я останньої людини, щоб перевірити файл, який призвів до розриву збірки, і надішлете йому негідну програму)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.