-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Workflow per gestione di container di sviluppo per applicazione Django #90
Comments
Per "testare l'applicazione" intendo qualcosa di analogo a uno staging environment, in cui posso interagire manualmente con l'applicazione web. |
Ci sono tanti punti. Provo a rispondere quotandoli uno a uno qui, poi se finisce che github non si presta a discussioni articolate di questo tipo, possiamo organizzare una piccola call.
Al momento non è possibile, ma mi piacerebbe che lo fosse. Ci sono due possibili strategie:
L'opzione piú pulita è di solito la 1. L'altro problema è che ansible è leeeento! Vorrei fare provisioning delle macchine con ansible invece di uno script hardcoded nella loro configurazione, ma la latenza nella manutenzione di molte immagini purtroppo diventa ingestibile :/
Prova a usare
Certo, usare
Esatto: al momento il namespace di rete è lo stesso del sistema host, per cui django lanciato dentro l'immagine è perfettamente accessibile da fuori. Il rovescio della medaglia è che postgres che gira nel sistema host è perfettamente accessibile da dentro, e quindi rischi un conflitto sulle porte quando provi a tirar su django dentro alla macchina guest |
Grazie @spanezz per i sempre ottimi suggerimenti! Ti rispondo punto per punto, anche se sto creando ramificazioni che immagino porteranno a una call :)
L'idea (almeno la mia) è quella di poter fare un
Concordo! E grazie per il link, inizio a sperimentare!
Drammaticamente verissimo, ma ha il vantaggio di essere uno standard de facto e inoltre potrei usare lo stesso playbook (credo) per tutti gli ambienti. Credo che l'unica soluzione sia comprare una spada di legno :)
Usando
Bellissimo! ❤️
Mannaggia, vero! Così a occhio mi viene da dire che la possibilità più semplice è di configurare tutti i servizi della macchina su porte diverse, però va un po' in conflitto con lo spirito del |
Sí, il bug merita comunque aprirlo, cosí poi vediamo nella discussione del bug il modo migliore per gestire la cosa
Questo è un problema che mi piacerebbe affrontare meglio, perché il caso d'uso è importante. Ci spostiamo in #22? |
Dopo la chiacchierata con @spanezz (as in: lui parlava, io ascoltavo 😄 ), ho aggiornato il In questo modo, posso usare le directory standard di moncic-ci ( .moncic-ci-bootstrap:
monci image $(MONCI_IMAGE) extends rocky8
monci image $(MONCI_IMAGE) install $(PACKAGES)
touch .moncic-ci-bootstrap
check: .moncic-ci-bootstrap
monci run -W . $(MONCI_IMAGE) bash -c "ansible-playbook ... && python3 runtest.py"
security-check: .moncic-ci-bootstrap
monci run -W . $(MONCI_IMAGE) bash -c "bandit -r . && safety ..."
clean:
monci remove --purge $(MONCI_IMAGE)
$(RM) .moncic-ci-bootstrap .moncic-ci-bootstrap
.PHONY: check |
Una premessa: questa non è una issue ma un appunto su come gestire lo scenario descritto sotto usando
moncic-ci
come tool di test. In fondo, ho messo un po' di considerazioni/dubbi.Lo scenario è il seguente: ho un'applicazione Django in un repository git che vorrei testare man mano che faccio modifiche usando monci-ci e vorrei che il tutto rimanesse autoconsistente, quindi con un
git clone
posso fare le stesse operazioni su un altro server, senza setup particolari.Ho a disposizione un playbook Ansible per il provisioning dei vari ambienti (per ora, deploy e test): nel caso di quello di test i task fondamentali sono:
Al momento, ho messo in piedi il seguente workflow:
.moncic-ci/simclog2.yaml
make bootstrap
make provision-development
monci run -I .moncic-ci -W . bash -c "DJANGO_SETTINGS_MODULE=logmetarpa.settings.development python3 manage.py test
Il Makefile risultante è
Note:
--bind-ro
perché le opzioni-W, -w, --clone
non vanno d'accordo con--maintenance
: il comandomonci --root -W . --maintenance
fallisce perché prova a creare l'utente 1000 (forse perché tra le modifiche salvata dall'opzione--maintenance
c'è anche il mount della directory?)--maintenance
. Ci sono modi più furbi di create un'immagine basesimclog2.yaml
e due derivatesimclog2-production.yaml
esimclog2-development.yaml
e poi usare queste ultime?monci run
omonci shell
.The text was updated successfully, but these errors were encountered: