Inclure un dépôt externe (sous-modules)
Vous souhaiterez peut-être inclure des modules d'un autre dépôt, comme un module communautaire OCA ou une bibliothèque partagée, dans votre déploiement Skysize. Skysize initialise les sous-modules Git pour vous à chaque déploiement. Les sous-modules publics ne demandent aucune configuration. Les sous-modules privés reçoivent leur propre clé de déploiement en lecture seule, déclarée une fois dans les paramètres du projet.
Ajouter un sous-module public
Depuis un clone local de votre dépôt, ajoutez le sous-module et poussez :
# 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
Lors du prochain déploiement, Skysize initialise automatiquement le sous-module, de sorte que les modules qu'il contient sont présents dans le checkout déployé.
Ajoutez le sous-module depuis la ligne de commande (git submodule add). Les éditeurs web de GitHub/GitLab ne peuvent pas créer de sous-module valide, modifier .gitmodules à la main dans le navigateur n'enregistre pas le lien du sous-module.
Rendre les modules détectables
Skysize analyse votre dépôt sur un niveau de profondeur pour trouver les modules Odoo (chaque sous-répertoire direct contenant un __manifest__.py). Si votre sous-module place les modules plus profondément, indiquez à Odoo le répertoire du sous-module à l'aide du champ Chemin des addons personnalisés, consultez Organiser les modules dans des répertoires imbriqués.
Sous-modules privés
Un sous-dépôt privé ne peut pas être cloné avec la clé de déploiement du projet, puisque cette clé n'est installée que sur le dépôt du projet. Skysize génère une clé de déploiement en lecture seule distincte pour chaque sous-module privé, exactement comme Odoo.sh, et l'installe pour vous sur le sous-dépôt chaque fois que c'est possible.
- Ouvrez votre projet, allez dans Paramètres, puis Sous-modules privés.
- Collez l'URL SSH du sous-dépôt, par exemple
git@github.com:UTILISATEUR/DEPOT.git, et cliquez sur Ajouter. - Si le projet a une connexion Git avec des droits d'administration sur le sous-dépôt, la clé est installée automatiquement et l'entrée affiche Clé de déploiement installée. C'est terminé.
- Sinon, l'entrée affiche la clé publique à ajouter à la main : sur le sous-dépôt, allez dans Settings → Deploy keys (GitHub), Settings → Repository → Deploy keys (GitLab) ou Repository settings → Access keys (Bitbucket), ajoutez la clé en lecture seule, puis cliquez sur Réessayer ou redéployez simplement.
Ajoutez ensuite le sous-module à votre dépôt comme d'habitude :
git submodule add git@github.com:UTILISATEUR/DEPOT.git external/private-addons
git commit -m "Add private addons submodule"
git push
L'URL dans .gitmodules peut être la forme SSH ou HTTPS du même dépôt, Skysize reconnaît les deux. Les sous-modules imbriqués dans un sous-module privé ne sont clonés que s'ils sont publics.
Le mécanisme est le même sur l'hébergement managé et sur Bring Your Own Server : la clé est transmise au serveur à chaque build et ne le quitte jamais ensuite. Retirer l'entrée révoque la clé chez le fournisseur lorsqu'elle avait été installée automatiquement.
Alternative : intégrer le code
Si vous préférez ne pas dépendre d'un sous-module, copiez les modules directement dans votre propre dépôt pour qu'ils fassent partie du clone 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
Comme les modules sont désormais commités dans votre dépôt, ils sont présents à chaque déploiement sans configuration supplémentaire. Pour les mettre à jour, répétez la copie, le commit et le push.
Installer le module dans Odoo
Les modules rendus disponibles par un sous-module ou par du code intégré ne sont pas installés automatiquement.
- Ouvrez votre instance Odoo.
- Activez le mode développeur : Settings → Activate the developer mode.
- Allez dans Apps, cliquez sur Update Apps List, puis recherchez votre module et cliquez sur Install.