39
Delivery automation roadmap / Ceļš uz automatizētām piegādēm Jānis Baiža @jbaiza

Delivery automation roadmap

Embed Size (px)

Citation preview

Page 1: Delivery automation roadmap

Delivery automation roadmap / Ceļš uz automatizētām piegādēm

Jānis Baiža

@jbaiza

Page 2: Delivery automation roadmap

Oracle pieredze > 10 gadi.

Oracle, .NET, Ruby, Java

1 – 20+ cilvēki projektā

Dažādas piegāžu automatizācijas pakāpes

Page 3: Delivery automation roadmap

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

Page 4: Delivery automation roadmap

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

Page 5: Delivery automation roadmap

Rīki

Page 6: Delivery automation roadmap

JENKINS

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

Page 7: Delivery automation roadmap

Vienkārša instalācija

java -jar jenkins.war.

Page 8: Delivery automation roadmap

Viegla konfigurēšana

Visa konfigurācija no UI ar paskaidrojumiem, nav nepieciešama XML labošana vai kas cits tamlīdzīgs.

Page 9: Delivery automation roadmap

Izmaiņu kopas

Jenkins var ģenerēt izmaiņu sarakstus no Subversion/CVS.

Page 10: Delivery automation roadmap

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

Page 11: Delivery automation roadmap

JUnit/TestNG testu atskaites

Testu atskaites var tikt analizētas un vizuāli attēlotas ar vēsturisko informāciju.

Page 12: Delivery automation roadmap

Sadalītie būvējumi

Jenkins var sadalīt būvējumu veikšanas/testu slodzi starp vairākiem datoriem un dažādiem OS.

Page 13: Delivery automation roadmap

Spraudņu atbalsts

Jenkins funkcionalitāte var tikt paplašināta ar trešo pušu spraudņiem (vairāk par 900 dažādiem)

Page 14: Delivery automation roadmap

Java/Ant/Maven versijas

Iespējams definēt fiksētas produktu versijas un projektā izmantot nepieciešamo versiju

Page 15: Delivery automation roadmap

Izmaiņu piegādes process

Izstrāde Vienībtesti Testēšana

Piegādes pakas sagatavošana

Piegādes uzstādīšana

PiegādePiegāde

Page 16: Delivery automation roadmap

IZMAIŅU IZSTRĀDE

Page 17: Delivery automation roadmap

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.

Page 18: Delivery automation roadmap

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

Page 19: Delivery automation roadmap

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

Page 20: Delivery automation roadmap

IZMAIŅU NOGĀDĀŠANA TESTĒŠANAI

Page 21: Delivery automation roadmap

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)

Page 22: Delivery automation roadmap

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

Page 23: Delivery automation roadmap

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.

Page 24: Delivery automation roadmap

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

Page 25: Delivery automation roadmap

PIEGĀDES PAKAS SAGATAVOŠANA

Page 26: Delivery automation roadmap

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)

Page 27: Delivery automation roadmap

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.

Page 28: Delivery automation roadmap

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)

Page 29: Delivery automation roadmap

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

Page 30: Delivery automation roadmap

“ONE CLICK” AUTOMATIZĀCIJA

Page 31: Delivery automation roadmap

Jenkins / Build pipeline

Page 32: Delivery automation roadmap

Jenkins / Build pipeline (2)

Page 33: Delivery automation roadmap

KOPSAVILKUMS

Page 34: Delivery automation roadmap

Manuāli

Neliels izmaiņu apjoms

Nē!

Page 35: Delivery automation roadmap

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.

Page 36: Delivery automation roadmap

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

Page 37: Delivery automation roadmap

Paldies par uzmanību! Jautājumi?

Page 38: Delivery automation roadmap

Feedback

Page 39: Delivery automation roadmap

Sponsors of XXIX DevClub.lv