Predavanje sa JavaCro14 koje na primjeru CROZ-ovog proizvoda LikeMyIdea pokazuje automatizaciju release-a i instalacije. Korišteni alati i jezici: Maven, Groovy, Ant,
Jython, Shell (Batch).
2. • LIKE MY IDEA is a social business solution that provides gathering
organizational ideas in just one place ... with lean thinking and visual
management, leading to continuous improvement process.
7. Maven Assembly Plugin
• „... build distribution "assemblies" easily, using one of the
convenient, prefabricated assembly descriptors”
8. Priprema servera za
instalaciju aplikacije
• Potrebno je kreirati resurse
• Shared library (lmi-eh)
• Work Manager
• JMS resurse (queue, JNDI)
• JDBC Datasource
• Promijeniti nekoliko config datoteka
• Konfiguriranje IBM Connectionsa se radi kroz XML datoteke
• check out
• modify
• check in
9. Instalacija aplikacije
• Kopiranje shared biblioteke lmi-eh
• Dodavanje iste kao shared u News aplikaciju
• Instalacija lmi-rest EAR aplikacije
• Update samo jedne datoteke u Blog aplikaciji
• blog template
10. Kako ubrzati instalaciju?
• Automatizacija
• Sve što je moguće napraviti programski, napraviti tako
• Lakše je kada aplikacijski server ima podršku za
automatizaciju
• „The wsadmin tool runs scripts. You can use the wsadmin
tool to manage application servers as well as the
configuration, application deployment, and server runtime
operations.”
• Ništa ne „uklesati u kamen”
• modularno i konfigurabilno
11. Priprema servera za
instalaciju aplikacije
• Potrebno je kreirati resurse
• Shared library (lmi-eh)
• Work Manager
• JMS resurse (queue, JNDI)
• JDBC Datasource
• Promijeniti nekoliko config datoteka
• Konfiguriranje IBM Connectionsa se radi kroz XML datoteke
• check out
• modify
• check in
12. Instalacija aplikacije
• Kopiranje shared biblioteke lmi-eh
• Dodavanje iste kao shared u News aplikaciju
• Instalacija lmi-rest EAR aplikacije
• Update samo jedne datoteke u Blog aplikaciji
• blog template
14. kontrolni program
• Zašto Groovy?
• Java je već instalirana na serveru
• Za rad dovoljan groovy-all.jar
• Out-of-the-box Commons CLI
• Samo jedna skripta za Linux/Win
• Na raspolaganju sve Java biblioteke
• Konfiguracija kroz property datoteku
• Dobra podrška za pokretanje sistemskih procesa
• groovy -e
"'ls'.execute().waitForProcessOutput(System.out, Sys
tem.err)"
18. Prilagodbe Connectionsa
• Zadatak: kopirati resurse (customizations) u direktorij
• Opasnosti: resursi već mogu biti u istoj putanji
• Rješenje: Groovy AntBuilder
19. JAXB – Update XML
konfiguracije
• Connections widgeti se registriraju ažuriranje XML
konfiguracije
• Maven jaxb2-maven-plugin (xjc, .xsd -> .Java)
LMI je socialaplikacija.. U centru LMI su ideje. Ideje se prikupljaju kako bi kompanije što bolje implementirali lean principe.Za mene lean je prvensteno nastojanje da se ukloni smeće (waste). To je moguće kroz poboljšanja kvalitete našeg proizvoda/poslovnjakonstantno učenjeuključivanja što većeg skupa ljudi u naš proces odlučivanja (crowdsourcing)Proces prikupljanja, pregledavanja, odlučivanja je podložan konstantnim promjenama kako bi s vremenom postao sve bolji.
LMI je implementirana kao Java web aplikacija (lmi-rest) koja je integrirana sa IBM Connectionssocial platformom. IBM Connections platforma se također sastoji od više Java aplikacija. Sa nekima od njih se naša aplikacija integrira. Primjer integracijsu su:REST Atom integracija (Atom feed, XML)JMS integracija za live updates (posts, likes, memberchanges...) posebna java biblioteka lmi-eh sharedlibraryLMI user uvijek koristi Connections web sučelje. Ono je nadograđeno LMI widgetima, akcijama, badgevima (gamification).
LMI razvijamo po Scrumframeworku. To znači da nakon 3 tjedna koliko nam traje sprint kreiramo novi release aplikacije. Release aplikacije se obično deploya na jedan (ili više) testnih okolina. Da bi potrošili što manje vremena na tu akciju potrebna nam je pomoć alata. Kod držimo na SVN-u. Željeno konačno stanje na svnu-u nakon release je da imamo tagiranu verziju u posebombranchu kako bi mogli raditi eventualne ispravke.Alat koji nam omogućuje da ove akcije napravimo na „jedan klik” je Jenkins. Jenkins ima definiran buildjob koji dohvaća kod sa SVN-a. Pošto koristimo Maven za release nam je prirodno koristiti MavenReleasePlugin.MavenReleaseplugin radi željeni release. Release se radi kroz sljedeće korake:Check that there are no uncommitted changes in the sourcesCheck that there are no SNAPSHOT dependenciesChange the version in the POMs from x-SNAPSHOT to a new version (you will be prompted for the versions to use)Transform the SCM information in the POM to include the final destination of the tagRun the project tests against the modified POMs to confirm everything is in working orderCommit the modified POMsTag the code in the SCM with a version name (this will be prompted for)Bump the version in the POMs to a new value y-SNAPSHOT (these values will also be prompted for)Commit the modified POMsNa kraju se releasani artefakt (EAR) publishira na Nexus interni repozitorij. Repozitorij se koristi za kasnije korake kada radimo instalacijski paket naše aplikacije.
Release arhiva (EAR) nije dovoljno da bi mi napravili release (instalacijsku arhivu) LMI-a. To znači da osim EAR arhive u našu instalaciju moramo upakirati i sljedeće artefakte...
Kako sam spomenuo trenutno releaseni EAR (i eventhandler biblioteka su na NexusMaven repozitoriju). Naš release projekt koristi Maven kako bi downloadao sve potrebne dependancy-e i pripremio za pakiranje u instalacijsku arhivu.
Još jedan koristanMavenplugin koji nam uvelike pomaže u kreiranju instalacijske arhive je MavenAssemblyPlugin. Možda ste ga već i koristili tako da ste koristili jedan od već dostupnih assemblydescriptora:binjar-with-dependenciessrcprojectNpr. projectassemblydescriptor omogućava kreiranjezip arhive cijelog projekta (bez build direktorija). Mi smo napisali svoj deskriptor kako bi izgradili strukturu zip arhive prema našim zamislima.