In GitHub, così come in Azure DevOps o in altri sistemi di CI/CD, abbiamo la possibilità di scegliere se eseguire i nostri workflow tramite degli agent (o runner) completamente gestiti dal vendor, oppure da noi stessi (o dall'organizzazione). Chiaramente la scelta di un sistema o dell'altro ha dei pro e dei contro che devono essere valutati attentamente. Tra questi, possiamo sicuramente includere il fatto che gli hosted sono gestiti, pertanto non dobbiamo occuparci di mantenere le virtual machine, il software installato sopra, fare il patching, gestire lo spazio su disco, la sicurezza e così via. D'altro canto, però, siamo, spesso, molto limitati dalla quantità di CPU, GPU o memoria delle VM che ci sono offerte: se necessitiamo di performance, la strada giusta, fino ad oggi, è sempre stata quella di optare per il mondo on-prem con una configurazione hardware ad-hoc.
GitHub ha recentemente annunciato la disponibilità di large runners, ovvero di virtual machine, sempre di tipo gestito da GitHub stesso, che però hanno un range di CPU e memoria che possono scalare fino 64 core e 256Gb di RAM (ma ci sono anche configurazioni intermedie: https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners#machine-sizes-for-larger-runners).
Queste tipologie di runner non differiscono da quelli "standard", se non per il pricing, e per questo devono essere abilitati a livello di organizzazione:

A questo punto possiamo modificare il workflow specificando il nome del runner che abbiamo scelto in fase di configurazione.
jobs: build: name: Build runs-on: mynewrunner steps: ...
Non solo questi runner ci consentono di avere performance maggiori, ma ci possono garantire anche un indirizzo IP statico, la possibilità di autoscaling (fino ad un limite imposto dall'organizzazione per limitare i costi) e il supporto a GPU dedicata, oltre che a runner basati su ARM.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire script pre e post esecuzione di un workflow di GitHub
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Scrivere selettori CSS più semplici ed efficienti con :is()
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Managed deployment strategy in Azure DevOps
Aggiornare a .NET 9 su Azure App Service
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Referenziare un @layer più alto in CSS
Ottenere un token di accesso per una GitHub App
Filtering sulle colonne in una QuickGrid di Blazor
I più letti di oggi
- Organizzare i moduli sfruttando CommonJS in Javascript
- .NET Aspire per applicazioni distribuite
- Animare la rotazione di un'immagine dentro un canvas in HTML5
- Importare un file JavaScript in un web worker
- .NET Conference Italia 2024 - Milano
- La nostra prova su strada di Windows Phone 7
- Utilizzare Hybrid Cache in .NET 9
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps