# Anteprime di Deploy per le Pull Request

Source: https://support.kapsulehost.com/it-it/site-preview

Le preview deploy danno a ogni pull request un proprio URL live, costruito a partire dal codice di quel branch, cosicché i revisori possano navigare la modifica reale invece di leggere un diff e immaginarsela. Ogni preview si aggiorna quando viene inviato un nuovo commit e viene rimossa automaticamente quando la pull request viene chiusa.

## Dove si trovano le preview deploy

Apri **Siti web**, fai clic sul sito, apri il gruppo **Environment** nel menu a sinistra del sito e scegli **Anteprima**. La pagina si intitola **Preview deploy**.

Le preview sono separate dallo staging. Lo staging è una copia del sito a lunga durata su cui pubblichi deliberatamente; una preview è invece un ambiente a breve durata creato per ogni pull request e scartato in seguito. Molti team usano entrambi. Consulta [Ambienti di staging](https://support.kapsulehost.com/it-it/staging-environments) per l'altra metà.

![The Preview deploys page for a site in KPanel](https://support.kapsulehost.com/help/screenshots/site-preview.0fb977c9.webp)

## Configura prima il Git deploy

Le preview non sono una funzionalità a sé stante. Riutilizzano la chiave di deploy e il comando di build del sito di produzione, quindi il sito necessita di una configurazione Git Deploy funzionante prima che le preview possano essere abilitate.

Se Git Deploy non è configurato, la pagina mostra **Configura prima il Git deploy** e offre un pulsante **Vai a Git deploy** invece del modulo di abilitazione. Segui [Eseguire il deploy di un sito da Git](https://support.kapsulehost.com/it-it/site-git-deploy), poi torna qui.

> **Note:** Se Git Deploy è collegato ma non ha un comando di build, la pagina Preview mostra un avviso. Le preview presumeranno che il repository sia già compilato, con i file statici nella radice. Questo è corretto per un semplice sito HTML ed errato per qualsiasi cosa richieda compilazione, quindi imposta un comando di build nella pagina Git Deploy se il tuo progetto ne ha bisogno.

## Abilitazione delle preview

1. Nella scheda **Abilita preview deploy**, digita il repository nel formato `owner/repo`. Non un URL, non un indirizzo SSH: solo i due segmenti, ad esempio `acme/marketing-site`.
2. Fai clic su **Enable**.

Qualsiasi valore che non corrisponda a `owner/name` viene rifiutato con il messaggio **Il repository deve essere nel formato owner/name**.

Subito dopo l'abilitazione, KPanel mostra il webhook secret in una scheda intitolata **Copia il tuo webhook secret adesso**, con un avviso che non lo vedrai più in seguito.

> **Important:** Copia il secret prima di lasciare la pagina. Viene generato una sola volta e non può essere recuperato in seguito. Se lo perdi, la soluzione è rigenerarlo, il che invalida quello vecchio e comporta comunque l'aggiornamento del webhook del tuo repository.

## Aggiungere il webhook al tuo repository

La scheda configurata mostra un **URL webhook** da incollare nelle impostazioni del tuo repository, sotto Webhooks. Configuralo con:

- **URL payload**: l'URL webhook mostrato nella pagina.
- **Secret**: il valore appena copiato.
- **Tipo di contenuto**: JSON.
- **Eventi**: eventi di pull request, più i push, in modo che i nuovi commit su una pull request aperta ricostruiscano la preview.

Una volta impostato questo, l'apertura di una pull request genera una preview entro pochi minuti. Un processo in background controlla la presenza di nuovo lavoro di preview ogni minuto, quindi non è necessario premere nulla in KPanel.

## URL delle preview

Ogni preview ottiene un proprio hostname nella forma `pr-<pull-request-number>-<site-id>.kapsulecloud.app`, coperto da un certificato wildcard, così viene servito via HTTPS senza alcun passaggio di certificazione da parte tua.

Il modo affidabile per aprirne una è il pulsante **Open** nella riga della preview in **Preview recenti**, che riporta l'URL esatto assegnato a quella build. Incolla quel link nella pull request in modo che i revisori non debbano affatto cercare KPanel.

## Lettura dell'elenco Preview recenti

La sezione **Preview recenti** elenca le preview più recenti, dalla più nuova alla più vecchia. Ogni riga mostra il numero e il titolo della pull request, il branch, il commit e uno stato:

| Stato | Significato |
|---|---|
| BUILDING | Clonazione e build in corso |
| LIVE | In funzione al proprio URL di preview |
| FAILED | La build ha generato un errore; espandi il log per scoprire perché |
| DESTROYED | Rimossa, di solito perché la pull request è stata chiusa |

Fai clic su **Attiva/disattiva log di build** su una riga per espandere il relativo output di build in linea. Quel log è il primo posto da controllare quando una preview fallisce, ed è lo stesso output che la tua build produrrebbe in locale.

Se l'elenco è vuoto, la pagina lo segnala: apri una pull request sul repository e una preview verrà generata entro pochi minuti.

## Rotazione del webhook secret

Fai clic su **Rigenera secret** nella scheda configurata. KPanel chiede conferma ed è esplicito nel dire che il secret attuale smette di funzionare immediatamente e che dovrai aggiornarlo nelle impostazioni del webhook del tuo repository in seguito.

Il nuovo secret viene mostrato una sola volta, nella stessa scheda temporanea di prima. Copialo, poi aggiorna il webhook nel tuo repository. Tra questi due momenti, le consegne del webhook in arrivo vengono rifiutate, quindi esegui i due passaggi uno di seguito all'altro.

Rigenera il secret quando una persona con accesso amministrativo al repository lascia il team, oppure se il secret è mai stato incollato in un luogo in cui non avrebbe dovuto trovarsi, come un canale di chat condiviso o un ticket.

## Disattivazione delle preview

Fai clic su **Disable**. La configurazione viene disattivata e il secret salvato viene cancellato. Le preview esistenti smettono di essere ricostruite.

Riordina anche eliminando il webhook nel tuo repository. Inizierà a fallire invece di fare qualcosa di dannoso, ma un webhook che restituisce errori all'infinito è rumore nel registro delle consegne del tuo repository.

## Costi e manutenzione

Le preview compilano ed eseguono codice reale, quindi utilizzano le stesse risorse di qualsiasi altro deploy sul sito. Due abitudini mantengono tutto sotto controllo:

- Chiudi le pull request su cui non stai più lavorando. Una pull request chiusa ha la propria preview rimossa automaticamente.
- Non puntare le preview verso credenziali di produzione. Fornisci loro chiavi di test tramite l'ambiente **preview** della scheda [Secrets](https://support.kapsulehost.com/it-it/site-secrets), che esiste proprio per evitare che la configurazione di preview e produzione possa essere confusa.

> **Warning:** Un URL di preview non è privato. È un hostname reale, pubblicamente raggiungibile e con un certificato valido, e chiunque abbia il link può aprirlo. Non utilizzare una preview per rivedere nulla che contenga dati reali di clienti, e non popolare gli ambienti di preview con un dump del database di produzione.

## Risoluzione dei problemi

**Non viene generata alcuna build quando si apre una pull request.** Controlla le consegne recenti del webhook nel tuo repository. Un 401 o 403 significa che il secret non corrisponde, quindi rigeneralo e aggiorna entrambi i lati. Nessuna consegna significa che il webhook non è iscritto agli eventi di pull request.

**La preview viene generata ma mostra un elenco di directory o un 404.** La directory di output nella pagina Git Deploy non corrisponde a dove la tua build scrive effettivamente. Le preview ereditano quell'impostazione dalla produzione.

**La build fallisce solo nella preview.** La causa più comune è una dipendenza o una variabile d'ambiente che esiste in produzione ma non è mai stata aggiunta all'ambiente di preview. Controlla la scheda **preview** nella pagina Secrets.

**Un URL di preview smette di funzionare.** Guarda lo stato nella sua riga. **DESTROYED** significa che la pull request è stata chiusa e l'ambiente è stato recuperato, il che è il comportamento previsto.

## Prossimi passi

- [Eseguire il deploy di un sito da Git](https://support.kapsulehost.com/it-it/site-git-deploy), la configurazione prerequisita.
- [Memorizzare i secret dell'app per un sito](https://support.kapsulehost.com/it-it/site-secrets) per le credenziali per ambiente.
- [Ambienti di staging](https://support.kapsulehost.com/it-it/staging-environments) per una copia pre-produzione persistente.
