Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Delivery automation roadmap

627 vues

Publié le

Prezsentation at DevClub.lv about software delivery process automatization.
In talk I summarize our company experience about delivery automation process.

Publié dans : Technologie
  • Soyez le premier à commenter

Delivery automation roadmap

  1. 1. Delivery automation roadmap / Ceļš uz automatizētām piegādēm Jānis Baiža @jbaiza
  2. 2. Oracle pieredze > 10 gadi. Oracle, .NET, Ruby, Java 1 – 20+ cilvēki projektā Dažādas piegāžu automatizācijas pakāpes
  3. 3. Dibināta: 04.06.2014 apvienojoties SIA Special Solutions, SIA eBIT unSIA Open ID Darbinieki: ~100 Tehnoloģijas: Oracle PL/SQL, Java, Ruby, Microsoft .NET, ĢIS
  4. 4. Jautājumi par automatizāciju Vai izmanto automatizāciju? Kādus rīkus izmanto (Jenkins/Bamboo/cits) Vai esi pārliecināts par to, ka piegādes sagatavošana/uzstādīšana ies pēc plāna? – Ļoti pārliecināts – 50/50 – Neesmu pārliecināts
  5. 5. Rīki
  6. 6. JENKINS https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins
  7. 7. Vienkārša instalācija java -jar jenkins.war.
  8. 8. Viegla konfigurēšana Visa konfigurācija no UI ar paskaidrojumiem, nav nepieciešama XML labošana vai kas cits tamlīdzīgs.
  9. 9. Izmaiņu kopas Jenkins var ģenerēt izmaiņu sarakstus no Subversion/CVS.
  10. 10. Rezultātu paziņošana Būvējumu rezultāti RSS/E-pastā vai reālā laika paziņojumi. Build Notifiers – vairāk kā 50 spraudņi – Skype – Google calendar – IRC – Sladiator
  11. 11. JUnit/TestNG testu atskaites Testu atskaites var tikt analizētas un vizuāli attēlotas ar vēsturisko informāciju.
  12. 12. Sadalītie būvējumi Jenkins var sadalīt būvējumu veikšanas/testu slodzi starp vairākiem datoriem un dažādiem OS.
  13. 13. Spraudņu atbalsts Jenkins funkcionalitāte var tikt paplašināta ar trešo pušu spraudņiem (vairāk par 900 dažādiem)
  14. 14. Java/Ant/Maven versijas Iespējams definēt fiksētas produktu versijas un projektā izmantot nepieciešamo versiju
  15. 15. Izmaiņu piegādes process Izstrāde Vienībtesti Testēšana Piegādes pakas sagatavošana Piegādes uzstādīšana PiegādePiegāde
  16. 16. IZMAIŅU IZSTRĀDE
  17. 17. Izmaiņu izstrāde – manuāli Rakstīt pārbaudes vai tabula izveidota/kolonna pievienota u.t.t. Manuāla formu un citu objektu nogāde uz aplikāciju serveri.
  18. 18. Izmaiņu izstrāde/sagatavošana commit-am - automatizēšana Atkārtoti darbināmi skripti: – Pārbaude par iespēju veikt darbību – Skriptu reģistrs, lai nemēģina izpildīt otru reizi Gatavi paraugi dažādām darbībām (CREATE TABLE/ALTER TABLE/CREATE INDEX, u.t.t.) Automatizācijas iespējas: – Konvertācija no ruby migrācijām – DB struktūras salīdzināšana ar VCS – Formu un citu objektu nogāde uz aplikāciju serveri – lokāli darbināms “piegādes savākšanas” skripts
  19. 19. Commit testa DB / Vienībtestu automātiska darbināšana Pēc commit automātiska DB izmaiņu uzlikšana testa DB – Pārbauda vai skripti darbosies – Sagatavo vidi vienībtestiem Vienībtestu automātiska darbināšana
  20. 20. IZMAIŅU NOGĀDĀŠANA TESTĒŠANAI
  21. 21. Izmaiņu nogādāšana testēšanai - manuāli Izmainīto failu savākšana ar rokām, piemēram, pēc SVN log. Izmainīto aplikāciju servera failu kopēšana uz serveri. DB piegādes uzstādīšanas kopējais SQL skripts. Pieteikumu statusu maiņa (bulk edit)
  22. 22. Izmaiņu savākšana/sagatavošana Java/.NET – Maven, Ant, MSBuild Oracle Forms/Reports, DB (ja nepiegādā ar app migrācijām) – savāc izmaiņas no repozitorija – Instalācijas secība • Stingri definēta starp dažāda veida objektiem (Tabulas -> Indeksi -> Skati -> … -> Procedūras -> … -> Dati -> … -> Oracle Forms -> … • Commit secībā • Objekta ietvaros alfabētiski
  23. 23. Izmaiņu uzstādīšana Java – uzkopē war/ear/jar .NET – web deploy/copy Ruby – Capistrano Oracle Forms/Reports, DB (ja nepiegādā ar app migrācijām) – “master” skripts, kurā definētas darbības dažāda veida objektu uzstādīšanai – ģenerēts skripts ar visām uzstādāmajām izmaiņām.
  24. 24. Savākšanas/Uzstādīšanas automatizēšana Maven, Ant, MSBuild – Jenkins iebūvēts/plug-in Shell/Powershell skriptu darbināšana no Jenkins Integrācija ar Jira - Jira Issue Updater Plugin
  25. 25. PIEGĀDES PAKAS SAGATAVOŠANA
  26. 26. Piegādes pakas sagatavošana Piegādes failu savākšana Arhīva izveidošana Arhīva kopēšana uz serveri Piegādes dokumentācijas “dzejošana” Izmaiņas pieteikumu sistēmā (statusi/versijas/komentāri)
  27. 27. Nogādāšana līdz klientam SFTP Repozitorijs commit -> push -> instalē pēc tag Direct build (ja ir piekļuve klienta vidēm) Caur e-pastu, caur JIRA Slikti: Repozitorijā iekommitots sakompilēts binārais fails Slikti: Klients pats build-o – var nesakrist darbstacijas konfigurācijas, pastāv iespēja, ka pielabos kodu.
  28. 28. Pakas informācija Informācija par piegādi – Ar roku rakstīts -> E-pasts no template -> Automātiski aizpildīts template -> Nosūtīts/pārsūtīts gatavais e-pasts Statusu maiņa/komentāri pie pieteikuma Piegādes dokumentācija – Eksports no pieteikumu sistēmas – Ģenerēts • Caur JIRA API • Markdown (teksts -> PDF)
  29. 29. Pakas uzstādīšana Maksimāli automatizēts, bet ar monitorēšanas un reaģēšanas iespēju. – NOATTEND_INSTALL, NOATTEND_LEVEL • There was a warning during installation. Press enter to continue • There was an error during installation. Do you wish to continue [y|n] Rollback uz iepriekšējo versiju Atgriezeniskā saite par versijas uzlikšanu – Master -> Test -> Prod
  30. 30. “ONE CLICK” AUTOMATIZĀCIJA
  31. 31. Jenkins / Build pipeline
  32. 32. Jenkins / Build pipeline (2)
  33. 33. KOPSAVILKUMS
  34. 34. Manuāli Neliels izmaiņu apjoms Nē!
  35. 35. Automatizēšana - Legacy projekti Necenties automatizēt bardaku – var būt ilgi un neoptimāli. Jāmaina domāšana pašiem/klientam. Automatizēšana ir laikietilpīga. Automatizācija kā apakšprojekts. Nevajag uzreiz 100% - galvenais sākumā karkass, uz kura būvēt. Kļūdu novēršana var būt laikietilpīga. Kļūdas piegādes savākšanā var izraisīt problēmas sistēmā. Atkārtojami instalējami skripti. Never ending story – vienmēr ir vieta uzlabojumiem.
  36. 36. Automatizēšana - Jauni projekti Jau uzsākot izmantot arhitektūru, kas atvieglo piegāžu automatizēšanu Pēc iespējas, dalīt neatkarīgi piegādājamos moduļos - high cohesion, low coupling
  37. 37. Paldies par uzmanību! Jautājumi?
  38. 38. Feedback  
  39. 39. Sponsors of XXIX DevClub.lv

×