Opencms-Git

Vamos a definir los pasos para la integración de OpenCms con un servidor Git, que nos facilita enormemente el desarrollo.

Instalar y configurar Git

En primer lugar, instalamos el Git en nuestro servidor y en los clientes, o en los clientes usamos una aplicación diferente, pero siempre es mejor la línea de comandos ^_^:
[code]yum install git-core[/code]

Y es recomendable poder acceder por certificado, por lo que generamos uno
[code]ssh-keygen -t rsa[/code]

Configuramos un repositorio en un servidor que equivale al Git remoto:
[code]mkdir -p /servicio/git-repositories/opencms.git
cd /servicio/git-repositories/opencms.git
git init –bare[/code]

Configuramos un repositorio en nuestro equipo para tener una copia del repositorio:
[code]mkdir -p /home/davidrod/projects/opencms
cd /home/davidrod/projects/opencms
git init[/code]

Crear la estructura del módulo

Según la documentación del fichero de Opencms:

[code]
### Demo configuration file for the OpenCms git commit tool
### The configuration file assumes you have a git repository under
### /home/user/git/demo/
### where modules are all stored in the subfolder
### /home/user/git/demo/modules/
### and each module again has a subfolder with it’s name, e.g.,
### /home/user/git/demo/modules/my.module.one/
### and the module resources in a subfolder «resources», e.g.,
### /home/user/git/demo/modules/my.module.one/resources/
### which is the place, where the module should be unzipped in before check in.

[/code]

Así que creamos esta estructura para el módulo es.uva.web.portal.opencms.tipos, de forma que creamos modules, dentro de ella el módulo es.uva.web.portal.opencms.tipos y dentro de ella resources.

[code]mkdir -p /home/davidrod/projects/opencms/modules/es.uva.web.portal.opencms.tipos/resources[/code]

Y en esa carpeta resources exportamos el módulo descomprimido, por lo que dentro de ella debemos tener:

[code]./manifest.xml
./system
./system/modules
./system/modules/es.uva.web.portal.opencms.tipos[/code]

Nuestro primer commit del módulo

Ahora hacemos el commit hacia el repositorio. Por si acaso no dominas git, añado todos los pasos
[code]git config –global user.name “davidrod”
git config –global user.email “david.rodriguez.merino@uva.es”
git remote add origin ssh://git@172.16.21.169/servicio/git-repositories/opencms.git
git branch –set-upstream-to=origin/master master
git add .
git commit -m “initial” -a
git push[/code]

De esta manera ya tenemos subida la versión inicial en el repositorio.

El repositorio local del servidor OpenCms

Ahora vamos a nuestro servidor de Opencms. Debemos crear una carpeta en el sistema de ficheros que usaremos para el proyecto local. Por ejemplo

[code]mkdir -p /servicio/git-projects/opencms/[/code]

Luego realizamos los mismos pasos para configurar la sincronización con el repositorio.

[code]cd /servicio/git-projects/opencms/
git init

git config –global user.name “davidrod”
git config –global user.email “david.rodriguez.merino@uva.es”

git remote add origin ssh://root@172.16.21.169:/servicio/git-projects//opencms/
Git pull origin master
git branch –set-upstream-to=origin/master master[/code]

Con esto tenemos configurado una carpeta sincronizada con el repositorio Git que Opencms utilizará de “puente”.

Configuración de OpenCms

Ahora vamos a configurar el fichero module-checkin.conf dentro de la carpeta /WEB-INF/git-scripts/

Debe de tener los módulos con los que vamos a trabajar. Puede dejarse vacío y simplemente seleccionar.
[code]DEFAULT_MODULES_TO_EXPORT=»es.uva.web.portal.opencms.tipos»[/code]

Nuestro repositorio local en el servidor
[code]REPOSITORY_HOME=/servicio/git-projects/opencms/
MODULE_PATH=/servicio/git-projects/opencms/modules
MODULE_RESOURCES_SUBFOLDER=resources/[/code]

Y un punto importante para ahorrarnos trabajo, usar un certificado para una conexión con el repositorio remoto sin contraseña:
[code]GIT_SSH=»/var/lib/tomcat/webapps/keys/git»[/code]

Ya por último, damos permisos de ejecución al fichero /WEB-INF/git-scripts/module-checkin.sh

Ya podemos probar la integración con Git en Opencms. Tanto el check in como el import debería funcionar sin problemas.

Cómo ejecutarlo desde línea de comandos

Si tenemos problemas, y queremos ver con detalle el problema, podemos llamar al programa desde una línea de comandos, como por ejemplo para el módulo es.uva.web.portal.opencms.tipos:

Para hacer un push

[code]
./module-checkin.sh –modules «es.uva.web.portal.opencms.tipos» -msg «This is my automatic commit.» –git-user-name «davidrod» –git-user-email «david.rodriguez.merino@uva.es» –pull-before –pull-after –push –export-folder «/usr/share/tomcat/webapps/ROOT/WEB-INF/packages/modules/» –export-mode 1 –exclude-libs –commit –ignore-unclean –copy-and-unzip «/usr/share/tomcat/webapps/ROOT/WEB-INF/git-scripts/module-checkin.conf»[/code]

Para hacer un pull
[code]./module-checkin.sh –checkout «/usr/share/tomcat/webapps/ROOT/WEB-INF/git-scripts/module-checkin.conf»[/code]

webmaster

Grupo web de la Universidad de Valladolid - STIC

2 comentarios en “Opencms-Git”

  1. Hola, me podéis confirmar con que versión de opencms lo habéis realizado. Me interesa saber si es posible con la versión 7, gracias

Responder a tuti Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.