{"id":125,"date":"2009-05-03T21:53:01","date_gmt":"2009-05-03T19:53:01","guid":{"rendered":"http:\/\/www.iprogrammable.com\/2009_05_03\/ksiazka-o-continuous-integration\/"},"modified":"2009-05-03T21:53:01","modified_gmt":"2009-05-03T19:53:01","slug":"ksiazka-o-continuous-integration","status":"publish","type":"post","link":"https:\/\/www.iprogrammable.com\/pl\/2009\/05\/03\/ksiazka-o-continuous-integration\/","title":{"rendered":"(polski) Ksi\u0105\u017cka o Continuous Integration"},"content":{"rendered":"<p>Jednym z moich g\u0142\u00f3wnych zainteresowa\u0144 zawodowych s\u0105 procesy Continuous Integration. Jestem bardzo dumny z pe\u0142nego systemu ci\u0105g\u0142ej integracji, jaki uruchomi\u0142em u mojego pracodawcy kilka lat temu. Od tego czasu regularnie w nim majstruj\u0119 ulepszaj\u0105c to i owo. Niedawno pomy\u015bla\u0142em, \u017ce lata mojej praktyki i do\u015bwiadcze\u0144 z CI mog\u0105 przyda\u0107 si\u0119 innym. Po co \u015bl\u0119cze\u0107 nad problemami, kt\u00f3re ja by\u0107 mo\u017ce ju\u017c rozwi\u0105za\u0142em. Pomy\u015bla\u0142em, \u017ce napisz\u0119 ksi\u0105\u017ck\u0119. Poszukiwania wydawcy w Polsce sprowadzaj\u0105 si\u0119 w\u0142a\u015bciwie do jednego wydawnictwa &#8211; Helion. Maj\u0105 oni <a href=\"http:\/\/helion.pl\/autor\/index-faq-sm.htm\">bardzo ciekaw\u0105 ofert\u0119 dla pocz\u0105tkuj\u0105cych autor\u00f3w<\/a>. Wystarczy dostarczy\u0107 im ankiet\u0119 autorsk\u0105, szczeg\u00f3\u0142owy spis tre\u015bci i jeden rozdzia\u0142 a wydawnictwo rozwa\u017cy podpisanie umowy z autorem i wydanie ksi\u0105\u017cki. Postanowi\u0142em spr\u00f3bowa\u0107 sowich si\u0142. Bardzo roboczy tytu\u0142 mojej ksi\u0105\u017cki to \u201e.NET Continuous Integration za p\u00f3\u0142 darmo\u201d. Ankiet\u0119 autorsk\u0105 Wam podaruj\u0119, ale spis tre\u015bci ksi\u0105\u017cki, kt\u00f3r\u0105 chcia\u0142em napisa\u0107 wygl\u0105da\u0142 tak:<br \/>\n<strong>1. Dlaczego continuous integration?<\/strong><br \/>\na. Automatyzacja = oszcz\u0119dno\u015b\u0107<br \/>\nb. Nie najnowszy wynalazek<br \/>\nc. B\u0105d\u017a zawsze gotowy<br \/>\n<strong>2. Automatyzacja<\/strong><br \/>\na. Kompilacja w jednym kroku<br \/>\nb. NAnt kontra MSBuildc. Automatyzacja procesu budowy za pomoc\u0105 MSBuild<br \/>\n<strong>3. System kontroli wersji<\/strong><br \/>\na. Sine qua non<br \/>\nb. VSS kontra SVN<br \/>\nc. Subversion w akcji<br \/>\nd. Dobre rady w sprawie porz\u0105dku w projekcie<br \/>\n<strong>4. Serwer ci\u0105g\u0142ej integracji<\/strong><br \/>\na. Bez niego ani rusz<br \/>\nb. TFS kontra CC.NET<br \/>\nc. CruiseControl.NET w akcji<br \/>\n<strong>5. Testy jednostkowe<\/strong><br \/>\na. Testy najbli\u017csze materii<br \/>\nb. VSTS kontra NUnit<br \/>\nc. NUnit w akcji<br \/>\nd. Badanie pokrycia testami za pomoc\u0105 NCover<br \/>\n<strong>6. Kontrola procesu ci\u0105g\u0142ej integracji<\/strong><br \/>\na. Wiedzie\u0107, co w trawie piszczy<br \/>\nb. CCTray kontra Dashboard<br \/>\nc. Obaj w akcji<br \/>\nd. Integracja raport\u00f3w (NUnit, NCover) z Dashboardem<br \/>\n<strong>7. Testy akceptacyjne, integracyjne i systemowe<\/strong><br \/>\na. Z tysi\u0105ca st\u00f3p<br \/>\nb. Web: Selenium<br \/>\nc. Windows: NUnitForms<br \/>\nd. Testy Fitnesse<br \/>\n<strong>8. Analiza kodu<\/strong><br \/>\na. Konwencje s\u0105 wa\u017cne<br \/>\nb. Statyczna analiza kodu w FxCop i StyleCop<br \/>\n<strong>9. Wersjonowanie<\/strong><br \/>\na. Gdzie ja jestem?<br \/>\nb. Rozszerzanie MSBuild<br \/>\n<strong>10. Dokumentacja<\/strong><br \/>\na. Nie lubiane dziecko projektu<br \/>\nb. Generowanie dokumentacji w Sandcastle<br \/>\n<strong>11. Dostawa<\/strong><br \/>\na. Zawsze gotowy<br \/>\nb. Publikacja za pomoc\u0105 ClickOnce<br \/>\nc. Tworzenie instalatora w Visual Studio i WiX<br \/>\nPrzyk\u0142adowy rozdzia\u0142 ksi\u0105\u017cki dla wydawnictwa Helion ze zrozumia\u0142ych wzgl\u0119d\u00f3w, nie mo\u017ce by\u0107 wst\u0119pem. Zacz\u0105\u0142em, wi\u0119c od rozdzia\u0142u drugiego. Traktuje on o podstawach MSBuild utrzymuj\u0105c w perspektywie jego wykorzystanie w procesie ci\u0105g\u0142ej integracji.<br \/>\n<strong><a href=\"http:\/\/www.kawalerowicz.net\/Continuous_Integration_MSBuild.pdf\">Oto kompletny rozdzia\u0142 drugi ksi\u0105\u017cki<\/a>.<\/strong><br \/>\nTak przygotowan\u0105 zach\u0119t\u0119 do wydania przes\u0142a\u0142em do wydawnictwa Helion. Niestety odpowied\u017a by\u0142a odmowna:<br \/>\n\u201eDzi\u0119kujemy za nades\u0142an\u0105 propozycj\u0119 autorsk\u0105, jednak bardzo mi przykro, ale nie zdecydujemy si\u0119 na jej wydanie. Naszym zdaniem temat jest zbyt w\u0105ski, \u017ceby m\u00f3g\u0142 zapewni\u0107 satysfakcjonuj\u0105c\u0105 sprzeda\u017c.\u201c<br \/>\nRozumiem i szanuj\u0119 decyzj\u0119\u2026 ale naturalnie uwa\u017cam j\u0105 za b\u0142\u0119dn\u0105 \ud83d\ude09 To by\u0142aby \u015bwietna ksi\u0105\u017cka. Jestem pewny, \u017ce sprzeda\u0142aby si\u0119 w milionowym nak\u0142adzie i otrzyma\u0142bym za ni\u0105, co najmniej Pulitzera, a je\u015bli nie, to przynajmniej <a href=\"http:\/\/www.joltawards.com\/\">Nagrod\u0119 Jolt<\/a>.<br \/>\nTak wiec, je\u015bli jeste\u015b przedstawicielem wydawnictwa, kt\u00f3re by\u0142oby zainteresowane wydaniem tej pere\u0142ki to jestem otwarty na wszelkie propozycje!<\/p>","protected":false},"excerpt":{"rendered":"<p>Jednym z moich g\u0142\u00f3wnych zainteresowa\u0144 zawodowych s\u0105 procesy Continuous Integration. Jestem bardzo dumny z pe\u0142nego systemu ci\u0105g\u0142ej integracji, jaki uruchomi\u0142em u mojego pracodawcy kilka lat temu. Od tego czasu regularnie w nim majstruj\u0119 ulepszaj\u0105c to i owo. Niedawno pomy\u015bla\u0142em, \u017ce lata mojej praktyki i do\u015bwiadcze\u0144 z CI mog\u0105 przyda\u0107 si\u0119 innym. Po co \u015bl\u0119cze\u0107 nad problemami, kt\u00f3re ja by\u0107 mo\u017ce ju\u017c rozwi\u0105za\u0142em. Pomy\u015bla\u0142em, \u017ce napisz\u0119 ksi\u0105\u017ck\u0119. Poszukiwania wydawcy w Polsce sprowadzaj\u0105 si\u0119 w\u0142a\u015bciwie do jednego wydawnictwa &#8211; Helion. Maj\u0105 oni bardzo ciekaw\u0105 ofert\u0119 dla pocz\u0105tkuj\u0105cych autor\u00f3w. Wystarczy dostarczy\u0107 im ankiet\u0119 autorsk\u0105, szczeg\u00f3\u0142owy spis tre\u015bci i jeden rozdzia\u0142 a wydawnictwo rozwa\u017cy podpisanie umowy z autorem i wydanie ksi\u0105\u017cki. Postanowi\u0142em spr\u00f3bowa\u0107 sowich si\u0142. Bardzo roboczy tytu\u0142 mojej ksi\u0105\u017cki to \u201e.NET Continuous Integration za p\u00f3\u0142 darmo\u201d. Ankiet\u0119 autorsk\u0105 Wam podaruj\u0119, ale spis tre\u015bci ksi\u0105\u017cki, kt\u00f3r\u0105 chcia\u0142em napisa\u0107 wygl\u0105da\u0142 tak: 1. Dlaczego continuous integration? a. Automatyzacja = oszcz\u0119dno\u015b\u0107 b. Nie najnowszy wynalazek c. B\u0105d\u017a zawsze gotowy 2. Automatyzacja a. Kompilacja w jednym kroku b. NAnt kontra MSBuildc. Automatyzacja procesu budowy za pomoc\u0105 MSBuild 3. System kontroli wersji a. Sine qua non b. VSS kontra SVN c. Subversion w akcji d. Dobre rady w sprawie porz\u0105dku w projekcie 4. Serwer ci\u0105g\u0142ej integracji a. Bez niego ani rusz b. TFS kontra CC.NET c. CruiseControl.NET w akcji 5. Testy jednostkowe a. Testy najbli\u017csze materii b. VSTS kontra NUnit c. NUnit w akcji d. Badanie pokrycia testami za pomoc\u0105 NCover 6. Kontrola procesu ci\u0105g\u0142ej integracji a. Wiedzie\u0107, co w trawie piszczy b. CCTray kontra Dashboard c. Obaj w akcji d. Integracja raport\u00f3w (NUnit, NCover) z Dashboardem 7. Testy akceptacyjne, integracyjne i systemowe a. Z tysi\u0105ca st\u00f3p b. Web: Selenium c. Windows: NUnitForms d. Testy Fitnesse 8. Analiza kodu a. Konwencje s\u0105 wa\u017cne b. Statyczna analiza kodu w FxCop i StyleCop 9. Wersjonowanie a. Gdzie ja jestem? b. Rozszerzanie MSBuild 10. Dokumentacja a. Nie lubiane dziecko projektu b. Generowanie dokumentacji w Sandcastle 11. Dostawa a. Zawsze gotowy b. Publikacja za pomoc\u0105 ClickOnce c. Tworzenie instalatora w Visual Studio i WiX Przyk\u0142adowy rozdzia\u0142 ksi\u0105\u017cki dla wydawnictwa Helion ze zrozumia\u0142ych wzgl\u0119d\u00f3w, nie mo\u017ce by\u0107 wst\u0119pem. Zacz\u0105\u0142em, wi\u0119c od rozdzia\u0142u drugiego. Traktuje on o podstawach MSBuild utrzymuj\u0105c w perspektywie jego wykorzystanie w procesie ci\u0105g\u0142ej integracji. Oto kompletny rozdzia\u0142 drugi ksi\u0105\u017cki. Tak przygotowan\u0105 zach\u0119t\u0119 do wydania przes\u0142a\u0142em do wydawnictwa Helion. Niestety odpowied\u017a by\u0142a odmowna: \u201eDzi\u0119kujemy za nades\u0142an\u0105 propozycj\u0119 autorsk\u0105, jednak bardzo mi przykro, ale nie zdecydujemy si\u0119 na jej wydanie. Naszym zdaniem temat jest zbyt w\u0105ski, \u017ceby m\u00f3g\u0142 zapewni\u0107 satysfakcjonuj\u0105c\u0105 sprzeda\u017c.\u201c Rozumiem i szanuj\u0119 decyzj\u0119\u2026 ale naturalnie uwa\u017cam j\u0105 za b\u0142\u0119dn\u0105 \ud83d\ude09 To by\u0142aby \u015bwietna ksi\u0105\u017cka. Jestem pewny, \u017ce sprzeda\u0142aby si\u0119 w milionowym nak\u0142adzie i otrzyma\u0142bym za ni\u0105, co najmniej Pulitzera, a je\u015bli nie, to przynajmniej Nagrod\u0119 Jolt. Tak wiec, je\u015bli jeste\u015b przedstawicielem wydawnictwa, kt\u00f3re by\u0142oby zainteresowane wydaniem tej pere\u0142ki to jestem otwarty na wszelkie propozycje!<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,5,6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/posts\/125"}],"collection":[{"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":0,"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iprogrammable.com\/pl\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}