Vai al contenuto

runnerhut

Risposte

Risposte dirette alle domande degli ingegneri sulla CI.

Fatturazione e costi21

Mi viene addebitato un importo quando un processo GitHub Actions fallisce?Sì. Ti verranno addebitati i minuti consumati fino al momento del fallimento, non il risultato positivo.GitHub Actions è gratuito per l'open source?Sì, sui runner standard ospitati su GitHub per repository pubblici, senza addebito al minuto.GitHub Actions è gratuito per i repository privati?No. I repository privati ricevono un importo mensile di minuti inclusi in base al piano, quindi fatturano al minuto.Pago una tariffa per il posto per i corridori gestiti?Su runnerhut, no. La fatturazione è per minuto di elaborazione senza costi per sviluppatore.Pago il tempo in coda?No. La fatturazione inizia quando viene eseguito il primo passaggio, non quando il lavoro viene messo in coda.Pago sia per il runner che per il builder Docker remoto?Sì, ma al costruttore vengono fatturati solo i secondi in cui sta costruendo attivamente.Come viene fatturato un lavoro annullato?Si pagano i minuti trascorsi prima della cancellazione, arrotondati all'incremento di fatturazione.Esiste un incremento minimo di fatturazione?runnerhut fattura al secondo con un minimo di un minuto per lavoro.Quanto costano i runner gestiti GitHub Actions?runnerhut I runner Linux x64 partono da $ 0,004 al minuto, circa la metà del prezzo di listino di GitHub per la dimensione equivalente.Qual è la taglia del corridore più economica?La dimensione più piccola che mantiene il tuo lavoro sul suo percorso critico: in genere 2 o 4 vCPU per lint e unit test.Arm64 è più economico di x64?Sì. I corridori runnerhut arm64 hanno un prezzo inferiore di circa il 20% rispetto alla dimensione x64 equivalente.È più economico correre con meno corridori più grandi?Solo se il tuo carico di lavoro è effettivamente parallelizzato. Altrimenti pagherai di più al minuto per i core inattivi.Posso impostare un limite di spesa?Sì. runnerhut supporta limiti di budget rigidi per organizzazione e per repository.Cosa succede quando i crediti gratuiti finiscono?I lavori non vengono più pianificati finché non aggiungi un metodo di pagamento o non aumenti il limite.Come posso stimare la mia fattura GitHub Actions?Moltiplica i minuti mensili per sistema operativo per la tariffa al minuto per quel sistema operativo, quindi aggiungi spazio di archiviazione per artefatti e cache.Come posso prevedere la spesa del corridore?Prendi i minuti finali di 90 giorni per flusso di lavoro, applica la crescita del tasso di fusione e aggiungi margine per le modifiche alla matrice.Perché la mia fattura per GitHub Actions è così alta?Di solito una delle quattro cose: minuti macOS, esplosione della matrice, nessuna cancellazione della concorrenza o corridori sovradimensionati.I repository pubblici pagano per i corridori gestiti?Sui corridori standard ospitati su GitHub, no. Sui provider gestiti incluso runnerhut, sì, ma sono disponibili programmi open source.Quanto costa l'archiviazione nella cache di Actions?GitHub include 10 GB per repository gratuitamente ed elimina quelli aggiuntivi. La cache di runnerhut è illimitata e inclusa.Come viene fatturato lo spazio di archiviazione degli snapshot?Per gigabyte al mese per lo snapshot conservato, separato dai minuti di calcolo.Posso eseguire più lavori simultanei di quelli consentiti dal mio piano GitHub?Sì. La concorrenza dei runner gestiti viene impostata dal provider dei runner, non dai limiti dei runner ospitati del piano GitHub.

Prestazioni10

Perché le GitHub Actions sono lente?Più comunemente: vCPU condivisa, cache fredde, disco collegato alla rete e tempo di coda prima ancora che il lavoro venga avviato.Quanto velocemente iniziano i corridori dopo che un lavoro è stato messo in coda?runnerhut i corridori iniziano in circa tre secondi da una piscina calda.Devo modificare il mio flusso di lavoro?No. Cambia l'etichetta di rodaggio e lascia tutto il resto così com'è.Come scelgo la taglia del corridore?Inizia una misura sopra il tuo corridore attuale, quindi controlla l'utilizzo della CPU e fermati quando la curva si appiattisce.Perché i miei lavori si mettono in coda uno dietro l'altro?Hai raggiunto un limite di concorrenza: quello del tuo piano, del tuo gruppo di corridori o di un gruppo di concorrenza nel flusso di lavoro.Perché i miei test Python vengono eseguiti più lentamente in CI che localmente?pytest è seriale per impostazione predefinita e il tuo laptop ha prestazioni single-core più veloci e una cache del filesystem calda.Perché l'installazione di npm è lenta in CI?node_modules scrive decine di migliaia di piccoli file e il disco CI collegato alla rete lo gestisce male.Perché il demone Gradle avvia ogni esecuzione?Ogni lavoro CI è una macchina nuova, quindi non c'è alcun demone da riutilizzare e senza la cache di configurazione Gradle rivaluta l'intera build.Perché il mio lavoro mostra un'attesa I/O elevata?Il carico di lavoro è legato al disco: in genere installazione di dipendenze, estrazione a livello di contenitore o database in un contenitore di servizi.Quanti lavori possono essere eseguiti contemporaneamente?Dipende dal tuo piano per i corridori ospitati su GitHub e dalla concorrenza configurata per i corridori gestiti.

Memorizzazione nella cache38

Perché Cargo ricostruisce tutto?La chiave della cache cambia a ogni esecuzione oppure target/ non viene affatto memorizzato nella cache.Perché il ripristino della cache è lento?GitHub limita la larghezza di banda della cache, quindi il ripristino di una cache multi-gigabyte può richiedere minuti.Come faccio a scrivere una buona chiave di cache?Hashing esattamente i file che determinano il contenuto memorizzato nella cache (di solito il file di blocco) e nient'altro.Cosa sono le chiavi di ripristino?I prefissi ordinati vengono provati quando manca la chiave esatta della cache, quindi è ancora possibile ripristinare una corrispondenza parziale.Perché la mia cache perde ogni esecuzione?La chiave include qualcosa che cambia a ogni esecuzione, in genere github.sha o un timestamp.Quanto durano le cache?GitHub rimuove le cache inutilizzate per 7 giorni o prima se il repository supera i 10 GB.Come posso svuotare la cache?Eliminalo dalla pagina della cache delle azioni del repository o tramite l'API REST o la CLI gh.Le cache vengono trasferite tra i rami?Un ramo può leggere le cache da se stesso e dal suo ramo base, ma non da rami non correlati.Posso condividere una cache tra flussi di lavoro?Sui corridori ospitati su GitHub, solo all'interno dello stesso repository e ambito del ramo. Le cache runnerhut sono condivise tra i flussi di lavoro dell'organizzazione.Qual è il limite della dimensione della cache di GitHub Actions?10 GB per repository, dopodiché verranno rimosse le voci utilizzate meno di recente.Come posso memorizzare nella cache node_modules?Memorizza nella cache ~/.npm digitato su package-lock.json o ripristina direttamente node_modules se l'installazione è deterministica.Come posso memorizzare nella cache le dipendenze pip?Memorizza nella cache ~/.cache/pip digitato su requisiti.txt o memorizza nella cache l'intero virtualenv per una vincita maggiore.Come faccio a memorizzare nella cache i moduli Go?Memorizza nella cache ~/go/pkg/mod e ~/.cache/go-build digitati su go.sum.Come posso memorizzare nella cache le dipendenze di Cargo?Memorizza nella cache ~/.cargo/registry, ~/.cargo/git e target/ digitati su Cargo.lock.Come posso memorizzare nella cache le dipendenze di Maven?Memorizza nella cache ~/.m2/repository digitato su un hash di ogni pom.xml.Come posso memorizzare nella cache le build di Gradle?Memorizza nella cache ~/.gradle/caches e ~/.gradle/wrapper e abilita le cache di build e configurazione.Come posso memorizzare nella cache le gemme Bundler?Cache fornitore/bundle digitato su Gemfile.lock in modo che le estensioni native vengano compilate una volta.Come faccio a memorizzare nella cache le dipendenze di Composer?Cache ~/.composer/cache digitato su compositer.lock.Come faccio a memorizzare nella cache i CocoaPods?Cache Pods/ e ~/Library/Caches/CocoaPods digitati su Podfile.lock.Come posso memorizzare nella cache le dipendenze di Swift Package Manager?Cache .build e ~/Library/Caches/org.swift.swiftpm digitati su Package.resolved.Come posso memorizzare nella cache Yarn Berry?Memorizza nella cache .yarn/cache e .yarn/install-state.gz digitati su Yarn.lock.Come faccio a memorizzare nella cache gli ambienti uv o Poetry?Memorizza nella cache ~/.cache/uv o ~/.cache/pypoetry digitati sul file di lock, più la directory .venv.Come posso memorizzare nella cache i browser di Playwright?Metti nella cache ~/.cache/ms-playwright digitato sulla versione di Playwright dal tuo file di blocco.Come posso memorizzare nella cache i livelli Docker?Utilizza un builder remoto che conserva la cache localmente o esporta in un registro con cache-to e cache-from.La memorizzazione nella cache funziona all'interno di un processo contenitore?Sì, ma i percorsi all'interno del contenitore differiscono dai percorsi sull'host, quindi le chiavi della cache devono fare riferimento ai percorsi del contenitore.Le cache funzionano su più architetture?No. Gli artefatti compilati per x64 non sono validi su arm64, quindi l'architettura deve far parte della chiave.Le cache funzionano sui runner Windows?Sì, ma i separatori di percorso e la distinzione tra maiuscole e minuscole differiscono, quindi chiavi e percorsi richiedono una gestione specifica di Windows.Come posso mantenere una cache del livello Docker tra le richieste pull?Utilizza un builder remoto persistente: la sua cache non ha come ambito un ramo.Posso memorizzare nella cache un'immagine creata anziché ricostruirla?Sì: invialo a un registro contrassegnato dall'hash del contenuto ed estrailo quando gli input rimangono invariati.Posso mantenere un database caldo tra un lavoro e l'altro?Non con i container di servizio, che vengono distrutti durante il lavoro. Carica invece un dump dello schema pre-migrato.Posso conservare Xcode DerivedData tra un'esecuzione e l'altra?Sì. Persist ~/Library/Developer/Xcode/DerivedData: è il singolo successo più grande per iOS CI.I corridori di snapshot sostituiscono le azioni/la cache?Possono. Uno snapshot ripristina l'intero stato della macchina, quindi la fase di installazione scompare anziché diventare più veloce.Cosa viene mantenuto in un'istantanea?L'intero filesystem al momento dello snapshot: pacchetti installati, estensioni create, directory della toolchain e cache della pagina calda.Come posso invalidare uno snapshot?Inseriscilo nell'hash del file di blocco in modo che una modifica della dipendenza attivi automaticamente una ricostruzione.Quanto durano gli snapshot?14 giorni per impostazione predefinita su runnerhut, quindi ricostruito al successivo utilizzo.Posso eseguire uno snapshot su un ramo di funzionalità?Sì, e gli snapshot delle filiali sono isolati l'uno dall'altro.Cosa sono gli snapshot runner?Runner che si avviano da un'immagine del filesystem acquisita dopo l'installazione delle dipendenze, quindi l'installazione viene saltata completamente.Le istantanee funzionano sui runner macOS?Sì, e sono particolarmente preziosi lì perché CocoaPods e DerivedData sono entrambi lenti da ricostruire.

braccio6412

GitHub Actions può eseguire arm64?SÌ. GitHub offre corridori arm64 su piani a pagamento e i fornitori gestiti, incluso runnerhut, li offrono su tutti i piani.Posso creare immagini arm64 su un runner x64?Sì, con QEMU, ma è 5–40 volte più lento rispetto alla creazione nativa.Cosa cambia quando si passa da x64 a arm64?I moduli nativi, le ruote Python e qualsiasi assembly x86 necessitano del supporto aarch64. La maggior parte delle dipendenze tradizionali ora ce l'hanno.Posso eseguire lavori arm64 e x64 nello stesso flusso di lavoro?Sì. Utilizzare una matrice con un'etichetta runner diversa per architettura.I runner arm64 supportano buildx?Sì, e sull'hardware nativo arm64 buildx produce immagini arm64 senza emulazione.Posso eseguire build ARM a 32 bit sui runner arm64?Sì, tramite compilazione incrociata con una toolchain armhf o con supporto multilib ove disponibile.Come posso eseguire i test di integrazione arm64?Esegui l'intero lavoro su un runner arm64 nativo, inclusi eventuali contenitori di servizi, che devono avere immagini arm64.Quali misure di guide arm64 sono disponibili?runnerhut offre da 2 a 64 runner arm64 vCPU su Ubuntu 22.04 e 24.04.I corridori arm64 utilizzano una directory di lavoro diversa?No. I percorsi corrispondono alle immagini x64, quindi i flussi di lavoro vengono trasferiti senza modifiche.Come posso creare un binario Rust per più target?Utilizza una matrice con un corridore nativo per destinazione, anziché eseguire la compilazione incrociata di tutto su un'unica macchina.GitHub Actions può creare immagini multi-arch?Sì, con QEMU su un runner o in modo nativo su runner per architettura e uniti in un elenco manifest.QEMU o arm64 nativo è più veloce?Nativo, con un fattore da 5 a 40 a seconda di quanto viene compilata la build.

macOS e iOS15

I runner GitHub Actions supportano macOS?Sì, sia i provider ospitati che quelli gestiti su GitHub offrono runner macOS su silicio Apple.Posso creare app iOS senza un Mac Runner?No. Xcode funziona solo su macOS, quindi una build iOS richiede un runner macOS.Xcode è preinstallato sui runner macOS?Sì. Le immagini runnerhut forniscono diverse versioni di Xcode con strumenti da riga di comando corrispondenti.Come seleziono una versione di Xcode?Esegui sudo xcode-select -s /Applications/Xcode_16.4.app prima dei passaggi di creazione.Quali versioni di Xcode sono disponibili?le immagini macOS 15 runnerhut trasportano Xcode 16.0, 16.2 e 16.4; Le immagini di macOS 14 trasportano 15.2 e 15.4.Quali versioni di macOS sono supportate?runnerhut offre immagini macOS 14 e macOS 15 su silicio Apple.GitHub Actions supporta il silicio Apple?Sì. Sia i runner macOS ospitati che quelli gestiti su GitHub ora funzionano su silicio Apple.Quanto disco hanno i runner macOS?runnerhut I runner macOS forniscono da 250 GB a 1 TB di NVMe a seconda delle dimensioni.Quali runtime del simulatore vengono forniti sui runner macOS?iOS da 17.5 a 18.4, oltre ai runtime watchOS, tvOS e visionOS.Posso utilizzare Docker sui runner macOS?Solo tramite una VM Linux, che è lenta. Esegui invece i carichi di lavoro Docker su runner Linux.Posso eseguire i runner macOS nell'UE?Sì. runnerhut gestisce la capacità macOS nelle regioni dell'UE per i requisiti di residenza dei dati.Posso eseguire build Android e iOS in un unico flusso di lavoro?Sì: utilizza una matrice con un runner macOS per iOS e un runner Linux per Android.Come posso accelerare le build Xcode ripetute?Mantieni DerivedData tra le esecuzioni e blocca la versione di Xcode.Come posso eseguire i test iOS in parallelo?Suddividi per destinazione di test o classe di test su diversi simulatori su un unico runner macOS di grandi dimensioni.Come posso autenticare un'app macOS in CI?Utilizza notarytool con una chiave API App Store Connect archiviata come segreta.

Docker17

Come posso ridurre il tempo di pull dell'immagine?Utilizzare una cache pull-through del registro nella stessa rete del runner.Come posso reimpostare la cache del builder Docker?Esegui docker buildx prune sul builder o ricrea l'istanza del builder.I builder remoti supportano build multipiattaforma?Sì. runnerhut esegue builder amd64 e arm64 separati e unisce i risultati.Come posso inviare un elenco manifest?Costruisci ogni architettura tramite digest, quindi combinale con docker buildx imagetools create.Perché la creazione di Docker è lenta?Cache a livello freddo, cache trasferita sulla rete o arm64 creato in emulazione.Perché la build di Docker esaurisce il disco?I corridori ospitati su GitHub hanno circa 14 GB liberi, che le immagini di grandi dimensioni e la cache dei livelli si esauriscono rapidamente.Perché un aggiornamento dell'immagine di base invalida tutto?Ogni livello dopo FROM dipende dal digest dell'immagine di base, quindi una nuova base li invalida tutti.Qual è la differenza tra cache-from e cache-to?cache-from importa una cache di livello esistente; cache-to esporta la cache prodotta da questa build.Ho bisogno di buildx?Per build multipiattaforma, montaggi cache o builder remoti, sì. Per una semplice costruzione ad arco singolo, no.Cos'è un builder Docker remoto?Un'istanza BuildKit persistente a cui si collega il tuo lavoro, che mantiene la cache dei livelli sul proprio disco.Come viene fatturato un costruttore remoto?Per secondo di tempo di costruzione attivo, separatamente dai minuti del corridore.Due lavori possono condividere un costruttore?Sì. Le gambe della matrice e i flussi di lavoro separati possono collegarsi allo stesso builder e condividerne la cache.Come posso costruire e spingere in un solo passaggio?Utilizzare docker/build-push-action con push: true.Come utilizzo Docker Bake?Definisci gli obiettivi in docker-bake.hcl ed esegui docker buildx bake in un passaggio.Come posso autenticarmi su un registro privato?Utilizza docker/login-action con un token o OIDC per i registri cloud.Posso eseguire Docker Compose?Sì. Compose v2 è preinstallato; utilizzare docker compose up -d --wait in modo che i passaggi non corrispondano all'avvio.Posso usare Podman invece di Docker?Sì. Podman è disponibile ed è ampiamente compatibile con CLI con Docker.

Sicurezza19

Gli snapshot runner sono sicuri per i repository pubblici?Solo se gli snapshot vengono acquisiti da rami attendibili e mai da richieste pull fork.Come posso generare una SBOM?Abilita sbom: true output di buildx o esegui syft sull'immagine creata.Come allego la provenienza della build?Utilizza actions/attest-build-provenance o la provenienza di buildx: vera attestazione.Come posso passare i segreti in una build Docker?Utilizza i segreti di build di BuildKit con --secret, mai ARG o ENV.I runner GitHub Actions sono sicuri?I runner gestiti affidabili e ospitati su GitHub sono macchine virtuali monouso effimere, che rappresenta il modello di isolamento corretto.I corridori memorizzano il mio codice sorgente?Solo per la durata del lavoro. runnerhut distrugge la VM e cancella il suo disco al termine del lavoro.La piattaforma runner può vedere i miei segreti?I segreti vengono decrittografati nella memoria del corridore per essere utilizzati, quindi tecnicamente qualsiasi piattaforma di corridore potrebbe farlo.Come posso impostare le autorizzazioni GITHUB_TOKEN?Aggiungi un blocco di autorizzazioni a livello di flusso di lavoro o di lavoro e concedi solo gli ambiti necessari.Come posso autenticarmi su AWS con OIDC?Configura GitHub come provider OIDC in IAM e utilizza aws-actions/configure-aws-credentials con un ruolo.I runner gestiti modificano le mie autorizzazioni GitHub?No. I lavori vengono eseguiti con lo stesso GITHUB_TOKEN e le stesse autorizzazioni dei corridori ospitati su GitHub.Posso limitare quali repository utilizzano i miei corridori?Sì, con gruppi di corridori limitati a organizzazioni o archivi specifici.runnerhut è conforme a SOC 2?runnerhut mantiene SOC 2 Tipo 2, con il rapporto disponibile sotto NDA.Dove vengono archiviati i dati della mia build?Nella regione selezionata. Calcolo, cache, log e parametri sono tutti bloccati nella stessa regione.Posso mantenere le costruzioni solo nell'UE?Sì. Le distribuzioni solo per l'UE collegano elaborazione, cache, log e parametri alle regioni dell'UE.Posso limitare il traffico in uscita?Sì. Le policy di uscita negano e consentono per impostazione predefinita solo le destinazioni elencate.Come posso controllare le modifiche alla configurazione del corridore?Il registro di controllo registra attore, timestamp, IP di origine e valori prima/dopo per ogni modifica della configurazione.Dove corrono fisicamente i corridori gestiti?Nei data center del fornitore o nel tuo account cloud con BYOC.Cosa succede ai dischi runner dopo un lavoro?Su runnerhut vengono cancellati crittograficamente e la VM distrutta.I corridori mantengono lo stato tra un lavoro e l'altro?I corridori effimeri no. I corridori self-hosted persistenti lo fanno, il che rappresenta un rischio per la sicurezza sui repository pubblici.

Porta la tua nuvola18

I corridori possono accedere alla mia rete privata?Sì, tramite runner BYOC nel tuo VPC o una rete mesh come Tailscale.I corridori possono correre nel mio account cloud?Sì. BYOC distribuisce i runner nel tuo account AWS, GCP o Azure mentre il piano di controllo rimane gestito.Cosa crea runnerhut nel mio account cloud?Un gruppo di scalabilità automatica, un bucket di cache, una cache pull-through del registro, un ruolo IAM con ambito e un endpoint VPC.Di quali autorizzazioni AWS ha bisogno BYOC?Autorizzazioni per gestire il proprio gruppo di scalabilità automatica, il proprio bucket di cache e il proprio ruolo di istanza: niente di più ampio.Posso utilizzare il mio VPC?Sì. Fornisci il VPC e gli ID di sottorete e i corridori vengono posizionati lì.I corridori BYOC possono raggiungere i servizi interni?Sì, questo è il motivo principale per utilizzare BYOC. Si trovano all'interno della tua rete con il routing normale.I corridori BYOC hanno bisogno di un gateway NAT?Hanno bisogno di Internet in uscita per il pull di immagini e pacchetti, che di solito significa un gateway NAT.I corridori BYOC possono correre in una sottorete privata?Sì, e dovrebbero. L'accesso in uscita passa attraverso endpoint NAT o VPC.Posso associare un ruolo IAM a un corridore BYOC?Sì, tramite un profilo dell'istanza, in modo che i lavori ottengano credenziali senza alcun segreto archiviato.BYOC funziona con IMDSv2?Sì, e IMDSv2 viene applicato per impostazione predefinita.Posso eseguire BYOC in più regioni?Sì. Distribuisci il modulo per regione ed etichetta i corridori per regione.BYOC supporta immagini personalizzate?Sì. Fornisci la tua AMI o l'immagine della macchina con i tuoi strumenti integrati.BYOC supporta Windows?Sì su AWS e Azure. Il supporto di GCP Windows è più limitato.BYOC supporta l'SSD locale GCP?Sì, sulle famiglie di macchine che lo offrono.Come funziona la fatturazione BYOC?Paghi al tuo fornitore di servizi cloud per il calcolo e la rete e a runnerhut una tariffa ridotta per il piano di controllo.Come posso taggare le risorse BYOC?Imposta i tag di allocazione dei costi nel modulo Terraform; si propagano a ogni risorsa creata.Come posso eliminare uno stack BYOC?Prosciuga i corridori, quindi terraforma distruggi il modulo.Posso controllare l'uscita dei corridori BYOC?Sì, con gruppi di sicurezza, NACL e policy di uscita runnerhut insieme.

Flussi di lavoro30

Quanti lavori può suddividere una matrice?GitHub limita una singola matrice a 256 lavori per esecuzione del flusso di lavoro.Come posso riprodurre localmente un errore CI?Abbina l'immagine del corridore, quindi SSH in un corridore live se l'errore appare solo in CI.Posso entrare in un corridore tramite SSH?Sì. runnerhut supporta l'apertura di una sessione di debug su un lavoro in esecuzione con una chiave SSH autorizzata.Posso combinare runner ospitati e gestiti su GitHub?Sì. l'esecuzione è per lavoro, pertanto lavori diversi in un flusso di lavoro possono utilizzare fornitori diversi.Come cambio il corridore?Modificare il valore di esecuzione per il lavoro. Nient'altro deve cambiare.Come posso eseguire un lavoro solo quando i file cambiano?Utilizza percorsi o ignora percorsi sul trigger oppure un'azione di rilevamento delle modifiche per un controllo più preciso.Come si esegue manualmente un flusso di lavoro?Aggiungi un trigger workflow_dispatch, facoltativamente con input digitati.Come posso eseguire i lavori in base a una pianificazione?Utilizza il trigger di pianificazione con la sintassi cron, in UTC.Come posso annullare le corse sostituite?Imposta un gruppo di concorrenza digitato sul riferimento con annullamento in corso: true.Come posso limitare un flusso di lavoro a un'esecuzione alla volta?Usare un nome di gruppo di concorrenza fisso con annullamento in corso: false.Cosa succede quando due flussi di lavoro condividono un gruppo di concorrenza?Serializzano: il secondo attende o annulla il primo a seconda dell'annullamento in corso.Come posso impostare un timeout per il lavoro?Aggiungere minuti di timeout al lavoro. Il valore predefinito è sei ore.Come posso riprovare un passaggio non riuscito?Utilizzare un'azione di ripetizione o racchiudere il comando in un ciclo di tentativi della shell.Come posso riutilizzare un flusso di lavoro tra repository?Pubblica un flusso di lavoro riutilizzabile e chiamalo con workflow_call.Come scrivo un'azione composita?Crea action.yml con runs.using: composite e un elenco di passaggi.Come utilizzo la matrice include ed esclude?include aggiunge o estende combinazioni; escludi li rimuove dal prodotto generato.Come posso saltare CI su un commit?Aggiungi [skip ci] al messaggio di commit.Come scrivo un riassunto del lavoro?Aggiungi Markdown a $GITHUB_STEP_SUMMARY.Come si esegue un database in CI?Dichiararlo come contenitore di servizi con un controllo dello stato.Come posso pubblicare un pacchetto?Utilizzare la pubblicazione attendibile OIDC laddove il registro la supporta, altrimenti un token con ambito in un segreto dell'ambiente.Come posso condividere i dati tra i lavori?Carica un artefatto in un lavoro e scaricalo in quello successivo oppure utilizza gli output del lavoro per valori piccoli.Come posso interrompere un flusso di lavoro lento che blocca le distribuzioni?Dividere i controlli richiesti da quelli consultivi e contrassegnare solo i lavori veloci e affidabili come richiesto.Come posso eseguire i test del browser senza testa?Usa la bandiera senza testa per il tuo corridore o xvfb-run per gli strumenti che richiedono un display.Come posso eseguire i test del rilevatore di gare Go?Corri vai prova-gara. Aspettatevi un'esecuzione più lenta di circa 2-10 volte e un maggiore utilizzo della memoria.Qual è la differenza tra un lavoro e un passo?Un lavoro viene eseguito su un corridore e contiene passaggi; i passaggi vengono eseguiti in sequenza nello stesso spazio di lavoro.Qual è la differenza tra i corridori ospitati su GitHub e quelli ospitati autonomamente?I servizi ospitati su GitHub sono gestiti, temporanei e fatturati al minuto. Puoi operare in modalità self-hosted, sul tuo hardware.Quali sistemi operativi possono eseguire GitHub Actions?Linux, Windows e macOS, su x64 e arm64 a seconda del provider.Per quanto tempo vengono conservati gli artefatti?90 giorni per impostazione predefinita, configurabili per repository o per caricamento fino a un giorno.Come si esegue il debug di un lavoro non riuscito?Abilita la registrazione del debug dei passaggi, aggiungi un riepilogo del lavoro o apri una sessione SSH sul runner.Come posso eseguire un lavoro solo su richieste pull?Utilizza il trigger pull_request e una condizione if per un controllo più preciso, ad esempio per saltare le bozze.

Osservabilità19

Come posso visualizzare il costo per flusso di lavoro?La dashboard di runnerhut suddivide la spesa per flusso di lavoro, lavoro, etichetta e repository.Come posso vedere il costo per etichetta del corridore?Filtra la dashboard di utilizzo per etichetta per visualizzare i minuti e la spesa per tipo di corridore.Come riconosco un corridore sottodimensionato?CPU sostenuta vicino al 100%, pressione della memoria o attività di scambio durante il processo.Come posso trovare il passaggio più lento in un flusso di lavoro?Ordina i passaggi in base alla durata nella visualizzazione della corsa oppure utilizza la sequenza temporale runnerhut che mostra separatamente la coda, l'impostazione e il tempo del passaggio.Come faccio a sapere quale flusso di lavoro è diventato più lento?Confronta la durata di p95 per flusso di lavoro mese dopo mese nel dashboard di analisi.Come posso misurare la percentuale di riscontri nella cache?La dashboard di runnerhut riporta il tasso di successo, il tempo di ripristino e le dimensioni per chiave di cache.Come posso esportare i dati del lavoro?Utilizza l'API runnerhut o l'API REST GitHub Actions e scrivi i risultati in CSV.Un agente AI può interrogare i miei parametri CI?Sì, attraverso il server MCP runnerhut, che espone come strumenti build, durate, guasti e costi.Gli agenti AI possono attivare job CI?Sì, tramite l'API o spingendo i rami, come qualsiasi altro attore.Quali metriche espone l'API?Tempo di coda, percentili di durata, percentuale di riscontri nella cache, utilizzo di CPU e memoria e costo per lavoro, etichetta e flusso di lavoro.Come posso visualizzare l'utilizzo della CPU e della memoria per un lavoro?runnerhut registra automaticamente l'utilizzo per lavoro e lo mostra nella pagina di esecuzione.Posso avvisare sui lavori con memoria esaurita?Sì. Avviso sulle interruzioni OOM o sull'utilizzo della memoria che supera una soglia.Come posso produrre un rapporto settimanale sullo stato dell'IC?Pianifica un flusso di lavoro che interroghi l'API delle metriche e pubblichi la durata p95, il tasso di utilizzo della cache, il tasso di interruzione e la spesa.Perché il mio lavoro è stato interrotto con il codice di uscita 137?Si tratta di un kill OOM: il processo ha superato la memoria disponibile.Perché il disco del mio lavoro è esaurito?I corridori ospitati su GitHub hanno circa 14 GB liberi; I livelli Docker e i node_modules si esauriscono rapidamente.I corridori hanno dischi grandi?I corridori ospitati su GitHub hanno circa 14 GB liberi. I runner runnerhut forniscono da 150 GB a 2 TB di NVMe locale.I gruppi di corridori limitano la concorrenza?Possono. Un gruppo può avere il proprio limite di concorrenza indipendentemente dal limite del tuo account.Quali limiti di velocità dell'API GitHub influiscono sull'CI?GITHUB_TOKEN è limitato per repository all'ora; i flussi di lavoro che effettuano molte chiamate API possono esaurirlo.Perché i miei lavori raggiungono i timeout di rete?Solitamente la limitazione della velocità del registro, un collo di bottiglia del gateway NAT o una policy in uscita riducono silenziosamente il traffico.