Git is the new Filezilla

TLDR;

Capita, nel 2018, di pubblicare siti con FTP. Incredibile vero? Il mondo reale funziona così. A dire il vero ci sono agenzie che lo fanno da anni e vivono serene. Quindi limito subito l'aspetto snob e lamentoso della faccenda e metto i miei 2 cent per una soluzione.

Versione estesa

Piccola premessa

Siccome:

  • Non sto pubblicando da un mese;
  • L'obiettivo per il 2018 era (ed è) pubblicare dodici post, siamo a novembre e con questo siamo a quota nove;
  • Ho letto che una developer che stimo molto ha ripreso a scrivere obbligandosi a diminuire la lunghezza dei suoi post;

Ho pensato di scrivere questo post che al tempo stesso è banale per i tecnici e incomprensibile per i non tecnici MA potrebbe tornare utile a qualche agenzia/collega/amico.

GIT vs FTP

Se anche tu ti trovi ancora nelle situazione di dover pubblicare un sito, devi sapere una cosa. Che magari già sai, ma te la ripeto a scanso di equivoci:

FTP è il male. GIT è La Forza.
Primo piano di GIT

Abbandonare FTP per GIT è la svolta. Addio file sovrascritti per errore, file dimenticati, e tutte quelle situazioni in cui non vorresti trovarti. ...che poi capitano sempre di venerdì sera.

Operativamente è possibile ma soprattutto ne vale la pena. Ci vuole giusto un minimo di organizzazione. Ti racconto come ho trovato una quadra.

Un flusso per il codice, un flusso per il contenuto

L'idea alla base è facile: il codice e tutto quello che scriviamo noi tecnici, viene scritto sui nostri computer (aka "in locale") e si pubblica – sia produzione, sia staging – SOLO ed esclusivamente via GIT. Monodirezionale. One way.

Diagramma che descrive il flusso del codice
Da localhost, con amore

La cosa carina è che i server di staging e di produzione (live), si possono impostare in modo che si aggiornino in automatico non appena pubblichi (pushi) qualcosa sul repository relativo. Immagina che per pubblicare su staging devi fare da tastiera "git push staging master". Bom, finito. Figo eh.

Invece i contenuti (quindi il database) e gli assets (per lo più immagini) sono sacrosanti quelli online. E anche questi sono monodirezionali ma dal lato opposto. Quindi dall'online al locale. No exception.

Diagramma che descrive il flusso dei contenuti
Solo contenuti freschi, grazie

Quindi l'unica cosa che ti devi ricordare è che non esiste che scrivi in locale e poi pubblichi. Mai. 

Fine. Rispettando queste due regole e trovi la pace dei sensi.

La fai facile, la fai

Ok, è un po' più complicato di così. Ma nenanche troppo.

Per impostare i server io me la sono cavata prendendo spunto da questo post (con tanto di script di esempio) di Cosmic (fighi loro).

Per la teoria invece, ho fatto riferimento a questo articolo di nystudio107 (insomma di mio non c'è niente 😅).

Quindi adesso invece di aprire Transmit o Filezilla, collegarmi, sincronizzare etc etc, scrivo un bel `git push prod master` e bom. Finito. Figo, no?

Ti lascio qui una serie di dettagli e approfondimenti semmai volessi appronfondire:

  • Se non sai come organizzare i branch di GIT, devi usare un modello di riferimento. Noi in Modo usiamo GIT Flow. È bellissimo pure lui.
  • Se non sai proprio usare GIT, suggerisco (senza averlo letto) il libro di a book apart. È una di quelle cose che poi non ne puoi più fare a meno.
  • Craft CMS permette di specificare diverse configurazioni per diversi ambienti. È bellissimo e comodissimo pure lui.

...quanta beltà in questo elenco puntato.

Finito.

Se fai siti, usi FTP, e hai letto fin qui, vuoi dare una chance a tutto quello che ho scritto, stai sicuro che poi avrai voglia di offrirmi una birra.

E stai pure sicuro che io la berrò volentieri 🍻 Viva!