Benvenuto!
Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.
Configurazione multiple repo
Salve,
sto gestendo diversi progetti che usano un certo numero di repo (circa 40 principalmente OCA) ognuna con una serie di moduli - ovviamente qualche progetto usa qualche repo e qualcuno qualche altra, qualcuno usa qualche modulo qualcuno no. (alla fine sono quasi 1600 moduli :(( )
Il vantaggio che ho sta nel poter aggiornare quasi costantemente le repo con pochissima fatica e poi con uno script automatizzo l'aggiornamento dei singoli db.
Secondo voi la strategia migliore / quella che usate è:
1) aggiungo negli addons le singole repo
2) uso una directory ad-hoc e linko i moduli delle singole repo
3) uso la (2) e qualche trucco per eliminare le repo che non vengono usate?
Il problema è che adesso lo startup è lento ( forse causa docker) e non è comodo per debuggare (con riavvii continui per aggiornare i moduli).
Suggerimenti?
Io uso docker e clono i repo nel container invece di usare pip.
Più che altro per pigrizia, non ho mai modificato le mie immagini per snellirle.
I casi in cui devo usare più di 6-7 repo sono veramente pochi e anche dove arrivo a 10-12 lo startup del sistema non è lentissimo. Ovviamente tutti dipende dal IO del server.
Dal mio punto di vista hai due alternative:
1. limiti il numero di repo
2. usi wheelhouse.odoo-community.org
Piu' che intervenire su odoo, la modifica da te proposta blocca l'inserimento di nuovi moduli dopo il deploy del database, dovresti intervenire in fase di build del container .....
Io ho uno script banale che copia, in fase di build (CI o docker build poco importa) solo i moduli di una lista (taglio anche i moduli che odoo considera standard ma standard non sono) in modo tale da avere un'immagine con solo quello che serve non con tutta la spazzatura.
Io faccio cosi' .... progetto git del cliente con submodule tutto quello che mi serve ... script che esegue un update git dei submodule (non ricordo il comando :D) e poi copia selettiva nel container di solo quello che serve da lista .... in realta' copio prima in temp per evitare di creare mille layer.
1200 moduli ... ma anche 400 e rotti di odoo e' follia ... al di la dei problemi di lentezza, non ho mai constatato visto che non li ho mai avuti, l'immagine risulta di dimensioni assurde se non altro per le mille mila traduzioni che ogni modulo si porta dietro.
IMHO taglia tutto quello che non ti serve prima che arrivi all'immagine ... appena hai fatto ti chiederai come facevi senza prima.
Unico problema del cazzo, i moduli standard di odoo che mettono opzioni in config che i realta' so install di altri moduli ... ma vista la pericolosita' di tale approccio meglio che generi errore.
Grazie Davide,
Anche io clono i repo nel container ( non uso pip ma direttamente dalle repo git). Ho scoperto che il problema non è lo startup normale ma quando lo lanci con l'aggiornamento di un modulo - nel mio caso quello che sto sviluppando e che avendo variazione del codice python mi richiede il riavvio dell'applicativo.
Come dicevo io di repo al momento ne clono circa 40 (OCA) più 5/6 mie interne. Il problema non è il numero delle repo ma il numero dei moduli che lui "scorre" ad ogni riavvio o aggiornamento.
Comunque ho risolto modificando il modulo base/models/ir_module.py ( so che è una bestialità ma in sviluppo mi risparmia ore) aggiungendo un paio di righe nel metodo "update_list" ovvero
# iterate through detected modules and update/create them in db
for mod_name in modules.get_modules():
mod = known_mods_names.get(mod_name)if mod:
if mod.state == 'uninstalled' :
continue
Facendo così se in un repo viene aggiunto un nuovo modulo non lo vedi.
ha ragione, infatti è una modifica che metto e "tolgo". Ovvero se sto debuggando un mio modulo py e non voglio perdere tempo ad ogni riavvio ( e ne faccio parecchi perchè sono un po' capra ed ho scoperto che 1 volta su due il semplice reload del modulo non recepisce il codice py) lo attivo altrimenti se devo fare un aggiornamento delle repo o installare qualcosa di nuovo "uninstalled" diventa "xxx uninstalled" e tutto torna come prima ;)
Resta informato
Informazioni sulla comunità
Strumenti di richiesta
Statistiche
Richiesta del: 08/09/20, 10:20 |
Vista: 1261 volte |
Ultimo aggiornamento: 14/09/20, 12:23 |
Entra in contatto diretto con la comunità.
Unisciti alla chat Discord.