Curs 12 - Servicii pentru...

35
Curs 12 Servicii pentru dezvoltatori Gestiunea Serviciilor de Ret , ea 12 ianuarie 2012 GSR Curs 12, Servicii pentru dezvoltatori 1/35

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

Git

Servicii Git

Redmine

Incheiere

Intrebari

GSR Curs 12, Servicii pentru dezvoltatori 3/35

Outline

Git

Servicii Git

Redmine

Incheiere

Intrebari

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

Outline

Git

Servicii Git

Redmine

Incheiere

Intrebari

GSR Curs 12, Servicii pentru dezvoltatori 35/35