====== 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