Винбилд
47 отговора
1554 прегледа
Винбилд
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 решение. Не ми се четат глупости из хелп-а само за да разбера че нищо неможе да се направи, затова моля, ако имате работещо решение...поствайте :) Мерси.
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 решение. Не ми се четат глупости из хелп-а само за да разбера че нищо неможе да се направи, затова моля, ако имате работещо решение...поствайте :) Мерси.
Re: Винбилд
Пробвай nant.sourceforge.net. Казват, че е заместител на Ant за .NET. Не съм го ползвал но имам намерение в най-скоро време да го направя. Успех и сподели някакви впечатления!
Web Hosting Services - [линк]
Web Hosting Services - [линк]
аха!
Не знаех за тази "мравка".
Мисля, че за моя случай Ant е достатъчно. Един възможен проблем е, че немога да пиша на Java (но аз и на Пърл немога :) ). Иначе засега изглежда обещаващо. Има си готови "tasks" за повечето от нещата които се правят гадно...Ще дръпна една мравка да видя какво може.
Мерси.
Мисля, че за моя случай Ant е достатъчно. Един възможен проблем е, че немога да пиша на Java (но аз и на Пърл немога :) ). Иначе засега изглежда обещаващо. Има си готови "tasks" за повечето от нещата които се правят гадно...Ще дръпна една мравка да видя какво може.
Мерси.
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.
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.
Re: аха!
По принцип доколкото знам ANT е проектиран за да се билдват с него Java проекти. Но нищо не ти пречи да използваш таковете за работа с файлове и директории и да си използваш exec таск-а да си викаш външни приложения.
Ти всъщност какъв сорс искаш да компилираш?
За да пишеш ANT билдове практически не ти трябва да знаеш Java, освен ако не искаш да си пишеш собствени таскове, което не се налага много често.
Аз ти предложих nAnt защото е по близо до windows!
Web Hosting Services - [линк]
Ти всъщност какъв сорс искаш да компилираш?
За да пишеш ANT билдове практически не ти трябва да знаеш Java, освен ако не искаш да си пишеш собствени таскове, което не се налага много често.
Аз ти предложих nAnt защото е по близо до windows!
Web Hosting Services - [линк]
Re: Винбилд
Във VS можеш да задаваш pre и post-build екшъни. Повечето от нещата, които си изброил лесно можеш да ги напишеш в .cmd файлове и да ги зададеш като съответен екшън.
Re: аха!
Ами компилира се програмка за вин32 от C++ сорс. Самото компилиране не е толкова проблем (точно по 1 команда за всеки таргет) . По-големия проблем са другите неща - копиране, триене, правене на директории, преименуване на файлове, архивиране, смятане на делта (делта между два архива)....(просто са много и човек се изморява след всяка операция да проверява дали е успешна).
А иначе на мен .NET нищо не ми говори (по-точно ми говори нещо за топ-левъл домейн, ама ми казаха че не било така :) ) Смятам че Ant ще свърши работа.
А иначе на мен .NET нищо не ми говори (по-точно ми говори нещо за топ-левъл домейн, ама ми казаха че не било така :) ) Смятам че Ant ще свърши работа.
Знам но...
Да занм. Но има проблем(и).
1. Трябва билда да е "чист". Какво имам предвид:
Представи си че си се заровил в някоя гнусотия и вече трети ден копаш сорс. Идва изневиделица шефа и казва: "Оправили са бъг #1289871234 и искам билд ВЕДНАГА!". Неможеш просто да кажеш "Rebild All" щото нищо няма да се компилира! Трябва билда да се направи на чисто. Със чист сорс, прясно взет от репозиторито. Това не е голям проблем -- трябва да подържам оше едно дърво на проекта -- само за билдове. Не дай си боже обаче да пусна (погрешно!) такъв билд върху дървото по което вече трети ден работя....(отиде коня(сорса) у ряката) :)
2. Да направя само някои неща (като пре/пост билд стъпки) не ми върши работа. Аз съм страаааааашно мързелив и не обичам да се замислям докато правя билдове.... :) -- искам ВСИЧКИ неща :)
3. cmd файловете не са въобше за предпочитане пред Пърл. Най-вече защото:
/а/ имам редактиране на файлове директно от билд-скрипта
/б/ много шибан е тоз cmd език. Нищо не му вдявам. :)
Все пак мисля че имаш известно право и малко съжалявам, че не погледнах по-сериозно на тази възможност (а директно я отхвърлих "with extreme prejudice")
1. Трябва билда да е "чист". Какво имам предвид:
Представи си че си се заровил в някоя гнусотия и вече трети ден копаш сорс. Идва изневиделица шефа и казва: "Оправили са бъг #1289871234 и искам билд ВЕДНАГА!". Неможеш просто да кажеш "Rebild All" щото нищо няма да се компилира! Трябва билда да се направи на чисто. Със чист сорс, прясно взет от репозиторито. Това не е голям проблем -- трябва да подържам оше едно дърво на проекта -- само за билдове. Не дай си боже обаче да пусна (погрешно!) такъв билд върху дървото по което вече трети ден работя....(отиде коня(сорса) у ряката) :)
2. Да направя само някои неща (като пре/пост билд стъпки) не ми върши работа. Аз съм страаааааашно мързелив и не обичам да се замислям докато правя билдове.... :) -- искам ВСИЧКИ неща :)
3. cmd файловете не са въобше за предпочитане пред Пърл. Най-вече защото:
/а/ имам редактиране на файлове директно от билд-скрипта
/б/ много шибан е тоз cmd език. Нищо не му вдявам. :)
Все пак мисля че имаш известно право и малко съжалявам, че не погледнах по-сериозно на тази възможност (а директно я отхвърлих "with extreme prejudice")
Re: Винбилд
Що? При теб сами ли се генерират?
Или такива неща са под достойнството на великите програмъри?
Или си ги пишеш за 2 минути на C++? (Използвайки дизайн патърна "билд скрипт"? или пък имаш някакъв темплит?)
Или (най-вероятно) ръчно си сглабяш билда. Така си губиш времето. Да не говорим за огромната вероятност да сбъркаш. Въобще тука май опряхме до комичната реалност: Високоплатени, уважавани, с високо мнение за себеси хора ползват полу-непрофесионални методи. А-М-А-Т-Ь-О-Р-Щ-И-Н-А.
Или такива неща са под достойнството на великите програмъри?
Или си ги пишеш за 2 минути на C++? (Използвайки дизайн патърна "билд скрипт"? или пък имаш някакъв темплит?)
Или (най-вероятно) ръчно си сглабяш билда. Така си губиш времето. Да не говорим за огромната вероятност да сбъркаш. Въобще тука май опряхме до комичната реалност: Високоплатени, уважавани, с високо мнение за себеси хора ползват полу-непрофесионални методи. А-М-А-Т-Ь-О-Р-Щ-И-Н-А.
Re: Винбилд
И от мен един глас за NAnt. Ще ти трябва .НЕТ рънтайм, но пък копиране, триене, създаване на директории и т.н. са тривиални. Малко поддръжката за Ц++ май куца, ние го ползваме за C#, ама сигурно ще се оправиш.
Видях, че си споменал, тая пародия на сорс контрол система ВСС. Има един проект -- Nant-Contrib дето съдържа удобни таскове за работа с нея. <vssget>, <vsslabel>, etc.
--
Екстремно програмиране на български.
[линк]
Видях, че си споменал, тая пародия на сорс контрол система ВСС. Има един проект -- Nant-Contrib дето съдържа удобни таскове за работа с нея. <vssget>, <vsslabel>, etc.
--
Екстремно програмиране на български.
[линк]
Редактирано от Дeшeв на
Re: Винбилд
В отговор на:Аз пък си имам копче F7 и Rebuild all...
И после си имаш "Ми тия два дена не мога да пусна билд, че сорса е много променян", "Айде днес да не билдваме, че много сложно", "Баси пак съм забравил тоя файл" и "Ама на мойта машина работеше"
--
Екстремно програмиране на български.
[линк]
Re: Винбилд
VC++ да работи с нормални мейкфайлове (може ли?)
стариа вц6.0 можеше да компилира през команд лайна и по спомени генерерираше и маке фаил някаде из проекта ( нмаке май му се казваше маке-а, ма може и да баркам )
за нет газарията нямам представа но бих се очудил ако са го разкарали
а за мазането по checkout-натите фаилове истинскиа вин програмист би ползвал Word аутомейшана през JScript
( базика на страна жскрипт-а е доста мощен на малко обаркан и по мое мнение доста слабо документиран )
стариа вц6.0 можеше да компилира през команд лайна и по спомени генерерираше и маке фаил някаде из проекта ( нмаке май му се казваше маке-а, ма може и да баркам )
за нет газарията нямам представа но бих се очудил ако са го разкарали
а за мазането по checkout-натите фаилове истинскиа вин програмист би ползвал Word аутомейшана през JScript
Re: Винбилд
Поразгледах Ант и стигам до извода, че това е начина. Ще видя дали ще е точно Ант или НАнт (за мен е без значение).
Благодаря на всички. Определено имаше полза да питам :)
Благодаря на всички. Определено имаше полза да питам :)
Re: Винбилд
Така плютия VSS има така нареченото хистори. Мога да взимам снапшоти от проекта в произволен момент от съществуването му.
Re: Винбилд
"Видях, че си споменал, тая пародия на сорс контрол система ВСС"
Явно не съм използвал разните адвансед възможности на VSS, но за три години не съм срещал никакви проблеми. Изглежда ми съвсем културна. Ако може да препоръчаш някоя CVS за сравнение?
Явно не съм използвал разните адвансед възможности на VSS, но за три години не съм срещал никакви проблеми. Изглежда ми съвсем културна. Ако може да препоръчаш някоя CVS за сравнение?
Re: Винбилд
Ако може да препоръчаш някоя CVS за сравнение?
Какво значи това? CVS е сорс контрол система. Една от най-добрите. Най-важното предимство според мен спрямо VSS е, че позвoлява няколко човека да работят по един и същ файл, като мърджването става на клиента, който може да оправи конфликтите (ако има) и да commit-не спокойно. Тоест системата работи по оптимистичен модел. За разлика от това, VSS работи по песимистичен модел - един разработчик checkout-ва файла и го заключва. Друг не може да го променя след това. Позволява и няколко човека да checkout-нат файл, но най-интересното е, че мърджването става при commit, което е голяма глупост.
Друга набираща популярност сорс контрол система е Subversion (SVN). Той има всички възможности които има и CVS, но за разлика от него поддържа следене на историята на преименуването (местенето) на файлове и директории. Това е страхотен feature, като се има в предвид, че на всеки му се налага да прави рефакторинг и не иска да си изгуби историята като премести файл.
Web Hosting Services - [линк]
Какво значи това? CVS е сорс контрол система. Една от най-добрите. Най-важното предимство според мен спрямо VSS е, че позвoлява няколко човека да работят по един и същ файл, като мърджването става на клиента, който може да оправи конфликтите (ако има) и да commit-не спокойно. Тоест системата работи по оптимистичен модел. За разлика от това, VSS работи по песимистичен модел - един разработчик checkout-ва файла и го заключва. Друг не може да го променя след това. Позволява и няколко човека да checkout-нат файл, но най-интересното е, че мърджването става при commit, което е голяма глупост.
Друга набираща популярност сорс контрол система е Subversion (SVN). Той има всички възможности които има и CVS, но за разлика от него поддържа следене на историята на преименуването (местенето) на файлове и директории. Това е страхотен feature, като се има в предвид, че на всеки му се налага да прави рефакторинг и не иска да си изгуби историята като премести файл.
Web Hosting Services - [линк]
Re: Винбилд
Хм, бях останал с впечатлението, че CVS е общо наименование за такива системи. Мерси, че ме светна :) Наистина не използваме checkout от повече от един едновременно. Ще поразгледам и CVS и Subversion.