Incluir un repositorio externo (submódulos)
Es posible que quieras incluir módulos de otro repositorio, como un módulo de la comunidad OCA o una librería compartida, en tu despliegue de Skysize. Skysize inicializa los submódulos Git por ti en cada despliegue. Los submódulos públicos no necesitan configuración. Los submódulos privados reciben su propia clave de despliegue de solo lectura, declarada una vez en los ajustes del proyecto.
Agregar un submódulo público
Desde un clon local de tu repositorio, agrega el submódulo y haz push:
# Add a public repository as a submodule
git submodule add https://github.com/OCA/web.git external/oca-web
git commit -m "Add OCA web submodule"
git push
En el siguiente despliegue, Skysize inicializa el submódulo automáticamente, por lo que los módulos que contiene estarán presentes en el checkout desplegado.
Agrega el submódulo desde la línea de comandos (git submodule add). Los editores web de GitHub/GitLab no pueden crear un submódulo válido, editar .gitmodules a mano en el navegador no registra el enlace del submódulo.
Hacer que los módulos sean detectables
Skysize escanea tu repositorio un nivel de profundidad en busca de módulos de Odoo (cada subdirectorio inmediato que contiene un __manifest__.py). Si tu submódulo coloca los módulos más profundamente que eso, apunta Odoo al directorio del submódulo usando el campo Ruta de addons personalizados, consulta Organizar módulos en directorios anidados.
Submódulos privados
Un subrepositorio privado no se puede clonar con la clave de despliegue del proyecto, porque esa clave solo está instalada en el repositorio del proyecto. Skysize genera una clave de despliegue de solo lectura independiente para cada submódulo privado, igual que Odoo.sh, y la instala por ti en el subrepositorio siempre que puede.
- Abre tu proyecto, ve a Ajustes y luego a Submódulos privados.
- Pega la URL SSH del subrepositorio, por ejemplo
git@github.com:USUARIO/REPOSITORIO.git, y haz clic en Añadir. - Si el proyecto tiene una conexión Git con permisos de administración sobre el subrepositorio, la clave se instala automáticamente y la entrada muestra Clave de despliegue instalada. Ya está.
- Si no, la entrada muestra la clave pública que debes añadir a mano: en el subrepositorio, ve a Settings → Deploy keys (GitHub), Settings → Repository → Deploy keys (GitLab) o Repository settings → Access keys (Bitbucket), añade la clave con acceso de solo lectura y haz clic en Reintentar o simplemente vuelve a desplegar.
Después añade el submódulo a tu repositorio como de costumbre:
git submodule add git@github.com:USUARIO/REPOSITORIO.git external/private-addons
git commit -m "Add private addons submodule"
git push
La URL en .gitmodules puede ser la forma SSH o HTTPS del mismo repositorio, Skysize reconoce ambas. Los submódulos anidados dentro de un submódulo privado solo se clonan si son públicos.
El mecanismo es el mismo en el hosting gestionado y en Bring Your Own Server: la clave viaja al servidor con cada build y nunca lo abandona después. Quitar la entrada revoca la clave en el proveedor cuando se instaló automáticamente.
Alternativa: incorporar el código
Si prefieres no depender de un submódulo, copia los módulos directamente en tu propio repositorio para que formen parte del clon normal:
git clone --depth=1 https://github.com/OCA/web.git /tmp/oca-web
cp -r /tmp/oca-web/web_responsive ./web_responsive
cp -r /tmp/oca-web/web_no_bin_size ./web_no_bin_size
git add web_responsive web_no_bin_size
git commit -m "Vendor OCA web modules"
git push
Como los módulos ya están confirmados en tu repositorio, están presentes en cada despliegue sin configuración adicional. Para actualizarlos, repite la copia, el commit y el push.
Instalar el módulo en Odoo
Los módulos puestos a disposición por un submódulo o por código incorporado no se instalan automáticamente.
- Abre tu instancia de Odoo.
- Activa el modo desarrollador: Settings → Activate the developer mode (Ajustes → Activar el modo desarrollador).
- Ve a Apps, haz clic en Update Apps List (Actualizar lista de aplicaciones), luego busca tu módulo y haz clic en Install (Instalar).