Eliminando una preview di richiesta di pull sembra essere un lavoro da un comando. CapgoC'è un piccolo problema: devi allontanarti da una previsualizzazione attiva prima di eliminarla, quindi rimuovere i pacchetti con ID. Costruiremo un flusso di pulizia sicuro con una chiave di pulizia restritta API, ricerca di previsualizzazione, gestione di reset, cancellazione di pacchetti e automazione di CI.
Indice dei contenuti
- Passo 1: Crea una chiave Capgo API Limitata per la Previsualizzazione di Pulizia
- Passo 2: Identificare la Previsualizzazione di Richiesta e gli ID dei Pacchetti
- Passo 3: Passare da una Previsualizzazione Attiva prima della Pulizia
- Passo 4: Elimina bundle di anteprima per ID con la chiave API
- Passo 5: Automatizzare la Pulizia quando una Richiesta di Pulizia si chiude
- Passo 6: Verificare la Pulizia e proteggere i Rollout da eliminazioni accidentali
- FAQ
- Conclusione
Passo 1: Crea una chiave Capgo API limitata per la preview pulizia
La prima fase di una Capgo pulizia della preview di richiesta di pull è creare una chiave che può eseguire solo il lavoro necessario dal tuo job di CI.
Non inserire una chiave di organizzazione ampia in un flusso di lavoro di richiesta di pull. Una richiesta di pull può provenire da una branca che non ha ancora guadagnato la fiducia. Il flusso di lavoro può anche stampare un comando o un valore di ambiente durante un esecuzione fallita. Una chiave ristretta limita i danni se accade.
In Capgo, inizia con una chiave di anteprima dell'applicazione per il lavoro di preview. La chiave dovrebbe essere legata allo scope dell'app o della preview che il tuo job gestisce. Se il tuo team utilizza il controllo di accesso basato su ruoli, limita la chiave agli app selezionati invece di concedere l'accesso su tutta l'organizzazione. Capgo documenta quelle scelte di chiave di anteprima nei suoi API key settings for web app workflows.
Memorizza il segreto nel tuo provider di CI con archiviazione segreta crittografata. Dàgli un nome che indichi cosa fa, come ad esempioCAPGO_PREVIEW_CLEANUP_KEYNon collocare questo token in un file di workflow, in uno script shell, in un commento di pull request o in un log generato.
Passa la chiave al processo di pulizia tramite una variabile di ambiente. Il tuo script dovrebbe fallire quando la variabile manca. Un fallback silenzioso è pericoloso perché può trasformare un job di pulizia in una richiesta senza autenticazione, o tentare un sviluppatore a incollare una chiave nella riga di comando.
if [ -z "$CAPGO_PREVIEW_CLEANUP_KEY" ]; then echo "Missing preview cleanup key" exit 1
fi
Conservare questa chiave separata dalla chiave utilizzata per pubblicare i bundle di produzione. Il lavoro di pubblicazione potrebbe dover caricare una versione. Il lavoro di pulizia ha bisogno solo di eliminare le risorse di anteprima. Le chiavi separate rendono la revisione più facile e riducono la possibilità che un'azione di cancellazione raggiunga un canale di produzione.
Utilizzare lo stesso segreto in un ambiente protetto quando possibile. Richiedere l'approvazione prima che un lavoro possa toccare i canali condivisi. Per le anteprime di pull request ordinarie, il lavoro dovrebbe funzionare su un canale temporaneo e nulla altro.
Chiave di apprendimento: Utilizzare una chiave di anteprima dedicata, limitare il suo ambito di applicazione e tenerla in segreti CI crittografati.
Prima di proseguire, testa la chiave contro un'azione di lettura innocua. Conferma che il lavoro può vedere l'applicazione destinata, ma non può accedere a un'applicazione non correlata o a un flusso di lavoro di produzione. I dettagli esatti della richiesta di pulizia non sono pubblicati completamente, quindi mantieni la tua prima prova piccola e ispeziona la guida di supporto SDK o Capgo prima di aggiungere chiamate di cancellazione.
Passo 2: Identifica l'anteprima di pull request e i suoi ID di bundle
La chiave di pulizia del previsualizzazione della richiesta di pull Capgo è utile solo quando il tuo lavoro sa quali ID di previsualizzazione e bundle possiede API.
L'__CAPGO_KEEP_0__ chiave di pulizia dell'anteprima di pull request __CAPGO_KEEP_1__ è utile solo quando il tuo lavoro sa quali anteprime e ID di bundle possiede.
Salva il nome del canale di anteprima quando viene creata l'anteprima. Puoi inserirlo nell'output del workflow, un controllo di richiesta di pull, o una piccola porzione di metadati di lavoro. Non contare su un nome di visualizzazione che una persona potrebbe modificare nel pannello di controllo.
Successivamente, elenca i pacchetti legati a quella anteprima. L'azione di cancellazione del pacchetto di Capgo richiede gli ID dei pacchetti. La documentazione di riferimento indica una chiamata di elenco per recuperare tutti gli ID dei pacchetti disponibili prima della cancellazione. Considera quella lista come fonte di verità. Non indovinare mai un ID da un nome di file, un hash di commit o un nome di ramo.
Filtra i record restituiti dal canale di anteprima o da un altro valore controllato dal tuo workflow. Poi conserva l'ID esatto del pacchetto per ogni corrispondenza. Se la lista è vuota, segnala come completato il processo di pulizia. Un risultato vuoto non è un fallimento a meno che il tuo workflow non aspetti una anteprima esistente.
Ricorda anche il commit SHA che ha prodotto ogni anteprima. Ciò ti dà un secondo controllo prima della cancellazione. Se il nome del canale corrisponde ma il commit non lo fa, fermati e chiedi una revisione. Quel piccolo ritardo può prevenire una gara dove una nuova anteprima viene creata mentre un vecchio lavoro di pulizia è in esecuzione.

Non cancellare mentre è in esecuzione un lavoro di pubblicazione. Aggiungi una dipendenza tra la costruzione dell'anteprima e il workflow di pulizia, o utilizza un blocco chiave al numero di richiesta di pull. Il lavoro di pulizia dovrebbe iniziare solo dopo l'evento di chiusura e dopo che è terminata qualsiasi anteprima di upload in sospeso.
Capgo's pubbliche API coprono risorse come canali e bundle attraverso richieste HTTP autenticate, ma le azioni di pulizia ancora richiedono una verifica accurata nel tuo progetto. Il Capgo pubblico API overview è il posto giusto per confermare il modello delle risorse corrente prima di scrivere un wrapper.
Da adesso dovresti avere un identificatore di anteprima, una lista di ID di bundle esatti e l'hash del commit legato a ogni record. Se uno di questi valori manca, fermati qui. La pulizia senza controlli di proprietà è solo una congettura.
Passo 3: Passa da un'anteprima attiva alla pulizia
Un'anteprima attiva non può essere eliminata fino a quando l'app non si sposta da essa o non si chiamaresetPreviewQuesto è il dettaglio chiave nel flusso di pulizia dell'anteprima di pull request di Capgo.
Pensa all'anteprima attiva come alla versione attualmente selezionata dall'app. Eliminare il record server-side per primo lascerebbe l'app puntare a qualcosa che non esiste più. Capgo blocca questo stato di cambiamento, quindi il tuo lavoro di pulizia deve resettare lo stato di anteprima dell'app prima di eliminare l'anteprima.
Prima di tutto, controlla se l'anteprima è ancora attiva. Se lo è, sposta l'app in un canale sicuro o utilizza l'azione di reset dell'aggiornatore. La scelta giusta dipende da come è configurato il tuo app di test. Un'app di test disimpegnabile può tornare al suo canale di default normale. Un'app di test condivisa potrebbe invece richiedere un canale di staging dedicato.
UsaresetPreviewQuando lo stato di anteprima deve essere cancellato direttamente. Mantieni questa chiamata legata allo stesso pull request e all'applicazione che ha creato l'anteprima. Un script di pulizia non dovrebbe mai resettare un dispositivo di produzione o un canale di rilascio condiviso solo perché il nome del canale corrisponde.
Ci sono una regola di ordinamento utile qui:
- Conferma che il pull request è chiuso.
- Confirm no preview upload is running.
- Spostati via dall'anteprima attiva o dalla chiamata
resetPreview. - Aspetta che lo stato di cambiamento si completi.
- Chiamare Delete Preview solo allora.
Non trattare una risposta HTTP di successo dalla richiesta di reset come prova che l'applicazione ha già cambiato stato su ogni dispositivo. Un dispositivo può controllare gli aggiornamenti in un secondo momento. Il tuo server-side di pulizia può procedere una volta che l'assegnazione dell'anteprima è stata cancellata secondo la risposta API, ma mantieni il comportamento del dispositivo separato dalla cancellazione delle risorse.
Capgo supporta il controllo del canale di rilascio, il che rende questa separazione più facile da ragionare. Un canale è un percorso denominato che dice a un'applicazione quale flusso di aggiornamento seguire. Il tuo canale di anteprima non dovrebbe mai essere lo stesso canale utilizzato dai dispositivi di produzione.
Per le squadre che richiedono un confine più rigoroso, utilizzare il metodo documentato Capgo per l'automazione dell'anteprima . Descrive il modello di canale temporaneo e aiuta a mantenere un lavoro di pulizia lontano dai canali di default condivisi.
La documentazione dell'aggiornatore open-source registra anche il limite di cancellazione: le anteprime attive richiedono un passaggio via o un reset prima. Puoi esaminare la fonte nel repository dell'aggiornatore Capgo Capacitor.
Pro consiglio: Rendi il reset un passo separato registrato. Se Elimina Anteprima fallisce, il log dovrebbe mostrare se l'anteprima era ancora attiva o se il richiesta di cancellazione aveva un altro problema.
Una volta che lo stato attivo è andato, il record dell'anteprima è pronto per la cancellazione. Non combinare reset e cancellazione in una riga di shell opaca. Due comandi chiari sono più facili da riprovare e molto più facili da auditare.
Passo 4: Elimina le anteprime con bundle ID con la chiave API
Elimina ogni anteprima bundle con il suo ID esatto, dopo che l'anteprima attiva è stata resettata. È qui che una chiave di pulizia Capgo elimina gli oggetti di archiviazione lasciati dalla richiesta di pull.
Inizia con la lista dei bundle dal Passo 2. Per ogni ID corrispondente, chiama l'azione Elimina Bundle attraverso il Capgo SDK o il metodo pubblico attuale API disponibile al tuo account.
Ispeziona la firma del metodo SDK o conferma la forma della richiesta attuale con il supporto Capgo. Registra il metodo e la forma di risposta nel tuo runbook interno una volta verificati. Il tuo runbook dovrebbe includere la versione API, l'identificatore richiesto e i codici di errore che la tua logica di riprova può gestire.
Utilizza un modo di prova secco nel tuo script. Dovrebbe stampare il canale di anteprima e gli ID del pacchetto che eliminerebbe, senza inviare richieste di cancellazione. Esegui quel modo contro più pull request chiuse. Controlla che escluda i canali di produzione e che non trattino una lista vuota come un asterisco.
A safe deletion loop has three gates:
- Rifiuta un ID del pacchetto mancante o malformato.
- Rifiuta un pacchetto il cui canale non corrisponde alla anteprima della richiesta di pull.
- Elimina solo dopo che il controllo di proprietà passa.
Poi gestisci ogni risposta in base al tipo. Una cancellazione riuscita può essere registrata come completa. Una risposta non trovata può essere trattata come già pulita se il risorsa è nota essere stata eliminata da un tentativo precedente. Gli errori di autorizzazione dovrebbero fallire il lavoro e avvertire il proprietario. I limiti di velocità dovrebbero sospendere e riprovare con un ritardo cappato.
Non riprovare ogni errore. Un ID cattivo non diventerà valido dopo tre tentativi. Un errore di autorizzazione di solito significa che lo scopo della chiave è sbagliato. Riprovare solo le fallite transitorie, e impostare un tempo di esecuzione massimo affinché un lavoro di pulizia bloccato non consumi la tua coda di CI.
La cancellazione del pacchetto è separata dalla cancellazione della anteprima. La rimozione del canale di anteprima non provoca automaticamente che ogni pacchetto sia andato. Il tuo lavoro dovrebbe mantenere un risultato per ogni ID, quindi fare una richiesta di lista finale se il API lo supporta. Se rimane un pacchetto, segnala l'ID e fermati piuttosto che affermare silenziosamente il successo.
Keep deletion logs free of secrets. It is fine to log the pull request number, preview name, bundle ID, request result, and timestamp. Never log the API key, an authorization header, or a full request object that might include one.
Quell'approccio ti fornisce un utile tracciato di audit senza trasformare il registro in un altro posto dove possono filtrare i dati sensibili. Ciò rende anche facile riprendere una pulizia fallita perché il prossimo run può saltare i record già confermati come assenti.
Passo 5: Automatizzare la pulizia quando una Richiesta di pull si chiude
Avvia il lavoro di pulizia dall'evento di chiusura della richiesta di pull, ma aggiungi controlli che preveniano una costruzione tardiva da cancellare una nuova anteprima.
La tua workflow dovrebbe ricevere il repository e il numero di richiesta di pull dall'oggetto di evento. Ricostruisci il nome del canale di anteprima da quei valori. Non accettare un nome del canale fornito da un commento di richiesta di pull o una variabile di branch non affidabile.
Una sequenza di lavoro utile assomiglia a questo:
- Carica la chiave di pulizia limitata da segreti crittografati.
- Conferma che l'evento è una richiesta di pull chiusa.
- Verifica che l'anteprima appartenga al repository e all'app attesi.
- Attendi che la distribuzione attiva dell'anteprima si completi.
- Distogli dall'anteprima o chiama
resetPreview. - Elenco gli ID dei bundle per quella preview.
- Elimina ogni bundle verificato.
- Elimina il record di anteprima.
- Scrivi un risultato breve nella sintesi del workflow.
L'ordine conta. Se elimini per primo, la regola di anteprima attiva può bloccare la richiesta. Se salti la chiamata della lista, potresti non sapere quali ID dei bundle ancora esistono. Se elimini con un nome ipotizzato, rischi di toccare la risorsa sbagliata.

Usa una regola di concorrenza chiave al numero di richiesta di pull. Quando un evento di chiusura e un evento di rebuild arrivano quasi nello stesso momento, l'antico lavoro di pulizia non dovrebbe correre con la nuova distribuzione. Annulla un lavoro di pulizia obsoleto o fai attendere il lavoro fino a quando il blocco di distribuzione è chiaro.
Capgo’s flusso di lavoro di un comando CLI può ridurre il numero di chiamate di shell personalizzate intorno alla costruzione e alla distribuzione del lavoro. Per i nomi dei comandi e le operazioni supportate, controlla la documentazione del comando Capgo CLI.. Utilizza il CLI dove ti dà un comando verificato. Utilizza il SDK o il pubblico API dove le azioni di pulizia richiedono una richiesta diretta.
Non mettere la pulizia in un workflow che esegue con ogni push. Un lavoro di push può eliminare un anteprima che è ancora in corso di test. L'evento di chiusura è il trigger giusto per la pulizia normale. Aggiungi un workflow di invio manuale per la ripresa quando un lavoro fallisce.
Stabilisci un fallback di conservazione inoltre. Se un evento di chiusura viene perso, un lavoro programmato può trovare anteprime più vecchie della finestra di test consentita dal tuo team. Quel lavoro ha bisogno di misure di sicurezza più severe della normale chiamata di chiusura. Dovrebbe selezionare solo anteprime con un proprietario chiaro e un timestamp scaduto.
For GitHub Actions, keep permissions narrow and pass only the values needed by the cleanup step. Capgo’s current GitHub Actions integration documentation explains where the token is stored and how the workflow connects to Capgo.
Dovresti avere un percorso automatizzato che reagisce alla chiusura, attende i job concorrenti, resetta lo stato attivo, elenca gli ID e cancella solo i bundle corrispondenti.
Passo 6: Verifica Pulizia e Proteggi i Rollout da Eliminazioni Accidentalmente
La verifica chiude il loop di pulizia della preview del pull request Capgo. Una sola risposta di cancellazione non è sufficiente per un processo di rilascio sicuro.
Dopo l'esecuzione del lavoro di pulizia, controlla nuovamente il canale di previsualizzazione. Assicurati che non appare più come una previsualizzazione attiva. Poi controlla l'elenco dei bundle per la stessa app e filtra. Il risultato previsto è che gli ID dei bundle target sono andati mentre i bundle di produzione rimangono.
Salva questi valori nella sintesi del lavoro:
- Nome repository e numero di pull request.
- Nome del canale di previsualizzazione.
- Commit SHA used for ownership checks.
- ID dei bundle trovati.
- ID dei bundle cancellati.
- Qualsiasi ID che ha restituito un errore.
Usa uno stato chiaro. “Pulito” significa che ogni target verificato è andato via. “Già pulito” significa che il risorsa era assente prima di questa esecuzione. “Richiede revisione” significa che uno o più controlli sono falliti. Non etichetta una cancellazione parziale come successo.
Aggiungi un guardiano di produzione in code. Rifiuta i nomi dei canali come il tuo canale predefinito o il canale di rilascio. Rifiuta anche un bundle se i suoi metadati non corrispondono all'app di anteprima. Il guardiano dovrebbe fallire chiuso. Quando lo script non può identificare il target con sicurezza, dovrebbe fermarsi.
Conserva la rollback separata dalla pulizia. Una rollback cambia quale bundle i dispositivi ricevono. La pulizia elimina una vecchia risorsa di anteprima. Se un test trova un bug dopo che la richiesta di pull si è chiusa, potresti aver bisogno del bundle per l'indagine. Imposta un breve intervallo di conservazione invece di eliminare immediatamente l'evento se il tuo team si occupa spesso di debug dopo il merge.
Guarda per tre modelli di fallimento comuni:
- Errore di anteprima attiva: ripristina o passa via prima di riprovare Elimina Anteprima.
- ID del bundle mancante: esegui l'azione di lista di nuovo invece di indovinare.
- Errore di autorizzazione: revisiona lo scopo della chiave, poi emetti una nuova chiave se necessario.
Pulisci la chiave di pulizia su un orario stabilito dalla tua politica di sicurezza, e pulisci subito se appare in un log o in un commit. Una nuova chiave dovrebbe essere testata prima che l'antica venga revocata, a meno che l'esposizione richieda una revoca immediata.
La documentazione sulla pulizia merita una nota nella tua revisione di sicurezza. Tratta la guida SDK e verificata Capgo come fonte per la tua implementazione, e mantieni il tuo proprio contratto di richiesta sotto controllo di versione.
Chiave di prelievo: Verifica la lista di anteprimi e bundle dopo la cancellazione, blocca i target di produzione in code e segnala la pulizia parziale come fallita.
Un comando è utile solo quando i guardrail sono chiari. Traccia la visualizzazione. Adotta un nome di canale prevedibile. Annulla le modifiche di rilascio separatamente. Poi lascia che il lavoro di pulizia faccia il suo piccolo lavoro senza toccare il traffico in tempo reale.
FAQ
Posso cancellare un prelievo attivo di Capgo?
No. Una visualizzazione attiva deve essere spostata via prima, o devi chiamare resetPreview. After the active state clears, run Delete Preview. This rule is the main detail to remember when setting up a Capgo pull request preview cleanup API key in CI.
Devo avere gli ID dei pacchetti per pulire un prelievo Capgo?
Sì. L'azione Elimina pacchetto di Capgo richiede gli ID dei pacchetti, quindi elenca i pacchetti disponibili prima di cancellarli. Corrispondi ogni ID al canale di visualizzazione e al commit prima di inviare una richiesta di cancellazione. Non costruisci mai un ID a partire da un nome di branch o supponi che la cancellazione del prelievo elimini anche tutti i pacchetti.
Di quale tipo di chiave API dovrebbe utilizzare CI per la pulizia dei prelievi?
Utilizza una chiave di anteprima App limitata per la pulizia dell'anteprima, memorizzata nel tuo provider di CI in un archivio segreto crittografato. Limita la chiave all'app o allo scopo necessario. Tienila separata dalla chiave utilizzata per pubblicare gli aggiornamenti di produzione. Ciò rende il Capgo lavoro di pulizia più facile da revisionare e più sicuro da rotare.
Posso automatizzare la pulizia quando un pull request viene chiuso?
Sì. Attiva la pulizia dall'evento di pull request chiuso, poi aspetta che le attività di deployment attive si siano completate prima di resettare l'anteprima. Elencare gli ID dei bundle, eliminare le corrispondenze verificate e confermare il risultato. Aggiungi controlli di concorrenza per evitare che un costrutto tardi possa superare il lavoro di pulizia.
Perché il mio Capgo richiesta di pulizia fallisce?
Gli motivi più comuni sono un anteprima attiva, un ID del bundle mancante o una chiave senza lo scopo necessario. Resetta l'anteprima per primo, ripeti la chiamata di elenco e ispeziona le autorizzazioni della chiave. Poiché i dettagli delle richieste possono variare a seconda della versione API o SDK, conferma il metodo e i parametri correnti prima di modificare lo script.
Conclusioni
Utilizza Capgo con una chiave di anteprima dedicata e un ordine di pulizia rigoroso: resettare l'anteprima attiva, elencare gli ID dei bundle, eliminare i bundle verificati e poi rimuovere l'anteprima. Inizia con un run secco contro un pull request chiuso, conferma la forma della richiesta nella versione corrente SDK e aggiungi il guard del canale di produzione prima di attivare la pulizia automatica.