Curs 12 Servicii Pentru Dezvoltatori
Total Page:16
File Type:pdf, Size:1020Kb
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/ <Directory /var/cache/git/> DAV On </Directory> GSR Curs 12, Servicii pentru dezvoltatori 12/35 Git peste HTTP { write enable (2) I configurat, ie strict˘a Alias /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 \comun˘a" 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 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 <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 fcgid I /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 ^ınRedmine I http://www.redmine.org/plugins I copiere + dezarhivare sau clonare ^ın $fREDMINE_ROOTg/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