Винбилд

47 отговора 1554 прегледа
#1

Винбилд

WinXP.
VC++ .NET незнамкаквоси.
VSS 6?
Екип от 3-4 човека.
Сложен билд процес.
Всекидневен билд.

Какво решение е най-лесно в случая?

В момента съм решил въпроса така:

Един сложен крипт (на Пърл) който:
1. създава директориите (където ще се прави билда и където накрая ще бъде копиран)
2. Взима сорса от VSS (много куц софтуер - не го ползвайте!)
3. checkout-ва, модифицира и chekin-ва файловете,които имат нужда от промяна
4. Билдва .exe -то
5. Копира други (двоични) данни в target директорията, копира .exe-то
6. Пуска exe-то (с параметри) върху данните, за да бъдат създадени разни други файлове които са необходими за окончателната версия.
7. изтрива ненужните файлове
8. Пакетира target и го копира където трябва.

В цялта последователност от действия по-горе непрекъснато се натъквах на проблеми заложени от авторите на един или друг софтуер. (Вин програмките са много Узер не-френдли опре ли работата да автоматизация)
В окончателната си версия скрипта е около 1000 реда (с модулите и конфигурационните файлове) и всеки път когато някой каже "А неможе ли билд скрипта да...." ми се свива сърцето :)

Би ми било интересно да прочета за други подходи. Един от възможните пътища е cygwin и да се накара накак си VC++ да работи с нормални мейкфайлове (може ли?) (ама за това трябва да се накарат и всички хора във фирмата да се навият (а това няма да стане)).

Специално се интересувам от истинско ms-compliant решение. Не ми се четат глупости из хелп-а само за да разбера че нищо неможе да се направи, затова моля, ако имате работещо решение...поствайте :) Мерси.

Отговор
в отговор на G.Kreisel #2

Re: Винбилд

Пробвай nant.sourceforge.net. Казват, че е заместител на Ant за .NET. Не съм го ползвал но имам намерение в най-скоро време да го направя. Успех и сподели някакви впечатления!

Web Hosting Services - [линк]
Отговор
в отговор на RepeatableRead #3

аха!

Не знаех за тази "мравка".
Мисля, че за моя случай Ant е достатъчно. Един възможен проблем е, че немога да пиша на Java (но аз и на Пърл немога :) ). Иначе засега изглежда обещаващо. Има си готови "tasks" за повечето от нещата които се правят гадно...Ще дръпна една мравка да видя какво може.
Мерси.

Отговор
в отговор на RepeatableRead #4

Re: Винбилд

NAnt sym go polzval.
Tam imash razlichni targeti koito mogat da zavisiat edin ot drug - primerno
az imah unit testove, koito zavisiha ot tova dali se buildva ostanaloto.
Vyobshte, v kombinaciq s NUnit e mnogo dobro.

Obache nant konfiguracionnite failove ne sym gi pisal az, taka che tam
mi e malko mygla osven za malki fixove.

Отговор
в отговор на G.Kreisel #5

Re: Винбилд

Аз пък си имам копче F7 и Rebuild all...



Отговор
в отговор на G.Kreisel #6

Re: аха!

По принцип доколкото знам ANT е проектиран за да се билдват с него Java проекти. Но нищо не ти пречи да използваш таковете за работа с файлове и директории и да си използваш exec таск-а да си викаш външни приложения.
Ти всъщност какъв сорс искаш да компилираш?
За да пишеш ANT билдове практически не ти трябва да знаеш Java, освен ако не искаш да си пишеш собствени таскове, което не се налага много често.
Аз ти предложих nAnt защото е по близо до windows!

Web Hosting Services - [линк]
Отговор
в отговор на G.Kreisel #7

Re: Винбилд

Във VS можеш да задаваш pre и post-build екшъни. Повечето от нещата, които си изброил лесно можеш да ги напишеш в .cmd файлове и да ги зададеш като съответен екшън.

Отговор
в отговор на RepeatableRead #8

Re: аха!

Ами компилира се програмка за вин32 от C++ сорс. Самото компилиране не е толкова проблем (точно по 1 команда за всеки таргет) . По-големия проблем са другите неща - копиране, триене, правене на директории, преименуване на файлове, архивиране, смятане на делта (делта между два архива)....(просто са много и човек се изморява след всяка операция да проверява дали е успешна).
А иначе на мен .NET нищо не ми говори (по-точно ми говори нещо за топ-левъл домейн, ама ми казаха че не било така :) ) Смятам че Ant ще свърши работа.

Отговор
в отговор на Paдo #9

Re: Винбилд

Бе моля ти се, кво доживаяхме... Длъжност "писач на билд скриптове".



Отговор
в отговор на Paдo #10

Знам но...

Да занм. Но има проблем(и).

1. Трябва билда да е "чист". Какво имам предвид:
Представи си че си се заровил в някоя гнусотия и вече трети ден копаш сорс. Идва изневиделица шефа и казва: "Оправили са бъг #1289871234 и искам билд ВЕДНАГА!". Неможеш просто да кажеш "Rebild All" щото нищо няма да се компилира! Трябва билда да се направи на чисто. Със чист сорс, прясно взет от репозиторито. Това не е голям проблем -- трябва да подържам оше едно дърво на проекта -- само за билдове. Не дай си боже обаче да пусна (погрешно!) такъв билд върху дървото по което вече трети ден работя....(отиде коня(сорса) у ряката) :)

2. Да направя само някои неща (като пре/пост билд стъпки) не ми върши работа. Аз съм страаааааашно мързелив и не обичам да се замислям докато правя билдове.... :) -- искам ВСИЧКИ неща :)

3. cmd файловете не са въобше за предпочитане пред Пърл. Най-вече защото:
/а/ имам редактиране на файлове директно от билд-скрипта
/б/ много шибан е тоз cmd език. Нищо не му вдявам. :)

Все пак мисля че имаш известно право и малко съжалявам, че не погледнах по-сериозно на тази възможност (а директно я отхвърлих "with extreme prejudice")

Отговор
в отговор на Pekoнcтpykтop #11

Re: Винбилд

Що? При теб сами ли се генерират?
Или такива неща са под достойнството на великите програмъри?
Или си ги пишеш за 2 минути на C++? (Използвайки дизайн патърна "билд скрипт"? или пък имаш някакъв темплит?)
Или (най-вероятно) ръчно си сглабяш билда. Така си губиш времето. Да не говорим за огромната вероятност да сбъркаш. Въобще тука май опряхме до комичната реалност: Високоплатени, уважавани, с високо мнение за себеси хора ползват полу-непрофесионални методи. А-М-А-Т-Ь-О-Р-Щ-И-Н-А.

Отговор
в отговор на G.Kreisel #12

Re: Винбилд

И от мен един глас за NAnt. Ще ти трябва .НЕТ рънтайм, но пък копиране, триене, създаване на директории и т.н. са тривиални. Малко поддръжката за Ц++ май куца, ние го ползваме за C#, ама сигурно ще се оправиш.

Видях, че си споменал, тая пародия на сорс контрол система ВСС. Има един проект -- Nant-Contrib дето съдържа удобни таскове за работа с нея. <vssget>, <vsslabel>, etc.

--
Екстремно програмиране на български.
[линк]

Редактирано от Дeшeв на

Отговор
в отговор на Pekoнcтpykтop #13

Re: Винбилд

В отговор на:

Аз пък си имам копче F7 и Rebuild all...




И после си имаш "Ми тия два дена не мога да пусна билд, че сорса е много променян", "Айде днес да не билдваме, че много сложно", "Баси пак съм забравил тоя файл" и "Ама на мойта машина работеше"

--
Екстремно програмиране на български.
[линк]
Отговор
в отговор на G.Kreisel #14

Re: Винбилд

VC++ да работи с нормални мейкфайлове (може ли?)

стариа вц6.0 можеше да компилира през команд лайна и по спомени генерерираше и маке фаил някаде из проекта ( нмаке май му се казваше маке-а, ма може и да баркам )
за нет газарията нямам представа но бих се очудил ако са го разкарали

а за мазането по checkout-натите фаилове истинскиа вин програмист би ползвал Word аутомейшана през JScript ( базика на страна жскрипт-а е доста мощен на малко обаркан и по мое мнение доста слабо документиран )

Отговор
в отговор на G.Kreisel #15

Re: Винбилд

Поразгледах Ант и стигам до извода, че това е начина. Ще видя дали ще е точно Ант или НАнт (за мен е без значение).
Благодаря на всички. Определено имаше полза да питам :)

Отговор
в отговор на Дeшeв #16

Re: Винбилд

Така плютия VSS има така нареченото хистори. Мога да взимам снапшоти от проекта в произволен момент от съществуването му.



Отговор
в отговор на Дeшeв #17

Re: Винбилд

"Видях, че си споменал, тая пародия на сорс контрол система ВСС"

Явно не съм използвал разните адвансед възможности на VSS, но за три години не съм срещал никакви проблеми. Изглежда ми съвсем културна. Ако може да препоръчаш някоя CVS за сравнение?

Отговор
в отговор на Paдo #18

Re: Винбилд

Ако може да препоръчаш някоя CVS за сравнение?
Какво значи това? CVS е сорс контрол система. Една от най-добрите. Най-важното предимство според мен спрямо VSS е, че позвoлява няколко човека да работят по един и същ файл, като мърджването става на клиента, който може да оправи конфликтите (ако има) и да commit-не спокойно. Тоест системата работи по оптимистичен модел. За разлика от това, VSS работи по песимистичен модел - един разработчик checkout-ва файла и го заключва. Друг не може да го променя след това. Позволява и няколко човека да checkout-нат файл, но най-интересното е, че мърджването става при commit, което е голяма глупост.
Друга набираща популярност сорс контрол система е Subversion (SVN). Той има всички възможности които има и CVS, но за разлика от него поддържа следене на историята на преименуването (местенето) на файлове и директории. Това е страхотен feature, като се има в предвид, че на всеки му се налага да прави рефакторинг и не иска да си изгуби историята като премести файл.

Web Hosting Services - [линк]
Отговор
в отговор на RepeatableRead #19

Re: Винбилд

Хм, бях останал с впечатлението, че CVS е общо наименование за такива системи. Мерси, че ме светна :) Наистина не използваме checkout от повече от един едновременно. Ще поразгледам и CVS и Subversion.

Отговор
в отговор на Paдo #20

Re: Винбилд

Пробвай, няма да съжеляваш!
И успех!

Web Hosting Services - [линк]
Отговор