• No results found

• 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:

<?xml version="1.0" ?>

<hockej>

<description>First buildscript</description>

<version>1.2.3</version>

<catalog from="hockej://build-in/hockej/filesystem" as="fs" />

</hockej>

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:

<?xml version="1.0" ?>

<hockej>

<description>First buildscript</description>

<version>1.2.3</version>

<catalog from="hockej://build-in/hockej/filesystem" as="fs" />

<catalog from="hockej://build-in/hockej/core" as="core" />

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

Related documents