pondělí 5. listopadu 2012

Continuous delivery v jPower8


Náš produkt nasazujeme produkci každé dva týdny. Máme tak nastavený sprint cyklus.

 Celý proces je (skoro) plně automatický.


Zdrojáky verzujeme v svn (migraci na git plánujeme).

Stabilitu buildu udržuje TeamCity, které

  • provádí unit testy,
  • spouští seleniové (integrační) testy,
  • nasazuje na testovací prostředí a
  • provádí statickou analýzu kódu.

Doba od commitu do nasazení na test je cca 15 minut.

Pro upečení stabilního verze používáme maven-release-plugin, který se postará o to, že zvedne verzi ve všech pomech, otaguje verzi v svn a uloží upečený build do artifactory. To vše se děje jedním stiskem tlačítka na TeamCity.

Posledním krokem je samotné nasazení waru na produkční prostředí. To dělám kvůli svému pocitu důležitosti ještě stále ručně (a protože nechci, aby TeamCity mělo na produkci přístup).

Samostatnou kapitolou je aplikace migračního databázového skriptu. Ještě donedávna jsme ji prováděli ručně, což sebou neslo riziko lidské chyby a hlavně velkého opruzu.

Pokud je například potřeba přejmenovat sloupec do tabulky, přidat index, změnit constraint, vývojář commitnul migrační sql sript do svn. Dále musel změnu aplikovat u sebe lokálně minimálně na dvou databázích - jedna pro unit testy a druhá pro lokální vývoj. Dále musel změnu provést na testovacím prostředí na dalších třech databázích. Ostatní vývojáři si také museli tuto změnu aplikovat u sebe lokálně. No prostě opruz až na půdu.

Tuto příjemnou činnost jsme hodili na framework flyway. Má přesně takovou složitost, jakou jsme byli ochotni akceptovat. Do databáze přidal jednu tabulku, ze které je naprosto zřejmé, které migrační skripty už v databázi jsou aplikované. Vše je plně automatické a v režii spring beany. Jednoduché jako facka.

A jak jste se zaváděním continuous delivery vy?

pondělí 29. října 2012

Zákaz tisku tlustých knih

Přes víkend jsem zhltnul první díl výborné Přemyslovské epopeje od Vladislava Vondrušky.

Další díl jsem si chtěl koupit v iBook storu, ale pešek! Je vydaná jen papírově! Není to žádná anorektická slečinka, ale pořádná 600ti stránková šťabajzna. Když se podívám na svůj noční stolek, jak se pod náporem jí podobných prohýbá, uvítal bych možnost koupě v elektronické podobě. Přece jen můj iPad má v tomto ohledu větší nosnost než sektorový nábytek.

Nakladatelé, přestaňte knížky tisknout a začněte je vydávat! 

úterý 23. října 2012

Kradu jako umělec

Na iTunes jsem narazil na další pecku nakladatelství Melvil.

Jde o brutálně zjednodušenný výtah rad k odblokování tvůrčího ducha.

Jednu radu jsem hned aplikoval, vytáhl blok, pastelky a design rezervačního formuláře pro náš produkt jdemenato jsem vysmrkl ručně.

Vykradl (nechal se inspirovat) jsem kalendář Googlu, iCalu a Outlooku. Konkurenční systémy jsem ani vykrást nemohl, neb opakující se rezervace vůbec nepodporují.

Pastelky, ořezávátko a papíry jsou už nedílnou součástí mého analogového stolu.

A co vy? Pamatujete si ještě ze školky co jsou to pastelky?

pondělí 12. března 2012

Upgrade maven libraries

Na klasickém maven projektu používáme stabilní verze pluginů – hlavně kvůli stabilitě buildu. Kvůli drobné chybce v pluginu wsimport jsme používali workaround, který upravuje vygenerované zdrojáky. Projížděním konkurenčních blogů jsem zjistil, že tato chyba je od nějaké verze už opravená. To jak jsem to ale zjistil, není vůbec systémové. Jak tedy zjistit, jaké nové verze pluginů nebo knihoven jsou k dispozici, aniž bych musel trávit hodiny na internetu?

Jak už to tak na světě bývá, nejsem první, kdo něco podobného potřebuje. K tomuto účelu dobře poslouží versions plugin. Používal jsem ho dříve jen na zvedání verzí, dnes mi je zvedá teamcity spolu s release pluginem.

Versions plugin toho ale umí mnohem víc.

Např.
mvn versions:display-dependency-updates
vám řekne, jak jste na tom se závislostmi, jestli nevyšel nový spring, hibernate, joda-time apod.

mvn versions:display-plugin-updates
vám zase prozradí, jak jste na tom s aktuálností pluginů.

Pak už záleží jen na vás, jestli upgrade provedete nebo ne.

Upgradu zdar.