gitblit-org / gitblit

pure java git solution
http://gitblit.com
Apache License 2.0
2.28k stars 671 forks source link

Federar gitblit. #385

Closed gitblit closed 9 years ago

gitblit commented 9 years ago

Originally reported on Google Code with ID 89


Tutorial para despliegue de repositorios git usando gitblit con tomcat 6, java 1.6
o superior, y Centos 5.

Requisitos 

1-Instalar Centos5 .
2-Instalar java-1.6.
3-Instalar tomcat 6.

Instalacion de Gitblit.

Existen dos formas de usar Gitblit, una usando un gitblit.war mediante un servlets,
o usando gitblitGO, que corre por el mismo.

En el caso nuestro usamos Gitblit.war y tomcat6, corriendo sobre java 1.6, tener bien
claro que usando .war las configuraciones se hacen a traves de web.xml, si usan el
gitblitgo.zip se debera configurar a traves de los .properties. 

Este despliegue y las pruebas se hicieron sobre la version gitblit-0.8.2.war  .

1-Descargar gitblit.war de gitblit.com, o de http://code.google.com/p/gitblit/downloads/list

2-Colocar el .war en la carpeta webapps de tomcat 6. o desde el tomcat6 cargarlo a
traves del browser.

3-Abrir los puertos de http/https 8080 y 443 en el firewall o iptables.

4-Por defecto el usuario de administracion es admin y passwd admin.

5-Por seguridad cambiar el user.conf de gitblit, ponerlo afuera de webapps.

6-Crear una carpeta para los repos y luego en el web.xml ponerle la direccion para
los repos se guarden en esta carpeta. Siempre revisar los permisos para que tenga permisos.

7-Reiniciar tomcat.

8-Conectarse por un browser a http://ipdelamaquina:8080/gitblit. En caso de querer
que use otro puerto configurarlo en tomcat.

9-verificar gitblit e interactuar con las diferentes configuraciones de usuarios y
repos de proyectos.

You may have to manually extract the WAR (zip file) to a folder within your webapps
folder. 
Copy the WEB-INF/users.conf file to a location outside the webapps folder that is accessible
by your servlet container.
Optionally copy the example hook scripts in WEB-INF/groovy to a location outside the
webapps folder that is accesible by your servlet container. 
The Gitblit webapp is configured through its web.xml file.
Open web.xml in your favorite text editor and make sure to review and set:
<context-parameter> git.repositoryFolder (set the full path to your repositories folder)

<context-parameter> groovy.scriptsFolder (set the full path to your Groovy hook scripts
folder) 
<context-parameter> realm.userService (set the full path to users.conf) 
You may have to restart your servlet container. 
Open your browser to http://localhost/gitblit or whatever the url should be. 
Enter the default administrator credentials: admin / admin and click the Login button
NOTE: Make sure to change the administrator username and/or password!! 

10-Esto hay q pasarselo al git cliente -> git config http.postBuffer 524288000

Configurar Gitblit para federar entre servidores de gitblit.

1-Para realizar la federacion debe verse desde dos conceptos fundamentales.
Puede federarse para hacer un mirror de un gitblit server.
Puede federarse para hacer un gitblit server contenedor de multiples instancias de
gitblit servers de forma centralizada.

2-Ver foto

    -mirror

    -Centralizado

3-Definir cual es el server centralizado(pulling) y cuales son los servers git clientes(origins).

     Requerimientos para federar de la instancia de (origins).
git.enableGitServlet debe ser true, todos los Git clone and pull. 
federation.passphrase debe ser true y ser non-empty .
La Instancia Gitblit origin  debe ser http/https accesible por la instancia de pulling
Gitblit.

Requerimientos para federar de la instancia de (Pulling).
 federation.allowProposals=true para facilitar el proceso de registrar las instancias
 Gitblit origins. 
 Instancias Gitblit Origins incluye, como minimo, url, federation token, y frequencia
de actualizacion.
Federation Pull Registration Keys
federation.N.url
string
the url of the origin Gitblit instance (required)
federation.N.token
string
the token provided by the origin Gitblit instance (required)
federation.N.frequency
x [mins/hours/days]
the period to wait between pull executions
federation.N.folder
string
the destination folder, relative to git.repositoriesFolder, for these repositories.
default is git.repositoriesFolder
federation.N.bare
boolean
if true (default), each repository is cloned as a bare repository (i.e. no working
folder).
federation.N.mirror
boolean
if true (default), each repository HEAD is reset to origin/master after each pull.
The repository is flagged isFrozen after the initial clone.

If false, each repository HEAD will point to the FETCH_HEAD of the initial clone from
the origin until pushed to or otherwise manipulated.
federation.N.mergeAccounts
boolean
if true, merge the retrieved accounts into the users.conf of this Gitblit instance.
default is false
federation.N.sendStatus
boolean
if true, send the status of the federated pull to the origin Gitblit instance.
default is false
federation.N.include
string array
(space-delimited)
list of included repositories (wildcard and fuzzy matching supported)
federation.N.exclude
string array
(space-delimited)
list of excluded repositories (wildcard and fuzzy matching supported)
federation.N.notifyOnError
boolean
if true, send an email to the administrators on an error.
default is false

4- Registrar los server origins en el server pulling.

    -Esto hacerlo en el web.xml copiar y pegar estas lineas, con las repetivas configuraciones
para cada server origins en el pulling.

Ejemplo para .war web.xml federacion:

<context-param>
   <param-name>federation.1921681968080.url</param-name>
   <param-value>http://192.168.1.96:8080/gitblit</param-value>
</context-param>
<!-- here put one of the 3 hex numbers from the federation screen in other words the
token -->
<context-param>
   <param-name>federation.1921681968080.token</param-name>
   <param-value>VariousNumbersfromtheOriginGitblit</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.mergeAccounts</param-name>
   <param-value>false</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.frequency</param-name>
   <param-value>60 mins</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.folder</param-name>
   <param-value></param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.bare</param-name>
   <param-value>true</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.mirror</param-name>
   <param-value>true</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.sendStatus</param-name>
   <param-value>true</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.notifyOnError</param-name>
   <param-value>true</param-value>
</context-param>
<context-param>
   <param-name>federation.1921681968080.exclude</param-name>
   <param-value></param-value>
</context-param>
<!-- here i put the wildcard * -->
<context-param>
   <param-name>federation.1921681968080.include</param-name>
   <param-value>*</param-value>
</context-param>

    -Este texto pegarlo antes de la linea (</web-app>) en el web.xml y luego reiniciar
el servidor tomcat y verificar que funcione.

    -Recordar que solo para la version .war pues la GO usa los .properties.
Ejemplo para usar .properties.
federation.sample.url = https://sampleserver.com
federation.sample.token = (token from origin server here)
federation.sample.frequency = 12 hours
federation.sample.folder = 
federation.sample.bare = true
federation.sample.mirror = true
federation.sample.mergeAccounts = false
federation.sample.sendStatus = true
federation.sample.notifyOnError = true
5-Hacer una federacion entre server pulling y server origins.

    Federation Proposals (Origin Gitblit Instance)
    -Una vez propiamente configurado el setup y el passphrase y puedas ver los tokens
generados, estara lista la instancia origins para hacer un proposals.
    -El registro de el origins en el pulling debe haberse hecho, y automaticamenteal enviar
una  federation proposal al pulling la atendera.

    -Para mandar una proposal:
1. Login to your Gitblit instance as an administrator 
2. Select and click the propose link for the appropriate token on the federation page

3. Confirm the publicly accessible url of your (origin) Gitblit instance 
4. Enter the url of the pulling Gitblit instance you want to federate with 
5. Optionally enter a message for the administrators 
6. Click propose 

6-Pruebas.
    -Para verificar que se federe loguearse al pulling como administrador y verificar
los repos y registros.

7-Paginas de ayuda.
    -http://code.google.com/p/gitblit/issues/detail?id=84

Reported by jorge21duque on 2012-04-18 20:47:55


gitblit commented 9 years ago
Thanks for the document, I can see you spent some time on it.  Unfortunately, I'm not
sure what to do with it since it is in Spanish.  Have you considered making this a
blog post?

Reported by James.Moger on 2012-04-22 20:30:44

gitblit commented 9 years ago

Reported by James.Moger on 2012-06-06 20:07:12

gitblit commented 9 years ago
hola, gracias por tu información. pero quisiera que me documentaras un poco sobre como
hacer federación para una copia de seguridad , es decir tengo dos repositorios en discos
diferentes uno ya esta funcionando normalmente pero quiero que el otro se sincronice
para crear una copia de respaldo por si un disco se daña tener ese .. que se  actualicen
simultáneamente.

muchas gracias 

Reported by dviviescaslatorre on 2012-12-15 15:06:47