====== Jenkins - integracne kompilacne prostredie ======
Jenkins - pokrocile integracne kontinualne prostredie je zalozene na 'castom' kompilvoani zdrojovych kodov spolu s pustenim a vyhodnotenim testov.
===== Adresa prostredia =====
[[http://192.168.241.6:8080]]
login: jenkins \\
password: ako na phoenixe
===== Prihlasenie do prostredia =====
Kazdy vyvojar ma vytvoreny ucet pre prihlasenie sa do prostredia. V pripade, ze nemate vytvoreny ucet, kontaktujte sipikal@transdata.sk
===== Konzolovy pristup na server =====
Konzolovy pristup maju nasledovny uzivatelia:
**jenkins** - plny pristup \\
**kuchar** - pristu na priecinky:
/home/jenkins/git/
/home/jenkins/tmp/
Pristup je rieseny pomocou vytvorenej skupiny 'developers'.
===== Implementovana funkcionalita integracneho prostredia =====
* Kompilacia kniznic,
* Kompilacia vyslednej aplikacie,
* Spustanie unit testov,
* Generovanie changelogu zmien v zdojovych suborov,
* Nahravanie vykompilovanych kniznic na server 192.168.241.14,
* Nahravanie vyslednych aplikacii na [[ftp://192.168.241.14|Interne FTP]],
* Notifikacia realizatorov v pripade uspesneho vykompilovania release-u aplikacie,
* Notifikacia developerov v pripade neuspesnej kompilacie projektu
===== Konfiguracie integracneho prostredia =====
Zakladnou pracovnou konfigurovatelnou jednotkou v prostredi je 'Job' a 'View'.
Job moze sluzit:
* **Integracna kompilacia** - sluzi na zabezpecnie spravnosti a kompilovanosti zdrojoveho kodu spolu s pustanim unit testov
* **Release kompilacia** - sluzi na vykompilovanie testovacej alebo relase verzie konecnej aplikacie/kniznice
==== Postupnost vykonavania krokov v JOB-e ====
- Definovanie vstupnych premennych
- Pripojenie k verzionovaciemu systemu a ziskanie aktualnych zdrojovych suborov
- Kompilacia projketu
- Vykonanie post-*kompilacnych skriptov
- Nahratie vykompilovanych suborov na interne FTP alebo ulozisko kniznic
\\
==== Vseobecna/Spolocna konfiguracia JOB-u ====
=== Nastavenie/deklarovanie vstupnych parametrov job-u===
Nastaveny parameter je mozne v celom job-e pouzivat. V pripade, ze job casto kopirujete a zavisi od vstupnych parametrov je pouzitie deklarovania vstupnych parametrov vyhodna volba
{{howto:jobbuildparametersettings.png|Nastavenie vstupnych parametrov pre kompilaciu}}
=== Konfiguracia a pripojenie k verzionovaciemu systemu ===
* Momentalne podporovany verzionovaci system je SVN. **SourceSafe nie je podporovany**
* Pouzitie premennej ${RELEASE_NUMBER} hlasi ako chybu/warning, ale prebehne to **vsetko v poriadku**
{{howto:jenkinssvnconfiguration.png|Nastavenie pripojenia k verzionovaciemu systemu v job-e}}
==== Konfiguracie JOB-u pre aplikacne kniznice ====
{{howto:librarycompilation.png|Kompilacia aplikacnej kniznice a nahravanie changelogu na interne FTP}}
**Parametre skriptu pre kompilaciu kniznice:**
- Nazov projektu
- Cielova platforma projektu - (ALL/24/26) ALL predstavuje vsetky podporovane platformy
- Zavislosti - co je zavisle od projektu. V zavislych projektoch sa zdvihne verzia kniznice v projlibs.in-e. Ako delimiter sluzi **|**
- Ostatne parametre
- UpdateVersionWhenChangigSource - automaticke zdvihnutie cisla kniznice pri zmene v zdrojovych suboroch. V pripade ze je v projlibs.in-e projektu zdvihnuta nejaka kniznica nekompatibilne, zdvihne sa nekompatibilne aj verzia kniznica aktualne kompilovaneho projektu
\\
Ukazka nastavenia kompilacie aplikacnej kniznice
release_library_vehicle_system eticketissuelogic ALL "Apps/VehicleSystem/branches/${RELEASE_NUMBER}/ESlave|Apps/VehicleSystem/branches/${RELEASE_NUMBER}/EAppCore" UpdateVersionWhenChangigSource
**Kopirovanie changelogu na interne FTP**
Kopirovanie spociva v dvoch krokoch:
- Premenovanie changelog_txt ${RELEASE_NUMBER}_changelog_NAZOVPROJEKTU.txt
- nakopirovanie changelogu na interne FTP
==== Konfiguracia JOB-u pre vyslednu multi(maticovo) konfigurovatelnu aplikaciu ====
Maticovo konfigurovatelny job sluzi na vykompilovanie jednej aplikacie s viacerymi konfiguraciami pomocou konfiguracnej matice
OBC_APPLICATION_PLATFORM - cielova platforma
\\
OBC_PROJECT_CONFIGURATION - pozadovana konfiguracna sablona
{{howto:matrixjenkinsconfiguration.png|Maticovo konfigurovatelny job}}
Kazdy User-defined axis predstavuje jeden rozmer konfiuracie. Pri kompilacii sa pusti v nasom pripade 8 kompilacii
| template/platform ^ platform 2.4 ^ platform 26 ^
^ sk | 24,sk | 26,sk |
^ sk_netsam | 24,sk_netsam | 26,sk_netsam |
^ cz | 24,cz | 26,cz |
^ pl | 24,pl | 26,pl |
==== Kompilacia JOB-u pre vyslednu multi(maticovo) konfigurovatelnu aplikaciu ====
**Velmi dolezite** je nastavit polozku //'Run each configuration sequentially'//
{{howto:jenkinsmultijobcompilation.png|Nastavenie kompilacie}}
**Samotna kompilacia pozostava z dvoch krokov:**
- Vytvorenie konfiguracneho suboru //projset.in// na zaklade aktualnych parametrov z konfiguracnej matice
- Samotna kompilacia pomocou skriptu release_application_vehicle_system EOnboardComputer ${OBC_APPLICATION_PLATFORM}
**Parametre skriptu pre kompilaciu vyslednej aplikacie:**
- Nazov projektu
- Cielova platforma projektu - ${OBC_APPLICATION_PLATFORM} - cielova platform specifikovana podla aktualnych parametrov
==== Post-kompilacia JOB-u pre vyslednu multi(maticovo) konfigurovatelnu aplikaciu =====
Post kompilacna operacia sa vykona po celej maticovej kompilacii balikov. Vykonava nasledovne operacie:
- Generovanie changelogu
- Commit changelogu do SVN
- Nahravanie changelog-u s prislusnym cislom release-u na interne FTP. V pripade trunku je changelog nazvany //testing//
- Nahravanie vsetkych vykompilovanych apliakcii na interne FTP
=== Generovanie, commit changelog-u a nahravanie na FTP ===
{{howto:generovanieakomitchangelogu_nahravaniechangelogunaftp.png|generovanie, commit changelogu a nahravanie changelogu na FTP}}
Po uspesnom nahrati vykompilovanych aplikacii na interne FTP, sa zmazu pre uvolnenie miesta
=== Nahravanie aplikacii na FTP ===
{{howto:nahravaniebalikovnaftp.png|nahravanie aplikacii na FTP}}
Je potrebne nastavit source( co sa ma nakopirovat ) a destinations( kam na interne FTP sa ma aplikacia nahrat )
Pre nahravanie sa pouziva plugin //FTP publisher plugin//
===== Monitor jenkins integracneho prostredia =====
Monitor je pripojeny na inteligentnu zastrcku ktoru je mozne ovladat pomocou dialkoveho ovladaca polozeneho na skrinke
Po zapnuti a vypnuti zasuviek by mal system normalne nastartovat a zobrazit 3ksmonitoru s jenkins prostredim. V pripade ze nieco nefunguje je potrebne sa pripojit pomocou //nomachine// na zariadenie:
IP: 192.168.242.201
Login: itroot
Password: itroot