Curs 12 - Servicii pentru...
Transcript of Curs 12 - Servicii pentru...
Curs 12Servicii pentru dezvoltatori
Gestiunea Serviciilor de Ret,ea
12 ianuarie 2012
GSR Curs 12, Servicii pentru dezvoltatori 1/35
Moto
Before software can be reusable it first has to be usable.
Ralph Johnson
GSR Curs 12, Servicii pentru dezvoltatori 2/35
Sisteme de versioning
I version control systems/revision control systems
I source code management
I repository, clone/checkout/working copy, commit, HEAD,branch, sincronizare, conflict, revert, revision/version, merge,tag, trunk/mainline
I centralizate: CVS, SVN, Perforce
I distribuite: Darcs, Monotone, Git, Mercurial, BazaarI repository-ul identificat prin URL
I svn+ssh://[email protected]/super-projectI http://github.com/vmchecker/vmchecker.git
GSR Curs 12, Servicii pentru dezvoltatori 5/35
Git
I SCM distribuit
I creat de Linus Torvalds
I folosit ın proiecte mari (Linux, Gnome, KDE, Perl, Ruby onRails, Android etc.)
I apt-get install git (git-core pe sisteme mai vechi)
I clientul – git
I serverul/daemon-ul – git-daemonI URL-uri
I local – /var/cache/git/test-repo.gitI SSH – [email protected]:benga.gitI HTTP – http://home.com/benga.gitI Git – git://home.com/benga.git
GSR Curs 12, Servicii pentru dezvoltatori 6/35
Clientul Git
I clonare – git clone URL
I configurare – git config --global user.name "Gogu
Sclipici"
I commit – git add ., git commit -m ’add pretty
printer’
I actualizare catre server – git push origin master
I actualizare de la server – git pull, git pull --rebase
I reconfigurare URLI git remote rm originI git remote add origin URL
GSR Curs 12, Servicii pentru dezvoltatori 7/35
Administrare repository
I creare repository (eventual ın /var/cache/git/)I mkdir repo.git && cd repo.gitI git init --bare
I populare repository (eventual pe alt sistem)I mkdir local.git && cd local.gitI git init .I touch test.txt && git add .I git commit -m ’initial commit’I git remote add origin [email protected]:repo.gitI git push origin master
GSR Curs 12, Servicii pentru dezvoltatori 8/35
Git peste SSH
I configurare ın home-ul unui utilizator
I cd ∼studentI cd repos; mkdir project.git; cd project.git; git
init --bare
I URL – [email protected]:repos/project.git
I populare repository
GSR Curs 12, Servicii pentru dezvoltatori 9/35
git-daemon
I daemon ce serves, te repository-uri Git (portul 9418)I apt-get install git-daemon-run
I foloses, te runit, sv – interact, iune cu servicii
I sv start git-daemon, sv stop git-daemon
I configurat ın /etc/sv/git-daemon/run
I log-uri ın /var/log/git-daemon/
I pentru a exporta un repository, trebuie sa cont, ina fis, ierulgit-daemon-export-ok
I implicit configurat doar read-only
GSR Curs 12, Servicii pentru dezvoltatori 10/35
Git peste HTTP
I HTTP – dumb protocolI fiecare repository trebuie sa activeze hook-ul de post-update
I git update-server-info
I configurare Apache
Alias /git /var/cache/git/
I git clone http://gamma.org/git/rango-repo.git
GSR Curs 12, Servicii pentru dezvoltatori 11/35
Git peste HTTP – write enable
I pentru a se putea scrie e nevoie deI suport DAV (a2enmod dav_fs)I utilizatorul aferent serverului web (www-data) sa aiba drept de
scriere
I configurat, ie naiva
Alias /git /var/cache/git/
<Directory /var/cache/git/>
DAV On
</Directory>
GSR Curs 12, Servicii pentru dezvoltatori 12/35
Git peste HTTP – write enable (2)
I configurat, ie strictaAlias /git /var/cache/git/
<Directory /var/cache/git/>
DAV On
AuthType Basic
AuthName "Git"
AuthUserFile /etc/apache2/git-repos.htpasswd
Require valid-user
</Directory>
I configurat, ie “comuna”Alias /git /var/cache/git/
<Directory /var/cache/git/>
DAV On
AuthType Basic
AuthName "Git"
AuthUserFile /etc/apache2/git-repos.htpasswd
<LimitExcept GET HEAD PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Directory>
I configurat, ie non-DAV pentru HTTP (read-only) + configurat, ie stricta pentruHTTPS
GSR Curs 12, Servicii pentru dezvoltatori 13/35
Outline
Git
Servicii Git
Redmine
Incheiere
Intrebari
GSR Curs 12, Servicii pentru dezvoltatori 14/35
SSH custom commands
I folosirea opt, iunii command ın fat, a cheii publice SSH (directorul∼/.ssh/authorized_keys)
I folosit de Gitosis sau Gitolite
I command="/usr/share/gitolite/gl-auth-command
razvan.deaconescu"
GSR Curs 12, Servicii pentru dezvoltatori 15/35
Gitolite
I “access control layer on top of Git”I gestiune facila/centralizata a mai multor repository-uri Git
I acces pe baza de chei SSHI autorizare – ce utilizator/cheie publica are acces la ce
repository
I permite controlul accesului la nivel de branch (Gitosis nu oferaaceste facilitat, i)
GSR Curs 12, Servicii pentru dezvoltatori 16/35
Configurare init, iala a Gitolite
I apt-get install gitolite
I creeaza s, i configureaza utilizatorul gitolite
ixlabs:~# ls ~gitolite
projects.list repositories
I gl-setup /path/to/ssh/public/key.pub –“administratorul” Gitolite
I git clone [email protected]:gitolite-adminI repository-ul administrativ
.../admin/ixlabs-gitolite-admin$ tree
.
|-- conf
| ‘-- gitolite.conf
‘-- keydir
|-- razvan.deaconescu.pub
‘-- tavi.purdila.pub
GSR Curs 12, Servicii pentru dezvoltatori 17/35
Configurare repository-uri ın Gitolite
.../admin/ixlabs-gitolite-admin$ cat conf/gitolite.conf
repo gitolite-admin
RW+ = razvan.deaconescu
@ixlabs = inspectos vmgen sshsync lxc valgrind robocheck
@them = razvan.deaconescu tavi.purdila
repo @ixlabs
RW+ = @them
R = @all
GSR Curs 12, Servicii pentru dezvoltatori 18/35
Configurare drepturi ın Gitolite
I R – read (poate clona)
I W – write (poate face push)
I + – rewind (poate reseta branch-ul)
I configurari la nivel de branch
GSR Curs 12, Servicii pentru dezvoltatori 19/35
Gitweb
I acces vizual web la repository-uri
I apt-get install gitweb
I configurat, ie implicita ın /etc/apache2/conf.d/gitweb
I repository-urile trebuie sa fie accesibile serverului webI configurare ın /etc/gitweb.conf
I @git_base_url_list
I documentat, ie ın /usr/share/doc/gitweb/
GSR Curs 12, Servicii pentru dezvoltatori 20/35
Configurare repository-uri pentru a folosi Gitweb
I accesibile serverului web
I editare fis, ier description din repository
I adaugare configurare de ownership ın fis, ierul config
gitolite@ixlabs:~/repositories$ cat lxc.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[gitweb]
owner = IxLabs
GSR Curs 12, Servicii pentru dezvoltatori 21/35
Outline
Git
Servicii Git
Redmine
Incheiere
Intrebari
GSR Curs 12, Servicii pentru dezvoltatori 22/35
Aplicat, ii web pentru management software
I sisteme pentru coordonarea/gestiunea proiectelor softwareI integrarea mai multor funct, ionalitat, i
I wikiI issue/request/ticket trackerI repository browserI timeline/roadmapI feed-uri RSSI controlul accesului
I hosted: Sourceforge, Google Code, Assembla, GNU Savannah,BerliOS
I client-server: Trac, Redmine, JIRA, Launchpad
GSR Curs 12, Servicii pentru dezvoltatori 23/35
Redmine
I influent, at de Trac
I Ruby on Rails
I cross-platform & cross-database (MySQL, PGSQL, SQLite)
I suport pentru SVN, Git, Mercurial, Bazaar, Darcs
I suport pentru mai multe proiecte ın aceeas, i instalare
I roluri pentru membrii proiectului
I calendar, diagrama Gantt
I forumuri, s, tiri
I extensibil prin module
GSR Curs 12, Servicii pentru dezvoltatori 24/35
Instalare Redmine
I apt-get install redmine – pe versiunile mai noi deUbuntu s, i Debian
I /usr/share/redmine/
I dpkg-reconfigure redmine – pentru adaugarea unei noiinstat, e (implicit default) sau configurare
I /etc/redmine/*/ – un director aferent unui proiectI database.ymlI email.ymlI session.yml – generat automat
I fis, iere /var/lib/redmine/*/files/
I log-uri /var/log/redmine/*/*.log
I pentru SQLite/var/lib/dbconfig-common/sqlite3/redmine/instances/
I documentat, ie ın /usr/share/doc/redmine/
GSR Curs 12, Servicii pentru dezvoltatori 25/35
Redmine + mongrel cluster
I apt-get install mongrel-cluster
I /etc/mongrel_cluster
<Proxy balancer://mongrel_cluster>
Order allow,deny
Allow from all
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
BalancerMember http://127.0.0.1:8002
</Proxy>
<Location /redmine>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
</Location>
GSR Curs 12, Servicii pentru dezvoltatori 26/35
Redmine + mod passenger
I a2enmod passenger
RailsEnv production
SetEnv X_DEBIAN_SITEID "projects.rosedu.org"
Alias "/plugin_assets/" /var/cache/redmine/default/plugin_assets/
DocumentRoot /usr/share/redmine/public
<Directory "/usr/share/redmine/public">
Order allow,deny
Allow from all
</Directory>
GSR Curs 12, Servicii pentru dezvoltatori 27/35
Redmine + FCGID
I a2enmod fcgidI /etc/apache2/mods-enabled/fcgid.conf – SocketPath
DefaultInitEnv X_DEBIAN_SITEID "default"
DocumentRoot /usr/share/redmine/public
<Directory "/usr/share/redmine/public">
Order allow,deny
Allow from all
</Directory>
GSR Curs 12, Servicii pentru dezvoltatori 28/35
Pluginuri ın Redmine
I http://www.redmine.org/plugins
I copiere + dezarhivare sau clonare ın${REDMINE_ROOT}/vendor/plugin
I trebuie repornit Redmine
I vizibile ın meniul de Administrare, opt, iunea Plugins
GSR Curs 12, Servicii pentru dezvoltatori 29/35
Administrare Redmine
I gestiune utilizatoriI permitere utilizatori ınregistrat, iI creare utilizatoriI autentificare prin LDAPI adaugare utilizatori la proiecte
I gestiune proiecteI creare proiecteI componente/module folosite (wiki, tracker, Gantt, boards)I configurare repository (cale catre repository pentru repository
browser)I roluri s, i utilizatori
I opt, iuni, enumerari (trackers, user roles, issue states)
GSR Curs 12, Servicii pentru dezvoltatori 30/35
Utilizare avansata
I custom issue queries – clasificare dupa diverse criterii
I RSS feeds (activitat, i s, i issue-uri)
GSR Curs 12, Servicii pentru dezvoltatori 31/35
Outline
Git
Servicii Git
Redmine
Incheiere
Intrebari
GSR Curs 12, Servicii pentru dezvoltatori 32/35
Cuvinte cheie
I versioning
I Git
I clone
I SSH, HTTP
I git-daemon
I DAV (write)
I Gitolite
I Gitweb
I project management
I Redmine
I mongrel-cluster
I passenger
I FCGID
GSR Curs 12, Servicii pentru dezvoltatori 33/35
Resurse utile
I http://gitimmersion.com/
I http://git-scm.com/
I https://git.wiki.kernel.org/index.php/Gitweb
I https://github.com/sitaramc/gitolite
I http://www.redmine.org/
I http://www.redmine.org/plugins
GSR Curs 12, Servicii pentru dezvoltatori 34/35