Esplora corridori
Gli strumenti di esecuzione di GitHub sono risorse di calcolo che eseguono flussi di lavoro di GitHub Actions. Ogni runner può eseguire un singolo processo alla volta. Consentono agli sviluppatori di eseguire attività di compilazione, test e distribuzione direttamente all'interno dei repository GitHub. Esistono due tipi principali di strumenti di esecuzione di GitHub:
- Gli strumenti di esecuzione ospitati in GitHub sono risorse di calcolo virtualizzate o in contenitori fornite e gestite da GitHub.
- I runner self-hosted sono risorse di calcolo fisiche, virtualizzate o containerizzate di cui gli utenti e le organizzazioni GitHub effettuano il provisioning e gestiscono autonomamente.
Ogni tipo ha alcune caratteristiche univoche, presenta una serie di funzionalità distinte e garantisce diverse considerazioni.
È importante notare che GitHub sconsiglia vivamente l'uso dei runner self-hosted nei repo pubblici. In questo modo viene introdotto un rischio significativo per la sicurezza, poiché potenzialmente consente a chiunque di eseguire il codice all'interno dell'ambiente privato dell'organizzazione.
Strumenti di esecuzione ospitati in GitHub
Gli strumenti di esecuzione ospitati in GitHub offrono una soluzione pratica per l'esecuzione di flussi di lavoro in GitHub Actions, eliminando la necessità di amministrare i componenti hardware e software sottostanti. Sono progettati per la scalabilità automatica in base alla domanda, garantendo prestazioni ottimali durante i periodi di utilizzo di picco. GitHub offre diversi ambienti preconfigurato per gli strumenti di esecuzione ospitati in GitHub, che coprono diverse configurazioni software e sistemi operativi, tra cui Ubuntu Linux, Microsoft Windows e macOS.
I runner ospitati da GitHub includono gli strumenti predefiniti integrati del sistema operativo. Ad esempio, i runner Ubuntu e macOS includono grep, find e which. Per identificare tutti gli altri strumenti preinstallati sui runner, gli utenti possono esaminare la distinta base software (SBOM) per ogni build delle immagini runner di Windows e Ubuntu. In alternativa, gli utenti possono esaminare la sottosezione Runner Image della sezione Configura processo nei log del flusso di lavoro. Il collegamento che segue la voce Software incluso descrive tutti gli strumenti preinstallati nello strumento di esecuzione che ha eseguito il flusso di lavoro. È anche possibile installare software aggiuntivo negli strumenti di esecuzione ospitati in GitHub creando un processo che installa i pacchetti come parte del flusso di lavoro esistente.
Gli strumenti di esecuzione ospitati in GitHub vengono eseguiti nell'infrastruttura cloud di GitHub, sfruttando macchine virtuali o contenitori per eseguire flussi di lavoro. Ogni esecuzione del flusso di lavoro è isolata all'interno del proprio ambiente, garantendo sicurezza e riproducibilità. Gli strumenti di esecuzione ospitati in GitHub si integrano perfettamente con GitHub Actions, consentendo agli utenti di farvi riferimento direttamente all'interno dei flussi di lavoro ospitati nei repository GitHub.
Esistono alcuni limiti per l'utilizzo di GitHub Actions quando si usano gli strumenti di esecuzione ospitati su GitHub. In particolare, ogni processo in un flusso di lavoro ha il massimo di 6 ore di tempo di esecuzione. Se un processo raggiunge questo limite, il processo viene terminato e non viene completato. Ogni esecuzione del flusso di lavoro è limitata a 35 giorni. Se un'esecuzione del flusso di lavoro raggiunge questo limite, l'esecuzione viene annullata. Questo periodo include la durata dell'esecuzione e il tempo dedicato all'attesa e all'approvazione.
Prerequisiti
Prima di implementare gli strumenti di esecuzione ospitati in GitHub, gli utenti devono avere un repository GitHub in cui possono definire flussi di lavoro usando GitHub Actions. I runner sono disponibili per tutti gli utenti di GitHub con accesso a GitHub Actions.
Implementazione
A differenza dei runner self-hosted, quelli ospitati da GitHub vengono forniti automaticamente come parte dell'esecuzione di un singolo flusso di lavoro. Gli utenti definiscono i flussi di lavoro come file in formato YAML archiviati nella directory .github/workflows nei repository GitHub. All'interno della configurazione del flusso di lavoro, gli utenti specificano l'ambiente di esecuzione desiderato, incluse le dipendenze del sistema operativo e del software. I runner con specifiche corrispondenti vengono configurati su richiesta ogni volta che viene attivato il flusso di lavoro, con un runner per ogni lavoro. I trigger possono essere manuali o automatici, in base a eventi quali push di codice, richieste pull o eventi di invio del repository.
I runner ospitati su GitHub si autenticano con GitHub utilizzando token o credenziali fornite da GitHub Actions. Si basano sulla connettività predefinita per comunicare con la piattaforma GitHub e per scaricare gli artefatti del flusso di lavoro.
Manutenzione
GitHub gestisce gli aggiornamenti e la manutenzione degli strumenti di esecuzione ospitati in GitHub, assicurandosi che rimangano up-to-date con le versioni software e le patch di sicurezza più recenti. Gli strumenti software inclusi nei runner vengono aggiornati settimanalmente. Le attività del runner vengono monitorate e registrate, facilitando il tracciamento delle esecuzioni del flusso di lavoro e la risoluzione dei problemi.
Licenze e costi
I runner ospitati su GitHub sono inclusi nei prezzi di GitHub Actions, con fatturazione basata sull'utilizzo per i minuti del workflow oltre il livello gratuito. Gli utenti beneficiano del ridimensionamento automatico e conveniente, poiché GitHub gestisce automaticamente la fornitura e la deallocazione dei runner in base alla domanda.
Strumenti di esecuzione self-hosted
Rispetto agli strumenti di esecuzione ospitati da GitHub, quelli self-hosted offrono un maggiore controllo e opzioni di personalizzazione, con ambienti di esecuzione in grado di soddisfare una gamma più ampia di requisiti. Possono essere distribuiti in locale o nel cloud, a seconda di criteri quali connettività di rete, costo e disponibilità delle risorse.
I runner self-hosted vengono sottoposti a provisioning e gestiti dagli utenti, offrendo loro il pieno controllo sull'ambiente di esecuzione. Sono completamente personalizzabili, incluse le specifiche hardware, le configurazioni software e le impostazioni di rete. Facilitano anche l'integrazione con l'infrastruttura e gli strumenti esistenti, riducendo al minimo la possibilità di problemi di compatibilità e interoperabilità.
A differenza degli strumenti di esecuzione ospitati in GitHub, non esistono limiti al tempo necessario per completare l'esecuzione di singoli processi e le esecuzioni del flusso di lavoro.
Prerequisiti
Gli utenti devono impostare e configurare i runner self-hosted sulla loro infrastruttura scelta, inclusa l'installazione del software del runner e di eventuali dipendenze aggiuntive. Il codice sorgente per i runner auto-ospitati è disponibile come progetto open source su GitHub all'indirizzo https://github.com/actions/runner. Ogni runner self-hosted funge da agente che comunica con GitHub Actions per l'esecuzione dei flussi di lavoro.
I runner self-hosted richiedono connettività di rete in uscita, credenziali di autenticazione e autorizzazione per accedere alla piattaforma GitHub e scaricare gli artefatti del processo di lavoro. A seconda della posizione degli esecutori, potrebbe essere necessario configurare le regole del firewall per soddisfare questi requisiti.
Implementazione
Come per gli strumenti di esecuzione ospitati in GitHub, l'implementazione implica la definizione di flussi di lavoro in formato YAML e l'archiviazione della directory .github/workflows nei repository GitHub. Tuttavia, per consentire ai flussi di lavoro di usare runner self-hosted, gli utenti devono prima registrarli, fornendo i token di autenticazione o le credenziali necessari. Come parte della registrazione, gli utenti specificano caratteristiche quali il nome del runner, le etichette e i parametri dell'ambiente di esecuzione.
La registrazione può avvenire a diversi livelli all'interno di un'azienda:
- Livello di repository (repository singolo)
- A livello di un'organizzazione (più repository in un'organizzazione)
- Livello aziendale (più organizzazioni in un'azienda)
Manutenzione
Gli utenti sono responsabili di aggiornare e gestire runner autogestiti, inclusa l'installazione di aggiornamenti software e patch di sicurezza. La manutenzione comporta anche il monitoraggio dell'integrità e delle prestazioni del runner, nonché la risoluzione di eventuali problemi che si verificano durante il tempo di esecuzione del runner.
Licenze e costi
I runner self-hosted non comportano costi di licenza aggiuntivi oltre ai prezzi di GitHub Actions e ai costi di infrastruttura associati, tra cui calcolo, archiviazione e rete. L'ottimizzazione dell'allocazione e dell'utilizzo delle risorse diventa responsabilità dell'utente.