Prestacio se skl´ad´a z n´asleduj´ıc´ıch ˇc´ast´ı:
• Home - Jednoduch´y popis aplikace
• Repositories - Seznam vˇsech repozit´aˇr˚u
• Hockej - Sestavovac´ı syst´em (glob´aln´ı nastaven´ı)
• Accounts - Uˇzivatelsk´e ´uˇcty, pro pˇr´ıstup k repozit´aˇr˚um
• About - M´ısto pro vloˇzen´ı vlastn´ıho textu (napˇr´ıklad kr´atk´y popis firmy, pro-jekt˚u atd.)
4.2.1 Repozit´ aˇre
Prestacio dok´aˇze spravovat nˇekolik repozit´aˇr˚u najednou. Skrze jednotliv´e verzovac´ı syst´emy jsou o repozit´aˇr´ıch z´ısk´av´an´e ´udaje, kter´e jsou n´aslednˇe zobrazeny v gra-fick´em prostˇred´ı uˇzivately. Je moˇzn´e spravovat repozit´aˇre verzovac´ıch syst´em˚u GIT a Mercuri´al. Lze prov´adˇet pouze vytˇeˇzov´an´ı informac´ı a nelze prov´adˇet zmˇeny v nasta-ven´ı repozit´aˇr˚u. T´ım je ˇc´asteˇcnˇe zabezpeˇcena konzistence dat a z´abr´anˇeno uˇzivateli syst´emu repozit´aˇr uv´est do nefunkˇcn´ıho stavu.
4.2.2 Sestavovac´ı skript
Prestacio umoˇzˇnuje kaˇzd´emu repozit´aˇri vytvoˇrit vlastn´ı sestavovac´ı skript, kter´y slouˇz´ı k zautomatizov´an´ı ˇcinost´ı nad repozit´aˇrem. Skript m˚uˇze b´yt vytvoˇren v tex-tov´em editoru nebo lze vyuˇz´ıt grafick´e nadstavby, kter´a umoˇzˇnuje jednoduch´e vytv´aˇren´ı skript˚u. Grafick´emu editoru a vytv´aˇren´ı skript˚u bude vˇenov´ana ˇc´ast dalˇs´ı kapitoly.
4.2.3 Hockej
Tato ˇc´ast z´ısk´av´a vˇsechny dostupn´e informace o aktu´aln´ım nastaven´ı Hockeje. Tedy informace o kataloz´ıch, kde jsou podrobnˇe pops´an´y vˇsechny definice, kter´e jsou v ka-taloz´ıch obsaˇzeny. Katalogy jsou rozdˇeleny na syst´emov´e a uˇzivatelsk´e.
4.2.4 Uˇzivatelsk´ e ´ uˇ cty
K repozit´aˇr˚um mohou pˇristupovat rozliˇcn´ı uˇzivatel´e, proto tato sekce umoˇzˇnuje spra-vovat pˇr´ıstupy uˇzivatel˚u k jednotliv´ym repozit´aˇr˚um a pˇrid´avat k nim opr´avnˇen´ı na ˇcten´ı ˇci z´apis. Je zde tak´e spr´ava vˇsech veˇrejn´y kl´ıˇc˚u potˇrebn´ych pro zabezpeˇcenou komunikaci protokolem SSH mezi uˇzivatelem a repozit´aˇrem.
4.3 Stas
Pro moˇznost pˇripojen´ı uˇzivatel˚u skrze protokol SSH bylo nutn´e vytvoˇrit syst´em, kter´y bude uˇzivatele ovˇeˇrovat. Jedn´a se tedy o vrstvu, kter´a je vloˇzena mezi sluˇzbou spravujic´ı SSH komunikaci a repozit´aˇrem. Zkratka syst´emu Stas znamen´a ”Ssh Tri-vial Authorization System”. Jedn´a se o obdobu syst´emu Gitolite [11], kter´y ovˇsem podporuje pouze verzovac´ı syst´em GIT.
V pˇr´ıpadˇe, kdy se uˇzivatel pˇripojuje skrze prokol SSH ke vzd´alen´emu repozit´aˇri a pˇripojen´ı nen´ı spravovan´e pomoc´ı Stas, je pr˚ubˇeh n´asledujic´ı:
• Uˇzivatel se autorizuje pomoc´ı sv´eho veˇrejn´eho kl´ıˇce nebo hesla sluˇzbˇe serveru na kter´y se pˇripojuje.
• Uˇzivatel dostane pˇr´ıstup pˇr´ımo k repozit´aˇri a nahraje do nˇej svoje zmˇeny.
Nen´ı tedy zde nic, co by uˇzivatele identifikovalo. Do repozit´aˇre tedy mohou pˇrisp´ıvat vˇsichni, kteˇr´ı maj´ı heslo nebo zaregistrovan´y veˇrejn´y kl´ıˇc.
V druh´em pˇr´ıpadˇe se uˇzivatel pˇripojuje ke vzd´alen´emu uloˇziˇsti spravovan´eho pomoc´ı Stas, kter´e zajist´ı indentifikaci uˇzivatele a zkontroluje, zda m´a pˇr´ıstup pro danou operaci na repozit´aˇrem. Postup je tedy n´asledujic´ı:
• Uˇzivatel se autorizuje pomoc´ısv´eho veˇrejn´eho kl´ıˇce serveru na kter´y se pˇripojuje.
• Spust´ı se Stas, kter´e podle kl´ıˇce zkontroluje uˇzivatele pˇripojuj´ıc´ıho se k repo-zit´aˇri.
• Stas zjist´ı, zda m´a dan´y uˇzivatel pr´avo k repozit´aˇri pˇristoupit.
• Stas zkontroluje o jakou ˇcinnost se bude jednat. Existuj´ı 2 typy (ˇcten´ı a z´apis).
• Stas povol´ı nebo zam´ıtne ˇcinost.
Aby bylo moˇzn´e pˇripojovat uˇzivatele pomoc´ı SSH protokolu, mus´ı Stas na-kop´ırovat veˇrejn´e kl´ıˇce vˇsech uˇzivatel˚u zadan´ych v Prestaciu do souboru
~/.ssh/authorized_keys.
5 N´ avod na pouˇz´ıv´ an´ı a praktick´ e uk´ azky
5.1 Hockej
V t´eto kapitole bude pops´ano jak´ym zp˚usobem se pouˇz´ıv´a navrˇzen´y syst´em pro vytv´aˇren´ı a vykon´av´an´ı sestavovac´ıch skript˚u.
5.1.1 Instalace
Jedn´a se o samostatnou souˇc´ast, kter´a vyˇzaduje instalaci. Pro instalaci je nutn´e m´ıt nainstalovan´y Composer(https://getcomposer.org/), GIT(http://git-scm.com/) a PHP ve verzi vˇetˇs´ı neˇz 5.4. N´aslednˇe je tˇreba naklonovat repozit´aˇr s Hockejem z pˇriloˇzen´eho CD nebo z aktu´aln´ıho repozit´aˇre pomoc´ı pˇr´ıkazu
git@bitbucket.org:Tacoberu/hockej.git, pˇrepnout se do sloˇzky s naklonovan´ym hockejem a spustit Composer composer install. Hockej mus´ı b´yt um´ıstˇeˇn do ad-res´aˇre, kde bude glob´alnˇe spustiteln´y.
Napˇr´ıklad ln -s source/bin/hockej ~/bin/hockej.
5.1.2 Vytvoˇren´ı sestavovac´ıho skriptu
Definice katalog˚u, kter´e bude skript vyuˇz´ıvat se definuj´ı pomoc´ı elementu <catalog>
s povinn´ymi parametry from(zdroj katalogu) a as(jmenn´y prostor).
Nejjednoduˇsˇs´ı katalog m˚uˇze tedy vypadat n´asledovnˇe:
Skript si pˇri spuˇstˇen´ı inicializuje katalog ”filesystem”a pˇriˇrad´ı mu jmenn´y pro-stor ”fs”. Nic v´ıc vˇsak neudˇel´a. Je proto nutn´e definovat pˇr´ıkaz pomoc´ı elementu
<command>, kter´y bude moci Hockej spustit. Element mus´ı m´ıt nadefinovan´y atribut name, kter´y ˇr´ık´a jak´ym pˇr´ıkazem bude spuˇstˇen. Nadefinujme si tedy pˇr´ıkaz, kter´y zap´ıˇse do souboru ”priklad.txt”ˇretˇezec ”Hello, I’am Hockej!”. V´ysledn´y skript bude vypadat n´asledovnˇe:
<print from="fs.file-write">
Po spuˇstˇen´ı sestavovac´ıho souboru pˇr´ıkazem ”hockej build”ve sloˇzce se skriptem Hockej zap´ıˇse text do souboru. Nyn´ı si podrobnˇe probereme, co jednotliv´e poloˇzky znamenaj´ı.
5.1.3 Vytvoˇren´ı vlastn´ıho katalogu
Pro pˇr´ıklad si, ale uvedeme definici katalogu v extern´ım souboru, kter´a bude prak-ticky stejn´a.
Extern´ı katalogy jsou definovan´e v souborech s n´azvem ”catalog.hockej”a jsou ve form´atu XML. Vytvoˇrme jednoduch´y katalog, kter´y n´am bude definovat cestu k souboru ”priklad.txt”:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<id>routes</id>
<version>0.0.4</version>
Pokud si nyn´ı pˇrid´ame do sestavovac´ı skriptu tento katalog, budeme m´ıt k dis-pozici nov´y element <my-file>.
Pomoc´ı <catalog from="hockej://project//routes" as="my" /> pˇrid´ame vlastn´ı katalog do skriptu a m˚uˇzeme pouˇz´ıvat n´asleduj´ıc´ı pˇredpis pro z´apis do souboru :
<command name="build">
Soubor s katalogem by v tomto pˇr´ıpadˇe byl uloˇzen ve sloˇzce project/routes, kter´a by se nach´azela v koˇrenov´em adres´aˇri projektu. T´ım se d´a ulehˇcit opisov´an´ı stejn´ych konstrukc´ı pro nazv´an´ı souboru, vytv´aˇren´ı sloˇzek a ostatn´ıch.
5.1.4 Uk´ azka rozˇsiˇrov´ an´ı definic
Napˇr´ıklad definice ”fs.file-write”zajiˇst’uje z´apis do souboru. Vytvoˇrili jsme tedy ele-ment s libovoln´ym n´azvem, kter´y dˇed´ı od definice ”fs.file-write”. Pˇr´ıkladem m˚uˇze b´yt element <print from="fs-file-write"> z minul´eho pˇr´ıkladu. Tato definice vyˇzaduje dalˇs´ı dvˇe definice:
• Soubor, do kter´eho se bude zapisovat. Jedn´a se o potomka definice ”fs.file”.
• Text, kter´y se bude zapisovat. Zde se bude jednat o potomka definice ”core.string”.
Tyto z´avislosti je moˇzn´e z´ıskat pomoc´ı parseru katalog˚u, ten je v grafick´e po-dobnˇe implementov´an v Prestaciu. Z´avislosti umoˇzˇnuj´ı vytv´aˇret sloˇzit´e struktury, kter´e se mohou r˚uznˇe pˇrekr´yvat. Tato vlastnost je kl´ıˇcov´a, kv˚uli kter´e byl Hockej vytvoˇren. Lze pˇreddefinov´avat jiˇz nastaven´e definice nebo je doplˇnovat. Nejl´epe si to m˚uˇzeme vysvˇetlit na pˇr´ıkladu se souborem, tedy s potomkem definice ”fs.file”, kter´y vyˇzaduje n´asleduj´ıc´ı definice:
• Koˇren - Potomek definice ”fs.path”
• Cesta - Potomek tˇr´ıdy ”fs.path”
• N´azev souboru - Potomek tˇr´ıdy ”core.string”
Jeho definice m˚uˇze vypadat n´asledovnˇe :
T´ım jsme vytvoˇrili definici, kterou m˚uˇzeme pouˇz´ıt k vytvoˇren´ı elementu <muj-soubor from="soubor" />.
Potˇrebujeme vytvoˇrit dalˇs´ı definici, ale chceme pouze zmˇenit jm´eno souboru. To lze uskuteˇcnit n´asledovnˇe:
<druhy-soubor from="soubor">
<filename from="core.string">jiny_nazev.txt</filename>
</druhy-soubor>
Tuto definici m˚uˇze opˇet pouˇz´ıt pomoc´ı elementu <jiny-sobour from="druhy-soubor">
a pˇredat definici pro z´apis do souboru a n´aslednˇe libovolnˇe mˇenit jej´ı pˇredky.
5.1.5 Spuˇstˇ en´ı
Samotn´y Hockej se pˇri spr´avnˇe proveden´e instalaci spouˇst´ı pˇr´ıkazem hockej a pa-rametrem, kter´y ˇr´ık´a co m´a udˇelat:
• help - Zobraz´ı plnou n´apovˇedu.
• list - Zobraz´ı seznam vˇsech spustiteln´ych pˇr´ıkaz˚u. Atributy ”name”od vˇsech element˚u <command>.
• run <pˇr´ıkaz> - Vyhled´a v aktu´aln´ı sloˇzce soubor ”build.hockej”a spust´ı v nˇem pˇr´ıkaz. Napˇr´ıklad hockej run build.
• -f --buildfile <nazev_skriptu> - Specifikuje n´azev souboru se sestavo-vac´ım skriptem. Napˇr´ıklad hockej run build -f build-local.hockej.
• --xml - V´ystup ve form´atu XML. Napˇr´ıklad hockej run build --xml.
• --dry-run - Provede such´y bˇeh. Fyzicky se nic nevykon´a.
Napˇr´ıklad hockej run build --dry-run.
5.2 Prestacio
5.2.1 Instalace
Prestacio je webov´a aplikace, kter´a pro svoji instalaci vyˇzaduje webov´y server, kter´y obsahuje interpreter jazyk PHP pro verzi 5.4 a vyˇsˇs´ı. D´ale je nutn´y nainstalovan´y Composer a GIT. N´aslednˇe je tˇreba naklonovat repozit´aˇr s projektem z pˇrilozen´eho CD nebo z aktu´aln´ıho repozit´aˇre pomoc´ı pˇr´ıkazu
git clone git@bitbucket.org:Tacoberu/prestacio.git. Pˇrepnout se do sloˇzky s naklonovan´y projektem a spustit Composer pˇr´ıkazem composer install, t´ım se doinstaluj´ı vˇsechny z´avislosti. Jako posledn´ı krok je nutn´e vytvoˇrit instanci hosta v konfiguraci webov´eho serveru, kter´a bude odkazovat do sloˇzky webroot.
Souˇc´ast´ı instalace Prestacia je i instalace Stas.
5.2.2 Repozit´ aˇre
Prestacio dok´aˇze hospodaˇrit s nˇekolika repozit´aˇri nez´avisle na sobˇe. U kaˇzd´eho repo-zit´aˇre je zobrazen jeho n´azev a pˇr´ıkaz, pomoc´ı kter´eho je moˇzn´e si vytvoˇrit lok´aln´ı ko-pii repozit´aˇre. Posledn´ı poloˇzka je stav repozit´aˇre, kter´y zn´azorˇnuje stav posledn´ıho
sestaven´ı aplikace. Pokud se sestaven´ı zdaˇrilo je zobrazena 1 v opaˇcn´em pˇr´ıpadˇe je zde nula.