delivery automation roadmap

Post on 07-Aug-2015

2.073 Views

Category:

Software

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Jānis Baiža

@jbaiza

Oracle pieredze > 10 gadi.

Oracle, .NET, Ruby, Java

1 – 20+ cilvēki projektā

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

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

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

Rīki

JENKINS

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

Vienkārša instalācija

java -jar jenkins.war.

Viegla konfigurēšana

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

Izmaiņu kopas

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

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

JUnit/TestNG testu atskaites

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

Sadalītie būvējumi

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

Spraudņu atbalsts

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

Java/Ant/Maven versijas

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

Izmaiņu piegādes process

Izstrāde Vienībtesti Testēšana

Piegādes pakas sagatavošana

Piegādes uzstādīšana

PiegādePiegāde

IZMAIŅU IZSTRĀDE

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.

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

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

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

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)

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

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.

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

PIEGĀDES PAKAS SAGATAVOŠANA

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)

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.

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)

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

“ONE CLICK” AUTOMATIZĀCIJA

Jenkins / Build pipeline

Jenkins / Build pipeline (2)

KOPSAVILKUMS

Manuāli

Neliels izmaiņu apjoms

Nē!

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.

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

Paldies par uzmanību! Jautājumi?

Feedback

Sponsors of XXIX DevClub.lv

top related