Vai al contenuto
Vimonto Deploy

Deployment

Deploy che non mandano mai offline il tuo sito

Ogni deploy crea una release nuova accanto a quella attiva e passa alla nuova versione solo quando ogni passaggio è riuscito. Fai push sul tuo branch, chiama un URL di deploy dalla CI o clicca Fai il deploy.

Come funziona

Quattro passaggi, e solo l'ultimo tocca il sito online

  1. 1

    Recupera il codice

    Il tuo branch viene clonato in una nuova directory di release che porta data e ora. Vengono registrati il commit, l'autore e il messaggio.

  2. 2

    Crea la release

    Il .env condiviso (e per Laravel anche storage/) viene collegato, poi il tuo script di deploy gira dentro la nuova release come utente del sito.

  3. 3

    Online in modo atomico

    current viene puntato sulla nuova release con un solo rename. PHP-FPM si ricarica così OPcache vede i nuovi file, e i queue worker si riavviano.

  4. 4

    Cinque release conservate

    Le release più vecchie vengono eliminate; le cinque più recenti restano sul server, così un rollback è istantaneo e non richiede alcuna build.

Script di deploy

Uno script di deploy che puoi leggere e modificare

Ogni sito parte con uno script di deploy adatto al suo framework. È semplice Bash, gira con set -e nella nuova release e lo modifichi nel browser.

Usa $VIMONTO_PHP e $VIMONTO_COMPOSER al posto di php e composer, così lo script segue la versione PHP del sito quando la cambi. Hai a disposizione anche il branch e il commit in fase di deploy.

Script di deploy — predefinito Laravel
$VIMONTO_COMPOSER install --no-dev --no-interaction --prefer-dist --optimize-autoloader

if [ -f package.json ]; then
    if [ -f package-lock.json ]; then npm ci; else npm install; fi
    npm run build
fi

$VIMONTO_PHP artisan storage:link --force
$VIMONTO_PHP artisan migrate --force
$VIMONTO_PHP artisan optimize

Avvia un deploy nel modo che preferisci

  • Push to deploy

    Collega un repository da GitHub, GitLab (anche self-hosted) o Bitbucket e il webhook viene aggiunto per te. I push sul branch del sito avviano il deploy; gli altri branch vengono ignorati.

  • Un URL di deploy per la CI

    Chiama un URL segreto con POST come ultimo step della tua pipeline, così un deploy parte solo quando i test passano. Le risposte sono semplice JSON.

  • Fai il deploy

    Un pulsante nell'intestazione del sito. Segui le fasi in tempo reale, oppure chiudi la pagina: il deploy gira sul server e ricevi un messaggio quando finisce.

  • API e CLI

    Avvia i deploy dai tuoi script con l'API REST, oppure dalla CI con la CLI di deploy e --watch, così un deploy fallito fa diventare rossa la pipeline.

    Automazione

Segui ogni deploy mentre avviene

La pagina di un deploy mostra le fasi Recupera, Build e Live, lo step in corso e l'output di ogni step. Un deploy concluso o fallito invia una notifica, nell'app, via email o al tuo endpoint.

Un deploy concluso in Vimonto Deploy con le fasi Recupera, Build e Live, i dettagli del commit e il log di ogni step
Un singolo deploy: fasi, commit e log.

Se un deploy fallisce, non cambia nulla

Se il recupero del codice o lo script di deploy falliscono, la nuova release viene scartata e current non viene toccato. I visitatori continuano a vedere la versione online, e la pagina del deploy mostra l'errore con il log completo.

Tornare indietro è altrettanto rapido: scegli Rollback su un deploy precedente e quella release torna online, senza ricostruire nulla. Le migration del database non vengono annullate, quindi gestiscile tu quando una release lo richiede.

  • Un solo deploy alla volta per sito
  • Il primo deploy crea il .env a partire dal tuo .env.example
  • Ogni modifica al .env viene conservata: ripristina una delle ultime 50
  • Preferisci build più veloci? Passa un sito ai deploy sul posto

I rollback nella documentazione

Rilasci più sicuri

  • Siti di staging

    Una copia di un sito per un altro branch, come develop, su un proprio indirizzo e con un proprio database. Ogni push su quel branch lo distribuisce.

  • Controlli di sicurezza

    Ogni deploy controlla le dipendenze Composer e npm della nuova release prima che vada online. Scegli per sito se una vulnerabilità nota dà un avviso o ferma il deploy.

  • Cosa è andato storto

    Un deploy fallito viene spiegato in parole semplici a partire dal suo log, con correzioni suggerite, la più probabile per prima.

Domande sui deploy

Devo tenere aperta la pagina del deploy?

No. I deploy girano sul server come attività in background. Chiudi pure la pagina; chi ha avviato il deploy riceve un messaggio quando finisce, e ogni deploy compare nella pagina Attività e nel registro di audit.

Quante release vengono conservate?

Cinque: le release più recenti, sempre inclusa quella online. Le più vecchie vengono rimosse dopo ogni deploy riuscito.

Da quali host Git posso fare il deploy?

GitHub, GitLab (anche GitLab self-hosted) e Bitbucket, con push to deploy. Qualsiasi altro server Git funziona tramite un URL Git personalizzato con la deploy key del sito; avvia quei deploy con l'URL di deploy.

Posso fare il deploy senza zero downtime?

Sì. Con i deploy zero-downtime disattivati, ogni deploy aggiorna una sola release sul posto, che mantiene vendor/ e node_modules/ e fa build più veloci. Rinunci ai rollback, e i visitatori potrebbero vedere il sito durante la build.

Il tuo prossimo deploy potrebbe essere online prima che finisca il caffè.

Crea un’organizzazione, collega un server e fai push. Tutto qui.