Closed danse closed 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
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
@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
Ciao @yakky. Il mio problema:
C'è un modo per:
Considerate che:
Feedback welcome
@danse io uso questo nel mio repo
https://github.com/teamdigitale/api-openapi-samples/blob/master/bin/api-spec-converter.sh
@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
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'
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.
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?
account personale. circleci è gratuito per i progetti floss.
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
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
@danse sto aggiornando il role per il convertitore web, grazie! I filtri però non hanno ancora una distribuzione binaria, giusto?
@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")
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
@danse perfetto. integro subito in #39 Posso già lanciare il deployment di tutto, a questo punto
@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
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:
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
i binari hanno funzionato finora, apriamo nuove issues per problemi più specifici
@ioggstream vorrebbe usare i comandi installandoli con Dockerhub, per esempio eseguendo:
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?