Vamos a montar un servidor de SVN que nos servirá más adelante para probar Jenkins.
Lo primero, instalar el servidor. Esta es la parte fácil:
yum -y install subversion
Con esto lo tenemos listo 😀
El siguiente paso va a ser crear un repositorio de proyectos y el primer «proyecto» de ejemplo.
mkdir -p /var/svn/repos/HolaMundo svnadmin create /var/svn/repos/HolaMundo svn mkdir file:///var/svn/repos/HolaMundo/trunk -m "create" svn mkdir file:///var/svn/repos/HolaMundo/branches -m "create" svn mkdir file:///var/svn/repos/HolaMundo/tags -m "create"
Esto nos crea una estructura de directorios con la rama principal (trunk), ramas de desarrollo paralelas que volverán al trunk, y copias de código que deben ser inmutables a las que se le pone una etiqueta para saber qué es. (http://stackoverflow.com/questions/16142/what-do-branch-tag-and-trunk-mean-in-subversion-repositories)
Ahora, con estos directorios creados, ya podemos arrancar el servidor de SVN:
systemctl start svnserve systemctl enable svnserve
Con esto arrancamos el servidor y haremos que arranque como servicio en cada reinicio de la máquina.
Sólo nos queda el control de acceso a los repositorios. Para esto, vamos a crear roles y usuarios por cada proyecto:
vi /var/svn/repos/project/conf/svnserve.conf En este fichero, vamos primero a eliminar el acceso anónimo: [general] anon-access=none Por simplicidad, vamos a crear una "base de datos" de usuarios y la lista de roles en ficheros: password-db=passwd authz-db=authz
Ahora a crear los ficheros
vi /var/svn/repos/HolaMundo/conf/passwd
[users]
admin=passdeadmin
user=passdeusuario
guest=guest
vi /var/svn/repos/project/conf/authz
[groups]
dev=admin,user
[/]
@dev=rw
[/trunk]
guest=r
Con este contenido tendremos tres usuarios, admin y user que serán desarrolladores con acceso a todo el arbol con lectura y escritura, y guest, que sólo puede leer de /trunk
Lo primero que vamos a hacer es crear una working copy del proyecto, que en un principio no tiene nada (está recien creado):
svn co svn://localhost/repos/HolaMundo Authentication realm: <svn://localhost:3690> 90cf9cda-763a-485b-b892-2f6b0b2782f2 Username: admin Password for 'admin': A HolaMundo/branches A HolaMundo/tags A HolaMundo/trunk Checked out revision 3.
ya podemos entrar en el directorio trunk y creamos un fichero de texto con cualquier contenido, por ejemplo HolaMundo.txt. Una vez lo tengamos listo, lo añadiremos al control de versiones del subversion y haremos un commit para que se guarden los cambios. Ojo, si no tenemos la variable de entorno EDITOR definida, puede que nos dé un casque. La operación commit va a editar un fichero que va a llevar una descripción de la revisión que estamos subiendo.
svn add HolaMundo.txt A HolaMundo.txt svn commit
Nos aparece (al menos en mi caso, el $EDITOR es vi), añadimos al principio una descripción de la subida que estamos haciendo y grabamos
Pimera subida al svn --This line, and those below, will be ignored-- A trunk/HolaMundo.txt ~ ~ ~
Al guardarlo nos pide un usuario y una password, tendremos que usar un usuario con permiso de escritura:
svn commit Authentication realm: <svn://localhost:3690> 90cf9cda-763a-485b-b892-2f6b0b2782f2 Password for 'admin': Adding HolaMundo.txt Transmitting file data . Committed revision 4.
con esto tenemos en SVN la primera versión de «código» del proyecto.