sábado, 13 de febrero de 2016

SERVIDOR GITOLITE EN LINUX


Crear usuarios en Ubuntu

adduser admin (Con este comando se solicitará la clave del usuario)

usermod -a -G sudo admin


Instalacion de Git en Ubuntu Server


- sudo apt-get install git



Toda la instalación se hará con el usuario “admin” previamente creado
Generación de de la llave en el cliente, para este caso supondremos

GitoLite necesita los archivos de clave publica. En mi caso estoy sobre el sistema operativo Windows 7. Por lo que para poder copiar los archivos necesito el programa WinScp.











En la maquina cliente se debe generar la clave publica en mi experiencia es importante genera a generar dicha clave con el mismo nombre del usuario de la maquina.
Ejemplo en mi caso el usuario de maquina es sahara entonces se digita

ssh-keygen sahara.pub

Este usuario es el que se se debe copiar a la maquina servidor.

scp ~/.ssh/id_rsa.pub devadmin@servidor.com:/home/admin/sahara.pub


Sustituye los datos del ejemplo por los tuyos donde sea necesario.

En el servidor

Inicia sesión en el servidor con una cuenta que pueda usar sudo (en nuestro caso particular es admin):
ssh admin@servidor.com
Si sólo tienes la cuenta de root para administrar tu servidor, te recomiendo que leas esto: Securing Your Server
Instala git usando esta guía:
Después crea un usuario llamado git que va a fungir como el administrador de los repositorios:


sudo adduser
   --system
   --shell /bin/bash
   --gecos 'git version control'
   --group
   --disabled-password
   --home /home/git
   git
No necesita contraseña ya que no pretendemos iniciar sesión con él directamente.
Accede al usuario git y ve a su $HOME:
sudo su git
cd
Asegúrate de que ~/.ssh/authorized_keys está vacío o no existe (para el usuario git).
Copia el archivo /home/admin/admin.pub a /home/git/admin.pub:

cp /home/admin/admin.pub $HOME
Ejecuta los siguientes comandos:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
echo "PATH=$HOME/bin:$PATH" > ~/.bashrc
source ~/.bashrc
gitolite setup -pk admin.pub
Listo, cierra la sesión del usuario git y después termina la del usuario admin.

Agregar usuarios y repositorios desde la máquina cliente

De regreso en tu máquina local, ahora vas a ver cómo crear repositorios y autorizar usuarios para que operen con ellos.
En gitolite, los usuarios, repositorios y reglas de acceso se administran haciendo cambios a un repositorio especial llamado gitolite-admin y surten efecto al subirlos (con un push) al servidor.


No debes agregar de forma manual en el servidor repositorios o usuarios.
Utiliza siempre el repositorio local para ese propósito.
Para administrar tu instalación de gitolite, clona el repositorio gitolite-admin a tu máquina:
git clone git@servidor.com:gitolite-admin.git
Si el comando anterior te solicita una contraseña, algo salió mal. Revisa los pasos con cuidado.
Ahora, si le das cd gitolite-admin, verás dos subdirectorios en él: conf y keydir
Para agregar a los usuarios juan, maria y pepe, obtén sus llaves públicas y mételas en keydir como juan.pub, maria.pub y pepe.pub respectivamente.

Para agregar un repositorio nuevo llamado foo y dar diferentes niveles de acceso a estos usuarios, modifica el archivo: conf/gitolite.conf, ejemplo:
repo gitolite-admin
   RW+     =   admin

repo foo
   RW+         =   juan
   RW          =   maria
   R           =   pepe
Después de hacer estos cambios en el cliente, hazlos efectivos en el servidor con:
git add conf
git add keydir
git commit -m 'Se creó el repositorio foo, se dio acceso a juan, maria y pepe'
git push
Cuando finalice el push, gitolite agregará los nuevos usuarios a /home/git/.ssh/authorized_keys en el servidor, así como también creará un nuevo repositorio vacío llamado foo.

Subir un repositorio existente al servidor

Para poner un repositorio local en el servidor, para que otras personas —a las que les des acceso— lo puedan clonar y trabajar, debes primero crear un espacio para él.
Esto lo haces modificando el archivo gitolite-admin/conf/gitolite.conf como se mostró arriba, haz commit de los cambios, y súbelos con push.
Después, entra al directorio del repositorio local en cuestión y teclea:
git remote rm origin
git remote add origin git@servidor.com:mi-nuevo-repositorio.git
git push origin master
Listo, ahora tu repositorio local ha sido clonado al servidor y otros usuarios pueden tener acceso a él con:
git clone git@servidor.com:mi-nuevo-repositorio.git

Agregar otros usuarios y darles permisos al repositorio

Para agregar otros usuarios lo recomendable es que el usuario administrador del repositorio gitolite-admin desde una maquina cliente agrega los usuarios

primer paso: crear la clave publica en cada maquina cliente usando el siguiente comando:


ssh-keygen -t rsa -f "$HOME/.ssh/nombreusuario" -C "Gitolite access (not interactive)" -q -P ""

La version del GitHub presenta esta otra version
ssh-keygen -t rsa -C "your_email@example.com"
Para probar que todo salio bien
ssh -T git@github.com


Observacion:
Cuando se genera el archivo con el comando ssh-keygen se pregunta si desea cambiar el nombre del archivo. Al usar esta opción por ejemplo llamar al archivo “aldo” se generan dos archivos aldo y aldo.pub. Esto funciona correctamente al momento de la generación pero falla al momento de autenticarse. La solución es dejar que ssh-keygen genere el nombre automáticamente para que lo deje en id_rsa y id_rsa.pub

segundo paso: copiar la clave publica en directorio gitolite-admin/keydir de la maquina cliente donde se clono el repositorio

tecer paso: usar los siguientes comandos

git add keydir
git commit -m “un comentario”
git push

esto agregara la clave publica al directorio authorize_keys



Branching en GIT
El objetivo es crear a patir del repositorio principal ramas con el fin de desarrollar caracteristicas.
Asi de la rama principal de crearan 3 ramas principales con el fin de controlar el codigo fuente

Desarollo
Certificacion
Release (Rama que se le entrega al cliente)

Lo primero que se debe hacer es crear carpetas donde se albergaran dichas ramas
git branch desarrollo
git branch certificacion
git branch RTM

Para subir las ramas al servidor digitar los siguientes comandos
git push (remote) (branch)
En nuestro caso el repositorio remoto se llama origin
git push origin desarrollo

Las ramas creadas en el servidor no se traerán automáticamente, ya que solamente se traerán la rama master
Para traer la rama deseada se deberá ejecutar el siguiente comando:
$ git checkout -b serverfix origin/serverfix 1
En nuestro caso sería:
git checkout -b desarrollo origin/desarrollo

En caso ya tengamos una rama desarrollo local creada y queramos actualizar los cambios


para borrar una rama nos debemos localizar fuera de la rama que queremos eliminar
git checkout master (Nos posicionamos fuera de la rama que queremos eliminar)
luego eliminamos la rama
git branch -d contabilidad


Configuración de los permisos
El usuario administrador deberá realizar el trabajo desde el repositorio local, para esto ingresará a la carpeta gitolite-admin/conf  y editar el archivo de configuración gitolite.conf

@jefe = aabril sahara
@programador = joel rramirez
@lider_programador = rramirez
@equipo = @jefe @programador @lider_programador

repo gitolite-admin
    RW+     =   @jefe

repo testing
    RW+     =   @all

repo tiwasierp
    RW+                  =  @jefe
    RW  desarrollo$      =  @programador
    RW+ desarrollo$      =  @lider_programador
    -   certificacion$   =  @lider_programador @programador
    -   master$          =  @lider_programador @programador
    RW  tmp/             =  @all
    RW  refs/tags/v[0-9] =  @lider_programador

en los accesos a los repositorios
solo los jefes tienen acceso a reiniciar los repositorios

Configuracion de herramienta para hacer el Merge
git mergetool -t kdiff3

$ git config --global merge.tool kdiff3

Si se quiere compartir una rama con los demas el comando es el siguiente
git push origin desarrollo

Para sincronizar con el servidor se usa el siguiente comando
$ git fetch origin
Este comando solo trae el puntero desde el servidor

Para unir el cambio desde el servidor con mi copia se debera ejecutar el siguiente comando
git merge origin/serverfix

Este otro crea una copia local de la rama del servidor a mi maquina
$ git checkout -b desarrollo origin/desarrollo



Para aprender sobre gestion de equipos leer el siguiente link
http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project

No hay comentarios:

Publicar un comentario