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

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, , 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/ DAV On

GSR Curs 12, Servicii pentru dezvoltatori 12/35 Git peste HTTP – write enable (2)

I configurat, ie strict˘a Alias /git /var/cache/git/ DAV On AuthType Basic AuthName "Git" AuthUserFile /etc/apache2/git-repos.htpasswd Require valid-user

I configurat, ie “comun˘a” Alias /git /var/cache/git/ DAV On AuthType Basic AuthName "Git" AuthUserFile /etc/apache2/git-repos.htpasswd Require valid-user

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, , GNU Savannah, BerliOS

I client-server: , Redmine, ,

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

RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

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 Order allow,deny Allow from all

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 Order allow,deny Allow from all

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