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 ^_^:

yum install git-core

Y es recomendable poder acceder por certificado, por lo que generamos uno

ssh-keygen -t rsa

Configuramos un repositorio en un servidor que equivale al Git remoto:

mkdir -p /servicio/git-repositories/opencms.git
cd /servicio/git-repositories/opencms.git
git init --bare

Configuramos un repositorio en nuestro equipo para tener una copia del repositorio:

mkdir -p /home/davidrod/projects/opencms
cd /home/davidrod/projects/opencms
git init

Crear la estructura del módulo

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

### 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.

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.

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

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

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

Nuestro primer commit del módulo

Ahora hacemos el commit hacia el repositorio. Por si acaso no dominas git, añado todos los pasos

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

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

mkdir -p /servicio/git-projects/opencms/

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

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

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.

DEFAULT_MODULES_TO_EXPORT="es.uva.web.portal.opencms.tipos"

Nuestro repositorio local en el servidor

REPOSITORY_HOME=/servicio/git-projects/opencms/
MODULE_PATH=/servicio/git-projects/opencms/modules
MODULE_RESOURCES_SUBFOLDER=resources/

Y un punto importante para ahorrarnos trabajo, usar un certificado para una conexión con el repositorio remoto sin contraseña:

GIT_SSH="/var/lib/tomcat/webapps/keys/git"

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

./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"

Para hacer un pull

./module-checkin.sh --checkout "/usr/share/tomcat/webapps/ROOT/WEB-INF/git-scripts/module-checkin.conf"

webmaster

Grupo web de la Universidad de Valladolid – STIC

2 comentarios en “Opencms-Git”

Deja un comentario

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