Ajouter un module personnalisé
Ce tutoriel vous montre comment ajouter un module Odoo personnalisé à votre déploiement Skysize. Il existe deux approches selon que le module se trouve dans un dépôt séparé ou directement dans votre dépôt de projet.
Durée estimée : ~15 minutes
Ce dont vous avez besoin :
- Un projet déjà déployé sur Skysize (Déployer votre première instance)
- Un module Odoo personnalisé (votre propre code ou un module communautaire de l'OCA)
Comment fonctionnent les modules personnalisés sur Skysize
À chaque déploiement, Skysize clone votre dépôt pour cette branche et met son contenu à la disposition d'Odoo en tant que répertoire de modules personnalisés (addons). Odoo découvre un module lorsque son dossier (celui qui contient __manifest__.py) se trouve directement à l'intérieur d'un répertoire du chemin des addons, donc les modules placés à la racine de votre dépôt sont détectés automatiquement sans configuration supplémentaire.
Si vos modules se trouvent dans un sous-répertoire, vous indiquez ce répertoire à Odoo avec le paramètre Chemin des addons personnalisés de la branche. Si vos modules se trouvent dans un dépôt séparé, vous les intégrez en tant que sous-module Git, puis vous ajoutez le répertoire du sous-module au chemin des addons personnalisés.
Les modules personnalisés sont mis à disposition sur le serveur mais ne sont pas installés automatiquement. Après le déploiement, vous devez les installer depuis le menu Apps d'Odoo (voir Installer le module dans Odoo ci-dessous). Une fois installé, un module est mis à niveau automatiquement à chaque déploiement Mettre à jour le build.
Option A : Module dans votre propre dépôt
Utilisez cette approche lorsque votre module personnalisé est stocké directement dans votre dépôt de projet.
1. Ajouter votre module au dépôt
Placez votre module n'importe où dans le dépôt. La structure la plus simple consiste à le placer à la racine :
my-odoo-repo/
├── my_module/
│ ├── __manifest__.py
│ └── ...
└── ...
Avec cette structure, aucune configuration supplémentaire n'est nécessaire, Skysize trouvera my_module automatiquement. Committez et poussez, puis passez directement à Installer le module dans Odoo.
Si vous préférez conserver vos modules dans un sous-répertoire :
my-odoo-repo/
├── custom_addons/
│ └── my_module/
│ ├── __manifest__.py
│ └── ...
└── ...
Vous devez alors configurer le chemin des addons comme décrit à l'étape suivante.
2. Configurer le chemin des addons personnalisés (sous-répertoire uniquement)
-
Accédez à votre projet et ouvrez l'onglet Branches.
-
Cliquez sur votre branche pour ouvrir ses paramètres.
-
Faites défiler jusqu'à la carte Configuration des addons et trouvez le champ Chemin des addons personnalisés.
-
Entrez le chemin vers le répertoire qui contient votre/vos module(s). Chaque chemin doit commencer par
/:/custom_addonsPour des modules répartis dans plusieurs répertoires, séparez-les par des virgules :
/custom_addons,/extra_addons -
Cliquez sur Enregistrer.
La modification du chemin des addons personnalisés prend effet au prochain déploiement. Enregistrez le champ, puis poussez un commit (ou utilisez Reconstruire sur la branche) pour que le nouveau chemin soit appliqué.
Installer le module dans Odoo
- Ouvrez votre instance Odoo.
- Accédez à Settings → Apps (activez le mode développeur si l'application n'est pas visible : Settings → Activate the developer mode).
- Recherchez votre module et cliquez sur Install.
Option B : Module dans un dépôt séparé (sous-module Git)
Utilisez cette approche lorsque votre module personnalisé se trouve dans son propre dépôt, par exemple un module communautaire de l'OCA ou un module interne partagé entre plusieurs projets.
Les sous-modules doivent pointer vers un dépôt public, accessible en HTTPS, Skysize les récupère de manière anonyme pendant le build. Les sous-modules qui nécessitent une authentification (dépôts privés, URL SSH) ne sont pas pris en charge. Si vous contrôlez le code du module, vous pouvez plutôt l'intégrer directement dans votre dépôt de projet (Option A).
1. Ajouter le sous-module
Un sous-module Git doit être ajouté avec la ligne de commande git, les éditeurs web de GitHub/GitLab/Bitbucket ne peuvent pas créer correctement la référence spéciale du sous-module. Dans votre clone local de votre dépôt de projet, exécutez :
git submodule add https://github.com/OCA/web.git addons/oca_web
git commit -m "Add OCA web submodule"
git push
Cela enregistre le dépôt externe au chemin addons/oca_web et écrit un fichier .gitmodules. Utilisez une URL HTTPS publique (et non une URL SSH git@…) afin que le build puisse la récupérer sans identifiants.
2. Configurer le chemin des addons personnalisés dans Skysize
Comme le sous-module se trouve dans un sous-répertoire, indiquez-le à Odoo :
-
Accédez à votre projet et ouvrez l'onglet Branches.
-
Cliquez sur votre branche pour ouvrir ses paramètres.
-
Dans la carte Configuration des addons, définissez le Chemin des addons personnalisés sur le répertoire du sous-module :
/addons/oca_web -
Cliquez sur Enregistrer.
3. Redéployer et installer
Poussez un commit (ou utilisez Reconstruire sur la branche) pour déclencher un nouveau déploiement. Une fois le build réussi, installez le module depuis le menu Apps d'Odoo comme décrit ci-dessus.
Résolution des problèmes
Le module n'apparaît pas dans le menu Apps
- Assurez-vous que le mode développeur est activé dans Odoo (Settings → Activate the developer mode), puis cliquez sur Update Apps List.
- Confirmez que le dossier de votre module contient un
__manifest__.pyvalide. - Si votre module est dans un sous-répertoire, vérifiez que le Chemin des addons personnalisés est bien défini et correspond à la structure réelle des répertoires (les chemins sont sensibles à la casse).
- Consultez les logs de déploiement (build) (cliquez sur Voir les logs) pour détecter d'éventuelles erreurs liées au chargement des modules ou à l'échec d'installation d'une dépendance.
Le répertoire du sous-module est vide après le déploiement
- Confirmez que l'URL du dépôt du sous-module est une URL HTTPS publique accessible sans authentification.
- Vérifiez que le fichier
.gitmodulesest committé et que le chemin du sous-module est correct.
Un module s'installe mais une dépendance Python est manquante
- Ajoutez la dépendance à un fichier
requirements.txtà la racine de votre dépôt. Skysize l'installe automatiquement pendant le déploiement.