Curs 12 Servicii 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 Git
Servicii Git
Redmine
ˆIncheiere
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 3/35 Outline
Git
Servicii Git
Redmine
ˆIncheiere
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 4/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, Bazaar I repository-ul identificat prin URL
I svn+ssh://[email protected]/super-project I 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 ˆınproiecte mari (Linux, Gnome, KDE, Perl, Ruby on Rails, Android etc.)
I apt-get install git (git-core pe sisteme mai vechi)
I clientul – git
I serverul/daemon-ul – git-daemon I URL-uri
I local – /var/cache/git/test-repo.git I SSH – [email protected]:benga.git I HTTP – http://home.com/benga.git I 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 c˘atreserver – git push origin master
I actualizare de la server – git pull, git pull --rebase I reconfigurare URL
I git remote rm origin I 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.git I git init --bare I populare repository (eventual pe alt sistem)
I mkdir local.git && cd local.git I git init . I touch test.txt && git add . I git commit -m ’initial commit’ I git remote add origin [email protected]:repo.git I git push origin master
GSR Curs 12, Servicii pentru dezvoltatori 8/35 Git peste SSH
I configurare ˆınhome-ul unui utilizator
I cd ∼student
I 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 s˘acont, in˘afis, ierul git-daemon-export-ok
I implicit configurat doar read-only
GSR Curs 12, Servicii pentru dezvoltatori 10/35 Git peste HTTP
I HTTP – dumb protocol I fiecare repository trebuie s˘aactiveze 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 de
I suport DAV (a2enmod dav_fs) I utilizatorul aferent serverului web (www-data) s˘aaib˘adrept de scriere
I configurat, ie naiv˘a Alias /git /var/cache/git/
GSR Curs 12, Servicii pentru dezvoltatori 12/35 Git peste HTTP – write enable (2)
I configurat, ie strict˘a Alias /git /var/cache/git/
I configurat, ie “comun˘a” Alias /git /var/cache/git/
I configurat, ie non-DAV pentru HTTP (read-only) + configurat, ie strict˘apentru HTTPS
GSR Curs 12, Servicii pentru dezvoltatori 13/35 Outline
Git
Servicii Git
Redmine
ˆIncheiere
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 14/35 SSH custom commands
I folosirea opt, iunii command ˆınfat, 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 facil˘a/centralizat˘aa mai multor repository-uri Git
I acces pe baz˘ade chei SSH I autorizare – ce utilizator/cheie public˘aare acces la ce repository
I permite controlul accesului la nivel de branch (Gitosis nu ofer˘a
aceste facilit˘at, i)
GSR Curs 12, Servicii pentru dezvoltatori 16/35 Configurare init, ial˘aa Gitolite
I apt-get install gitolite
I creeaz˘as, i configureaz˘autilizatorul gitolite ixlabs:~# ls ~gitolite projects.list repositories
I gl-setup /path/to/ssh/public/key.pub – “administratorul” Gitolite I git clone [email protected]:gitolite-admin
I 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 ˆınGitolite
.../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 ˆınGitolite
I R – read (poate clona)
I W – write (poate face push)
I + – rewind (poate reseta branch-ul)
I configur˘arila 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 implicit˘aˆın /etc/apache2/conf.d/gitweb
I repository-urile trebuie s˘afie accesibile serverului web I 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 ad˘augare configurare de ownership ˆınfis, 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
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 22/35 Aplicat, ii web pentru management software
I sisteme pentru coordonarea/gestiunea proiectelor software
I integrarea mai multor funct, ionalit˘at, i
I wiki I issue/request/ticket tracker I repository browser I timeline/roadmap I feed-uri RSS I 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 ˆınaceeas, i instalare
I roluri pentru membrii proiectului
I calendar, diagram˘aGantt
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 de
Ubuntu s, i Debian
I /usr/share/redmine/
I dpkg-reconfigure redmine – pentru ad˘augarea unei noi
instat, e (implicit default) sau configurare I /etc/redmine/*/ – un director aferent unui proiect
I database.yml I email.yml I 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
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
GSR Curs 12, Servicii pentru dezvoltatori 27/35 Redmine + FCGID
I a2enmod fcgid
I /etc/apache2/mods-enabled/fcgid.conf – SocketPath DefaultInitEnv X_DEBIAN_SITEID "default"
DocumentRoot /usr/share/redmine/public
GSR Curs 12, Servicii pentru dezvoltatori 28/35 Pluginuri ˆınRedmine
I http://www.redmine.org/plugins
I copiere + dezarhivare sau clonare ˆın ${REDMINE_ROOT}/vendor/plugin
I trebuie repornit Redmine
I vizibile ˆınmeniul de Administrare, opt, iunea Plugins
GSR Curs 12, Servicii pentru dezvoltatori 29/35 Administrare Redmine
I gestiune utilizatori
I permitere utilizatori ˆınregistrat, i I creare utilizatori I autentificare prin LDAP I ad˘augare utilizatori la proiecte I gestiune proiecte
I creare proiecte I componente/module folosite (wiki, tracker, Gantt, boards) I configurare repository (cale c˘atrerepository pentru repository browser)
I roluri s, i utilizatori
I opt, iuni, enumer˘ari(trackers, user roles, issue states)
GSR Curs 12, Servicii pentru dezvoltatori 30/35 Utilizare avansat˘a
I custom issue queries – clasificare dup˘adiverse criterii
I RSS feeds (activit˘at, i s, i issue-uri)
GSR Curs 12, Servicii pentru dezvoltatori 31/35 Outline
Git
Servicii Git
Redmine
ˆIncheiere
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 32/35 Cuvinte cheie
I Gitolite I versioning I Gitweb I Git I project management I clone I Redmine I SSH, HTTP I mongrel-cluster I git-daemon I passenger I DAV (write) 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 Outline
Git
Servicii Git
Redmine
ˆIncheiere
ˆIntreb˘ari
GSR Curs 12, Servicii pentru dezvoltatori 35/35