Vai al contenuto principale

Introduzione a GitHub Codespaces

Scopri GitHub Codespaces, l'ambiente di sviluppo che ti consente di scrivere, eseguire e distribuire il tuo codice ovunque.
· 10 min leggi

Scopri con l'IA

In questo articolo, ti metterò al passo con tutto ciò che devi sapere su GitHub Codespaces, che vale davvero la pena imparare perché sta cambiando il modo in cui lavorano gli sviluppatori, offrendo un ambiente di sviluppo immediato e basato sul cloud. Vedremo il ciclo di vita di GitHub Codespaces, così potrai capire le diverse fasi del processo. Inoltre, vedremo come personalizzare il tuo codespace in modo che si adatti al tuo stile di lavoro e alle tue esigenze.

Non preoccuparti se non conosci ancora Git e GitHub. Puoi seguire il nostro corso GitHub Concepts per imparare a creare un repository, un README e molte altre nozioni fondamentali. Inoltre, non perdere il nostro corso Foundations of Git per iniziare con le basi del controllo versione. 

Che cos'è un GitHub Codespace?

Un GitHub Codespace è un ambiente di sviluppo basato sul cloud che consente agli sviluppatori di scrivere, testare ed effettuare il debug del codice direttamente nel cloud, eliminando la necessità di configurazioni locali complesse. Quando crei un codespace, viene avviato un contenitore Docker in esecuzione su una macchina virtuale, preconfigurato con gli strumenti, le librerie e le dipendenze necessarie per il progetto. Una caratteristica notevole di GitHub Codespaces è anche l'integrazione con IDE come Visual Studio Code, come vedremo più avanti in questo articolo.

GitHub codespace operational workflow

Workflow di un codespace. Fonte: GitHub

Comprendere il ciclo di vita di GitHub Codespaces

Capire GitHub Codespaces richiede di comprendere il ciclo di vita di un codespace. Ogni fase prevede azioni specifiche che influiscono sulla tua esperienza o su come utilizzi le risorse.

Fase di creazione

Hai due opzioni principali quando crei un codespace: partire da un progetto esistente oppure avviarne uno nuovo. Se stai lavorando a un progetto esistente, probabilmente creerai un codespace da un branch del repository esistente, e il codespace sarà collegato allo specifico branch che selezioni. Se stai avviando un nuovo progetto, puoi invece usare un template. Un template è utile perché fornisce un ambiente preconfigurato per aiutarti ad avviare un progetto. 

Nota: anche se i template sono usati principalmente per iniziare nuovi progetti, se stai lavorando a un progetto esistente e vuoi usare impostazioni specifiche di un template, puoi applicarne la configurazione per migliorare il tuo ambiente. Anche questa è un'opzione. 

Image showing the position of the menu button, and where to click to open up the GitHub Codespaces pageTrovare Codespaces nel menu di GitHub. Immagine dell’autore

Per progettazione, l'intero workflow e l'interazione con Git e i branch è simile al flusso di lavoro che avresti lavorando sulla tua macchina locale. In entrambi i casi, pubblichi il progetto su un repository GitHub e devi assicurarti di fare push delle modifiche su GitHub. 

Fase di rebuilding

Creare un nuovo codespace è un'alternativa al rebuilding di un codespace. In alcune situazioni, però, ricostruire un codespace offre dei vantaggi, quindi vale la pena capire la differenza. Per esempio, il rebuilding ti permette di applicare aggiornamenti alla configurazione del container senza perdere il lavoro all'interno della directory /workspaces. Inoltre, quando esegui il rebuilding, GitHub Codespaces riutilizza le immagini in cache dalle build precedenti, velocizzando il processo ed evitando di reinstallare le librerie.

Image showing the GitHub Rebuild Container option from the command paletteRicostruire il container. Immagine dell’autore

Fase di arresto

Arrestiamo un codespace perché, quando l'ambiente è in pausa, non consuma risorse, e questo aiuta a gestire i costi. Ricordiamo che un codespace in esecuzione comporta addebiti di CPU, mentre un codespace arrestato comporta solo costi di storage. 

È importante sapere che, se non arresti esplicitamente un codespace, questo continuerà a funzionare finché non andrà in timeout per inattività. Il periodo di timeout è una personalizzazione che possiamo scegliere, e che tratterò nella prossima sezione. È anche importante sapere che chiudere semplicemente una scheda del browser non arresta il codespace. È un errore comune.

Image showing how to stop a GitHub codespace

Arrestare un codespace. Immagine dell’autore

Fase di eliminazione

Una volta terminato il lavoro su un progetto, elimina il codespace per evitare costi di archiviazione non necessari. È sempre una buona pratica mantenere il tuo workspace in ordine.

Puoi fare push delle tue modifiche su un branch remoto prima di eliminare, oppure scartare del tutto eventuali modifiche non confermate. Inoltre, i codespace che restano inattivi per un periodo stabilito verranno eliminati automaticamente. Questo è pensato per aiutare gli sviluppatori a gestire lo storage e i costi. La scelta del periodo prima dell'eliminazione automatica è un'altra personalizzazione che vedremo sotto.

Image showing how to delete a GitHub codespace

Eliminare un codespace. Immagine dell’autore

Personalizzare GitHub Codespaces

Una grande qualità di GitHub Codespaces è l'alta personalizzazione. Puoi scegliere una configurazione o selezionare strumenti specifici. In linea generale, possiamo dividere le personalizzazioni in due categorie: quelle progettate per personalizzare il tuo workspace in base al tuo stile di lavoro, e quelle pensate per aiutarti a gestire le risorse e contenere i costi. 

Personalizzare l'ambiente del tuo codespace

La prima cosa da considerare è come personalizzare il nostro ambiente. Gli sviluppatori apprezzeranno le personalizzazioni che si adattano al loro specifico flusso di lavoro. La maggior parte di queste personalizzazioni è accessibile cliccando sulla tua immagine del profilo per aprire il menu delle impostazioni, come puoi vedere nell'immagine qui sotto. 

Image showing the profile photo which will open up the GitHub sidebarApertura del menu impostazioni. Immagine dell’autore

Settings Sync

La prima cosa che potresti voler fare è assicurarti che le impostazioni siano coerenti tra la versione desktop di VS Code e il client web. Puoi farlo abilitando Settings Sync, così qualsiasi modifica o personalizzazione fatta in un posto viene applicata anche all'altro. È una funzione molto comoda per chi deve passare da un ambiente all'altro.

Image showing GitHub Settings Sync section under GitHub Codespaces settings

Abilitare Settings Sync. Immagine dell’autore

Possono verificarsi conflitti se ci sono differenze tra le impostazioni nel cloud e quelle locali o se una delle tue macchine è rimasta offline per un po'. In caso di conflitti, potrai scegliere di sovrascrivere usando le impostazioni locali o quelle cloud, oppure selezionare più nello specifico quali impostazioni mantenere. 

Rinominare un codespace

GitHub assegna un nome visualizzato a ogni nuovo codespace. Probabilmente non vorrai tenere il nome generato automaticamente, soprattutto se hai più codespace attivi. Io cerco di scegliere un nome che indichi lo scopo del progetto e mi aiuti a orientarmi facilmente.  

GIF showing process of renaming a GitHub codefileRinominare un codespace. Immagine dell’autore

Sappi che, oltre al nome visualizzato, ogni codespace ha anche un nome permanente che non puoi cambiare. Questo nome permanente è in pratica il nome visualizzato con una serie di caratteri generati casualmente alla fine. Lo scopo è garantire che il codespace abbia un identificatore univoco. Presta attenzione al nome permanente se prevedi di usare l'interfaccia a riga di comando di GitHub. È utile anche nel caso tu debba contattare il team di supporto di GitHub per qualsiasi motivo. Puoi trovare il nome permanente aprendo il codespace nel browser, dove il sottodominio nel browser corrisponde al nome permanente. 

Cambiare la shell

Se apri un nuovo codespace nell'app desktop di VS Code, la shell che si apre dipende dalle tue impostazioni locali. Se usi il client web di VS Code, vedrai bash aperta per impostazione predefinita. Puoi sempre cambiare shell se preferisci, ad esempio zsh o fish, e puoi applicare questa modifica nelle impostazioni in modo che si apra la shell preferita ogni volta. 

Image showing the plus icon on the GitHub terminalCambiare la shell. Immagine dell’autore

Impostare l'editor predefinito

Puoi anche scegliere il tuo editor di codice preferito. Per esempio, se ti piace davvero Visual Studio Code come a me, puoi configurare le impostazioni per avviare VS Code ogni volta che crei o apri un codespace. Puoi scegliere tra VS Code, JetBrains e JupyterLab.

Image showing the various options of opening a GitHub codespace by clicking on the codespace ellipsisScegliere un editor predefinito. Immagine dell’autore

Gestire risorse e prestazioni

Vediamo ora alcune impostazioni relative all'allocazione delle risorse e alle prestazioni.

Cambiare il tipo di macchina

Puoi selezionare o modificare l'hardware sottostante che alimenta il tuo ambiente. Ad esempio, puoi passare a una macchina con più CPU, RAM o storage. In questo modo, puoi assicurarti che il tuo codespace abbia risorse sufficienti per gestire qualsiasi attività su cui stai lavorando, ma allo stesso tempo evitare di esagerare. È importante prestare attenzione al tipo di macchina remota che stai usando perché i tipi appartengono a diversi livelli di fatturazione.  

Image of a dialog window with GitHub options to select a preferred machine typeSelezionare un tipo di macchina preferito. Immagine dell’autore

Sappi che puoi cambiare il tipo di macchina solo dei codespace che sono pubblicati; quindi, se crei un codespace da un template non collegato a un repository GitHub, non avrai l'opzione per cambiare il tipo di macchina. Inoltre, se fai parte di un'organizzazione, potresti non avere l'opzione di cambiare il tipo di macchina, a seconda delle regole della policy vigente. 

Personalizzare il periodo di timeout

Per impostazione predefinita, GitHub Codespaces si arresta automaticamente dopo 30 minuti, ma puoi modificare questo valore nelle impostazioni personali. Il periodo massimo di timeout è di quattro ore. È importante prestare attenzione all'uso delle risorse ed evitare che i codespace inattivi restino in esecuzione quando non serve.

Image showing the default idle timeout section under the GitHub codespaces settingsModificare il periodo di timeout. Immagine dell’autore

Configurare l'eliminazione automatica

I codespace inattivi verranno eliminati dopo un certo periodo di tempo. Questo è pensato come una comodità per liberare risorse. Puoi configurare per quanto tempo i tuoi codespace arrestati vengono mantenuti prima di essere eliminati, ma tieni presente che il periodo massimo di conservazione è di 30 giorni. 

Image for setting the retention period for a GitHub codespaceImpostare il periodo di conservazione. Immagine dell’autore

Scegliere la regione geografica

Puoi impostare una regione geografica predefinita in cui ospitare i tuoi GitHub Codespaces visitando le impostazioni del profilo. Selezionare una regione più vicina alla tua posizione può migliorare le prestazioni, ad esempio tempi di caricamento più rapidi e minore latenza, e ti permette anche di personalizzare dove vengono archiviati i tuoi dati per rispettare eventuali requisiti di residenza dei dati.

Image showing how to change the region of your GitHub codespacesCambiare la regione. Immagine dell’autore

GitHub.dev vs GitHub Codespaces

Se conosci GitHub, potresti conoscere anche GitHub.dev e potresti chiederti qual è la differenza tra GitHub.dev e GitHub Codespaces. 

Per cominciare, GitHub.dev è un editor di codice leggero, basato su browser, mentre GitHub Codespaces fornisce un ambiente di sviluppo completo che ti consente di eseguire e testare il codice. In altre parole, poiché GitHub.dev ha uno scopo limitato, è pensato principalmente per modifiche al codice. 

GitHub Codespaces si integra anche con IDE come VS Code, e le modifiche alle impostazioni negli ambienti cloud e locali possono essere sincronizzate tramite la funzione Settings Sync, come abbiamo visto. Gli sviluppatori noteranno anche che gli ambienti GitHub.dev non sono persistenti, il che significa che il tuo lavoro non viene salvato tra una sessione e l'altra a meno che tu non effettui manualmente il commit delle modifiche nel repository. Con GitHub Codespaces, invece, le modifiche vengono salvate anche se chiudi o arresti il tuo codespace. 

In sintesi, dovremmo considerare GitHub Codespaces come la scelta per progetti più grandi e workflow più complessi, perché offre la potenza di un ambiente di sviluppo senza la necessità di configurazione o gestione delle risorse sulla tua macchina personale.  

CaratteristicaGitHub.devGitHub Codespaces
ScopoEditor di codice basato su browser per modifiche rapide al codice ospitato in repository GitHubAmbiente di sviluppo completo e basato sul cloud
AmbienteNessuna configurazione necessaria; accesso rapido via browserContainer basato su Docker con strumenti, librerie e dipendenze preconfigurati
Integrazione con IDEEsperienza di editing limitata con editor integratoSupporta Visual Studio Code, JetBrains e JupyterLab
PersonalizzazionePersonalizzazione minimaAltamente personalizzabile
Gestione delle risorseNessuna gestione delle risorse richiestaGli utenti gestiscono costi CPU, costi di storage e impostano i timeout
DeploymentNon pensato per il deploymentPieno supporto ai workflow di deployment
DisponibilitàDisponibile per qualsiasi repository GitHubRichiede abbonamento e maggiori risorse

Conclusione

Man mano che ci muoviamo verso un ambiente di lavoro distribuito e flessibile, strumenti come GitHub Codespaces avranno un ruolo importante nel plasmare il futuro dello sviluppo software. In particolare, GitHub Codepspaces risolve alcune questioni principali: ti permette di iniziare a programmare subito, indipendentemente dalle specifiche della tua macchina locale; ti dà accesso a un ambiente di sviluppo da qualsiasi dispositivo; e ti consente di collaborare con i membri del team in ambienti identici. 

Per approfondire, leggi i seguenti articoli di DataCamp:

Infine, ascolta l'episodio del podcast di DataCamp, The Future of Programming with Kyle Daigle, COO at GitHub. Parla dello stato del coding assistito dall'IA e di come vede evolvere il settore.

Adejumo Ridwan Suleiman

Autore

Adejumo Ridwan Suleiman

Docente di data science esperto e biostatistico con competenze in Python, R e machine learning.

Domande frequenti

Qual è il numero massimo di codespace che puoi creare per repository o branch?

Puoi creare un numero illimitato di codespace per branch del repository se hai spazio di archiviazione sufficiente. Quando superi le risorse assegnate, ricevi un messaggio che indica che devi eliminare un codespace prima di crearne uno nuovo.

Qual è la differenza tra Github.dev e GitHub Codespaces?

GitHub.dev è un editor leggero basato su browser per modifiche al codice, mentre GitHub Codespaces fornisce un ambiente di sviluppo completo basato sul cloud per workflow complessi.

Argomenti

Correlato