Project

General

Profile

Štábní kultura

Stránka popisuje pravidla pro práci na projektu Warden v oblastech Redmine, Gitu a zdrojového kódu. Pravidla pro práci se servery lze nalézt na stránce o strojích využívaných v projektu.

Redmine

Pravidla pro Issues v Redmine

  1. Zadavatel nastaví tag New a verzi, pro kterou je úkol/bug určen.
  2. Vykonavatel nastaví Resolved (úkol dokončen), nebo nastaví Rejected, pokud je úkol neplatný/nevhodný/nesplnitelný.
  3. Zadavatel po kontrole úkol uzavře nastavením Closed.
  • Kokoliv může v průběhu řešení nastavit Feedback, pokud je potřeba problém prodiskutovat.
  • Pokud je třeba úkol dořešit po jeho uzavření, je třeba jej znovu otevřít a nevytvářet nový.
  • Pro zachování pořádku je vhodné používat dělení na subtikety.
  • Na odpovídající commit se odkazuje pomocí: commit: 123abc4

Pravidla pro práci s wiki

  • Tvořte stránky dle šablony.
  • Zanořujte stránky, pokud je to možné.
  • Využívejte možností syntaxe wiki a možnosti vkládat značky.
  • Odkazujte co nejvíce ostatní stránky ve wiki. Usnadní se procházení.
  • Nevkládejte velké tabulky do prostřed stránky, pokud to není opravdu nutné.
  • Nevkládejte dlouhé seznamy.

Pravidla pro verzovací systém GIT

Stazeni Warden GITu

$ git clone [username]@homeproj.cesnet.cz:warden 
  • [username] je Váš cesnetí login. Autentizace je v případě SSH obrácená proti cesnetímu LDAPu, případně můžete na mail <> poslat veřejnou část svého SSH klíče.

Aktualize lokalniho repozitare

$ git pull 
  • před začátkem práce je nejdříve potřeba pullnout ze serveru aktuální verze zdrojových kódů

Pridani souboru do lokalniho repa

$ git add src/warden-server/sh/install.sh
  • pridani souboru je nutne commitnout

Odebrani souboru z lokalniho repa

$ git rm src/warden-server/sh/install.sh
  • odebrani souboru je nutne commitnout

Zjisteni stavu lokalniho repa

$ git status

Zjisteni zmen v lokalnim souboru

$ git diff src/warden-server/sh/install.sh

Obnova smazaneho lokalniho souboru ze vzdaleneho repozitare

$ git checkout src/warden-server/sh/install.sh

Nacommitovani uprav do lokalniho repa

$ git commit -m src/warden-server/sh/install.sh

Nahrani zmen do vzdaleneho repozitare

$ git push
  • po ukončení prací je potřeba úpravy nakomitovat do GITu a pushnout je na server

Prepnuti do jine branche nez master

$ git checkout warden-server-2.2

Vypis seznamu tagu

$ git tag

Zataggovani baliku

$ git tag -a warden-server-2.2 -m 'Final release of warden-derver package version 2.2'

Zjisteni informaci o danem tagu

$ git show warden-server-2.2

Nahrani tagu do vzdaleneho repozitare

$ git push origin --tags

Smazani tagu ze vzdaleneho repozitare

$ git tag -d warden-server-2.2
$ git push origin :refs/tags/warden-server-2.2

Vytvoreni nove vyvojove branch

  • při vývoji nových věcí je potřeba si v GITu vytvořit novou branche z větve master a kód upravit, odladit, otestovat a zpátky mergnout do masteru

Smazani stare branche

Smazani stare lokalni branche

$ git branch -d old_branch
Deleted branch old_branch (3a0874c).

Smazani stare vzdalene branche

$ git push origin :old_branch
 - [deleted]             old_branch

Prejmenovani lokalni branch

$ git branch -m old_branch new_branch

man git-branch -> git branch (-m | -M) [<oldbranch>] <newbranch>

Merge nove branch new_branch do master branch

$ git checkout master
$ git merge new_branch

GIT se pokusi zmeny zmergovat automaticky sam, pokud si s necim nevi rady, kriticke sekce oznaci znackami <<<<<<<, =======, >>>>>>> a necha rozhodnuti na uzivateli
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> new_branch:index.html

Odmazanim stare (nad =======) nebo nove (pod =======) casti uzivatel sdeli GITu ktera verze ma byt pouzita. Nasledne upraveny soubor ulozi a nacommituje pozadovanou zmenu.

Reset merge

1) Undo the merge and pull again.

$ git reset --merge

2) Resolve the conflict.

3) Don't forget to add and commit the merge.

4) git pull now should work fine.

Na konci commit hlášky uvádíme číslo souvisejícího tasku v závorce, stylem:

  • Server nyní s parametrem --espresso vaří kávu (#123)
  • Opraven čas louhování u --gunpowder (#567)

GIT pro začátečníky

Struktura Gitu projetku Warden

doc/
  presentations/
  reports/
  posters/
  logos/
src/
  warden-client/
    bin/
    doc/
    etc/
    lib/
    sh/
  warden-server/
    bin/
    doc/
    etc/
    lib/
    sh/
    www/
packages/
  warden-client-X.Y.Z.tar.gz
  warden-server-X.Y.Z.tar.gz

Pravidla pro tvorbu kódu v Perlu (štábní kultura)

Ochrana pred problemovymi konstrukcemi

Na zacatku kodu je potreba zapnout warnings a nacist modul strict.

#!/usr/bin/perl -w

use strict;

Nazvy promenych, poli, luk a haju

handler VARIABLE
globalni promenna (our) $VARIABLE
viceslovny nazev globalni promenna (our) $MORE_WORDS_VARIABLE
lokalni promenna (my) $variable
viceslovny nazev lokalni promenne (my) $more_words_variable
procedura sub procedure()
viceslovny nazev procedury sub moreWordsProcedure()

Syntaxe

Odsazeni

Odsazeni je C-like stylem, tzn. 2x mezera

Procedura a jeji popis

#----------------------------------------------------
# newProcedure - popis procedury
#----------------------------------------------------
sub newProcedura()
{
  ...
}

Podminka

if (true) {
  ...
}

Navratove kody

Navratove kody opacne jako v BASH.

return 1; #OK (True)
return 0; #Failed (False)

Exit kody

Exit kody jsou analogicke s BASHem.

exit 0; #OK
exit 1; #Failed

Klicove vyrazy v SQL query

Klicove SQL vyrazy jsou v kodu uvedeny velkymi pismeny.

SELECT * FROM events WHERE type != 'test' AND id > 1 AND valid = 't' ORDER BY id ASC LIMIT 1;

Logovani

Logovani je realizovano pomoci Syslogu (modul Sys::Syslog)

  • errMsg($msg) - funkce pro logovani na STDERR
    • pouziti pred startem serveru (prepnuti serveru na pozadi), pripravne operace
  • write2log($msg, $priority) - funkce pro logovani pres Syslog
    • po uspesnem startu serveru, jakmile uz server bezi na pozadi

Vyvojove misto

Veskery vyvoj systemu Warden (server, klienti) probiha v adresari /opt, ktery je zvolen kvuli vychozi instalacni ceste /opt

Verzovani balicku

Pro verzovani balicku klienta i serveru pouzivame 2 cislice oddelene teckou, kdy kazda cislice oznacuje nasledujici zmeny

1.0
| |
| |
| +---------- dulezite (major) zmeny (upravy zavaznych chyb branicich chodu systemu, bezpecnostni zmeny, nove featury, uprava prototypu funkci,... ) + drobne (minor) zmeny (upravy drobnych chyb, zmena/oprava README, oprava jedne chyby,...) - primarne se nepouziva
+------------ zmena konceptu (prechod na novou generaci, zmena konceptu celeho systemu, zasadni zmeny systemu, oprava vice dulezitych chyb,...)