italia / docs-italia-comandi-conversione

Comandi di conversione di formato per Docs Italia
GNU Affero General Public License v3.0
7 stars 3 forks source link

Distribuzione più efficace #35

Closed danse closed 6 years ago

danse commented 6 years ago

@ioggstream vorrebbe usare i comandi installandoli con Dockerhub, per esempio eseguendo:

$ docker pull docs-italia-comandi-conversione

Questo potrebbe essere anche un modo più efficace di fare il deploy dei comandi per il convertitore web, e se non mi sbaglio ci libererebbe anche dal mantenere allineate le regole Ansible con gli eseguibili installati da filtri e comandi.

@paoloromolini @yakky, che ne dite?

danse commented 6 years ago

collego questa issue con un'issue interna che ne è quasi un duplicato, per gestirle meglio https://trello.com/c/SYYXUL2m/21-miglioramenti-al-deploy-dei-comandi-di-conversione

yakky commented 6 years ago

Onestamente sarei abbastanza contrario al container docker in questo caso, perché mi sembra una complessità del tutto sproporzionata rispetto ai task da compiere Semplifica la distribuzione ma IMHO ci complica tantissimo la vita nel codice del convertitore web e quindi non saprei dire se è un guadagno vero o meno

danse commented 6 years ago

@ioggstream è difficile usare i comandi distribuiti attraverso dockerhub come hai proposto? Tu come li useresti? Immagino che si tratti di eseguire qualcosa tipo:

$ docker run pandoc -- --opzione1 valore1 # etcetera ...

Poi probabilmente servirebbe mappare una cartella dell'ospite con una cartella dell'immagine docker.

Io posso compilare con Ubuntu 16 04 (fra un mese si passerà a 18 04) a 64 bit abbastanza facilmente, ma docker mi sembra una buona alternativa alla cross-compilazione

ioggstream commented 6 years ago

Ciao @yakky. Il mio problema:

C'è un modo per:

Considerate che:

Feedback welcome

ioggstream commented 6 years ago

@danse io uso questo nel mio repo

https://github.com/teamdigitale/api-openapi-samples/blob/master/bin/api-spec-converter.sh

danse commented 6 years ago

@ioggstream okay capisco meglio, a te interessa usare solo i filtri. Non ho capito il ruolo dell'API converter, ma credo non sia importante ... perché un conto sono gli utenti dei comandi di conversione, un conto sono gli utenti dei filtri. Per questo credo che questa issue https://github.com/italia/docs-italia-pandoc-filters/issues/2 spieghi meglio il tuo caso. L'ho aperta nell'altro repo così magari potremo chiuderla con una patch al README

danse commented 6 years ago

ho dato un'altra occhiata all'api-spec-converter.hs e credo si tratti del tuo wrapper per eseguire comandi di conversione ... per capire cosa fa credo di dover leggere anche /usr/local/bin/api-spec-converter e la ricetta dell'immagine per api-spec-converter. Un'alternativa più semplice sarebbe usare i binari compilati che ho appena aggiunto all'ultima release. Credo che il convertitore web potrebbe usare quelli.

Volendo potremmo avere un'immagine docker con Ubuntu 16 04 ed i binari installati, ci terrei però a tenere il tutto il più semplice possibile. Mantenere dei wrapper è scomodo perché ci porta a limitare il modo in cui gli utenti possono usare i comandi. Per quel che ne so un'alternativa sarebbe quella di usare i comandi all'interno di una shell docker. In questo momento l'idea è di supportare gli utenti tramite il convertitore web, tramite i binari per ubuntu, e tramite l'installazione da sorgente. A questo possiamo anche affiancare un'immagine docker che contenga i binari se c'è interesse, e se la cosa è semplice da mantenere ed usare. Credo che la priorità di questo caso d'uso sia bassa per noi al momento ma sono disposto a collaborare se @ioggstream ha voglia di sperimentare un po'

ioggstream commented 6 years ago

usare i binari compilati

Si potrebbero compilare nella pipeline di circleci

supportare gli utenti tramite il convertitore web

Ottimo.

affiancare un'immagine docker che contenga i binari

L'immagine potrebbe anche solo scaricare i binari ed embeddarli (senza build)

Appena ho un attimo vi dico.

danse commented 6 years ago

L'immagine potrebbe anche solo scaricare i binari ed embeddarli (senza build)

Si, quello che pensavo anch'io

Si potrebbero compilare nella pipeline di circleci

Non ho molta familiarità con il servizio ma non mi dispiacerebbe provarlo, usi un account del team?

ioggstream commented 6 years ago

account personale. circleci è gratuito per i progetti floss.

yakky commented 6 years ago

Lato mio al momento vorrei togliere la compilazione haskell dalle rule ansible di docs italia :) Per la distribuzione come utente singolo docker è sicuramente più comodo, per l'uso del convertitore web, se c'è un'immagine già pronta posso agilmente fare 2 prove Se bastasse un docker run -w /path/to/source/docs pandoc -- ... potrebbe andare bene anche per il convertitore web Per la distribuzione extra convertitore mi rimetto a voi, è un caso d'uso che non seguo quindi non ne conosco i requirement Non so se ci sono linee guida a livello di TD per i servizi di CI. Su docs italia comunque usiamo travis (dove è comunque possibile generare binari / immagini docker all'interno del processo di build), ed eventualmente posso dare una mano con quello

danse commented 6 years ago

Quando ho scritto questa issue pensavo che docker fosse la soluzione ideale per tutti, ma discutendone ho rivalutato l'opzione dei binari, quindi credo che questa sia diventata una issue sull'uso di docker per distribuire i comandi.

Riassumo i casi d'uso che stiamo affrontando:

Spero che la distribuzione binaria che propongo sopra funzioni bene ai fini del convertitore web, quindi qui ci resterebbe da risolvere il secondo problema che ha un impatto più ridotto. Per come la vedo:

Questo risolve il problema del servizio web già da adesso, per quel che mi riguarda. Quanto a docker, potremo facilmente includere i binari in un'immagine analoga al sistema su cui gira il servizio. L'immagine fornirà una distribuzione alternativa per gli utenti che vorranno usare docker

Se siete d'accordo sul piano rinominerò questa issue per maggiore chiarezza. A questo punto la issue non avrebbe nessun impatto sul lavoro di @yakky

yakky commented 6 years ago

@danse sto aggiornando il role per il convertitore web, grazie! I filtri però non hanno ancora una distribuzione binaria, giusto?

yakky commented 6 years ago

@danse qui i role ansible modificati italia/docs-italia-deploy-scripts#39 (mentre in italia/docs-italia-deploy-scripts#38 ho tolto i riferimenti a pandoc e ho chiamato un più generico "converter")

danse commented 6 years ago

bel lavoro! Credo che i filtri non siano necessari per lanciare una prima versione del convertitore web, comunque ho appena pubblicato i binari qui: https://github.com/italia/docs-italia-pandoc-filters/releases/tag/v0.1.2.

sarei più tranquillo se testassimo questi binari sulla macchina quanto prima, magari potremmo riparlarne al mio ritorno

yakky commented 6 years ago

@danse perfetto. integro subito in #39 Posso già lanciare il deployment di tutto, a questo punto

yakky commented 6 years ago

@danse ho provato a lanciare il deployment ma a occhio i binari non sono statici perché lanciandolo (normalmente da console) mi ritorna questo errore:

ubuntu@~$ pandoc tmp/26cde1a27dcf11e898cffa163e251d61/condizioni-generali-esercenti.docx 
Could not find data file /home/francesco/docs-italia-comandi-conversione/.stack-work/install/x86_64-linux/lts-10.10/8.2.2/share/x86_64-linux-ghc-8.2.2/pandoc-2.2.174/data/abbreviations

A occhio mancano dei datafile A questo punto proverei la strada docker, che forse è quella meno trial and error, e vediamo di risolvere il problema della chiamata lato celery

danse commented 6 years ago

da quel che ho capito non adotteremo Docker da qui a settembre. Spero di aver risolto il problema coi data files con la release 0.3. Se mi confermi chiuderei questa issue. @pablopers hai mai provato le distribuzioni binarie? Se ti andasse di farci un giro ci faresti un favore :slightly_smiling_face:

danse commented 6 years ago

Post Scriptum @pablopers se vuoi provare le distribuzioni eseguibili ti consiglio di aspettare la soluzione di #32 così in una volta sola testi anche che quella issue sia risolta per te

danse commented 6 years ago

i binari hanno funzionato finora, apriamo nuove issues per problemi più specifici