Forum

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.

0

Configurazione multiple repo

Avatar
Luigi Gregori

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?


Avatar
Abbandona
6 Risposte
1
Avatar
Davide Corio
Migliore risposta

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

Avatar
Abbandona
0
Avatar
Luigi Di Naro
Migliore risposta

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.

Avatar
Abbandona
-1
Avatar
Luigi Gregori
Migliore risposta

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
In questo modo skippa bellamente tutti i moduli non installati e vola!
Avatar
Abbandona
0
Avatar
Davide Corio
Migliore risposta

Facendo così se in un repo viene aggiunto un nuovo modulo non lo vedi.

Avatar
Abbandona
0
Avatar
Luigi Gregori
Migliore risposta

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  ;)

Avatar
Abbandona
-1
Avatar
Walter Tosolini
Migliore risposta

Cioè ma voi caricate i moduli dentro il container?!

Avatar
Abbandona
0
Avatar
Davide Corio
Migliore risposta

Ormai uso quasi solo più esclusivamente Odoo.sh, ma dai clienti che preferiscono avere Odoo on-premise, sul filesystem dei server di produzione non metto nulla se non la configurazione dell'ambiente docker stesso

Avatar
Abbandona