Para trabajar con Odoo.sh debes enlazar un repositorio Git a cada proyecto. Sin embargo, es probable que necesites incluir otros repositorios de terceros o tuyos, en los que mantienes código reutilizable, como librerías o módulos específicos.
Una opción es copiar el código de estos repositorios en el repositorio del proyecto. De esta forma tienes las funcionalidades que necesitas, pero agregas un problema adicional: pierdes la sincronización con el repositorio original. Por tanto, si se incluyen actualizaciones, correcciones a errores y otras modificaciones, tendrás que volver a copiar todo el código original y actualizar el repositorio del proyecto manualmente.
La solución a ese problema son los submódulos de Git. Estos pueden verse como enlaces a los repositorios externos. Exactamente a un commit específico en un momento determinado.
En Odoo.sh podemos incluir dos tipos de repositorios externos: públicos y privados. A continuación veremos cómo agregar cada uno.
Agregar un repositorio público en Odoo.sh
Para agregar un repositorio público en Odoo.sh ve a tu repositorio en Github (desde la línea de comandos), elige la rama en la que quieres trabajar y agrega el submódulo.
git submodule add -b <branch> <url del repositorio externo>
git commit -a && git push -u <remote> <local branch>
Agregar un repositorio privado en odoo.sh
Para agregar un repositorio privado en Odoo.sh son necesarios algunos adicionales. Los pasos son los siguientes:
Ve al menú de Configuración (Settings) en el proyecto en Odoo.sh.
Ubica el menú de Submódulos y agrega el link del repositorio que quieres agregar como submódulo.
Copia la llave pública que genera Odoo.sh.
Agrega la llave pública generada en Github o Gitlab, donde tengas tu repositorio externo.
Repositorio externo en Gitlab:
Ir a Configuración/Repositorio (Settings/Repository) del proyecto en Gitlab.
Expandir el menú Llaves de despliegue (Deploy keys).
Copiar la llave pública generada en Odoo.sh, poner un título y hacer click en el botón Agregar llave (Add key).
Repositorio externo en Github:
1. Ir al repositorio, luego a Configuración (o Settings), y después a Deploy Keys.
2. Click en el botón de Agregar llave (Add Keys).
3. Copiar la llave pública generada en Odoo.sh, poner un título y hacer click en el botón Agregar llave (Add key).
Desde la línea de comandos, agrega el submódulo en el repositorio del proyecto.
git submodule add -b <branch> <url del repositorio externo>
git commit -a && git push -u <remote> <local branch>
En ambos casos (agregar repositorio público y privado) el commit en el repositorio de Odoo.sh generará un nuevo build en Odoo.sh.
Qué significa cada parámetro
git submodule add -b <branch> <url del repositorio externo>
git commit -a && git push -u <remote> <local branch>
<branch>: branch del repositorio externo que quiero agregar como submódulo.
<url del repositorio externo>: url del repositorio externo que quiero agregar como submódulo.
<remote>: repositorio al que quiero agregar el submódulo, por lo general, "origin".
<local branch>: la rama (branch) del repositorio local al que quiero agregar el submódulo.
Ejemplo:
git submodule add -b develop git@gitlab.com:ateneolab/common/importaciones.git
git commit -a && git push -u origin main
El uso de submódulos en los proyectos de Odoo.sh es una práctica altamente recomendada para organizar el código, desacoplar los desarrollos y reutilizar nuestro trabajo.
Si tienes cualquier duda sobre el trabajo con Odoo.sh y los submódulos puedes escribir en los comentarios.