Ga naar hoofdinhoud

Introductie tot GitHub Codespaces

Ontdek GitHub Codespaces, de ontwikkelomgeving waarmee je overal je code kunt schrijven, uitvoeren en deployen.
· 10 min lezen

Verken met AI

In dit artikel praten we je helemaal bij over alles wat je moet weten over GitHub Codespaces. De moeite waard om te leren, want het verandert de manier waarop developers werken door een onmiddellijke, cloudgebaseerde ontwikkelomgeving te bieden. We bekijken de levenscyclus van GitHub Codespaces, zodat je de verschillende fasen in het proces begrijpt. Daarnaast laten we zien hoe je je eigen codespace kunt aanpassen zodat die past bij jouw manier van werken en behoeften.

Maak je geen zorgen als je nog niet bekend bent met Git en GitHub. Je kunt onze cursus GitHub Concepts volgen om te leren hoe je een repository, een README en veel andere basiszaken maakt. Sla ook zeker onze cursus Foundations of Git niet over om te beginnen met de basis van versiebeheer. 

Wat is een GitHub Codespace?

Een GitHub Codespace is een cloudgebaseerde ontwikkelomgeving waarmee developers direct in de cloud code kunnen schrijven, testen en debuggen, zonder complexe lokale setups. Wanneer een codespace wordt aangemaakt, start deze een Docker-container op een virtuele machine, vooraf geconfigureerd met de benodigde tools, libraries en dependencies voor het project. Een opvallende functie van GitHub Codespaces is ook dat het integreert met IDE’s zoals Visual Studio Code, zoals we later in dit artikel zullen verkennen.

GitHub codespace operational workflow

Codespace-workflow. Bron: GitHub

De levenscyclus van GitHub Codespaces begrijpen

GitHub Codespaces begrijpen begint bij de levenscyclus van een codespace. Elke fase omvat specifieke acties die invloed hebben op je ervaring of op hoe je resources gebruikt.

Aanmaakfase

Je hebt twee hoofdopties bij het maken van een codespace: starten vanuit een bestaand project of een nieuw project starten. Werk je aan een bestaand project, dan maak je waarschijnlijk een codespace vanuit een bestaande repository-branch, en wordt de codespace gekoppeld aan de specifieke branch die je selecteert. Start je een nieuw project, dan kun je in plaats daarvan een template gebruiken. Een template is handig omdat het een vooraf geconfigureerde omgeving biedt om snel te beginnen met een project. 

Let wel: hoewel templates vooral worden gebruikt bij nieuwe projecten, kun je in een bestaand project ook specifieke instellingen uit een template toepassen om je omgeving te verbeteren. Dat is ook een optie. 

Image showing the position of the menu button, and where to click to open up the GitHub Codespaces pageCodespaces vinden in het GitHub-menu. Afbeelding door de auteur

Het hele workflow-ontwerp en de interactie met Git en branches lijkt op de workflow die je zou hebben op je lokale machine. In beide gevallen publiceer je je project naar een GitHub-repository en moet je ervoor zorgen dat je je wijzigingen naar GitHub pusht. 

Herbouwfase

Een nieuwe codespace aanmaken is een alternatief voor het herbouwen van een codespace. In bepaalde situaties biedt herbouwen echter voordelen, dus het is de moeite waard om het verschil te begrijpen. Herbouwen stelt je bijvoorbeeld in staat updates op de containerconfiguratie toe te passen zonder werk in je /workspaces-map te verliezen. Bovendien hergebruikt GitHub Codespaces bij het herbouwen gecachete images van eerdere builds, wat het proces versnelt omdat libraries niet opnieuw geïnstalleerd hoeven te worden.

Image showing the GitHub Rebuild Container option from the command paletteDe container herbouwen. Afbeelding door de auteur

Stopfase

De reden dat we een codespace stoppen, is dat er in gepauzeerde staat geen resources worden verbruikt, wat helpt om kosten te beheren. Onthoud dat een draaiende codespace CPU-kosten met zich meebrengt, terwijl een gestopte codespace alleen opslagkosten veroorzaakt. 

Belangrijk om te weten: als je een codespace niet expliciet stopt, blijft deze draaien totdat hij vanwege inactiviteit uitlogt. De time-outperiode kun je zelf instellen; dat behandel ik in de volgende sectie. Het is ook belangrijk te weten dat het simpelweg sluiten van een browsertab de codespace niet stopt. Dit is een veelgemaakte fout.

Image showing how to stop a GitHub codespace

Een codespace stoppen. Afbeelding door de auteur

Verwijderfase

Zodra je klaar bent met een project, verwijder dan de codespace zodat je geen onnodige opslagkosten maakt. Het is ook een goede gewoonte om je werkruimte georganiseerd te houden.

Je kunt je wijzigingen naar een externe branch pushen voordat je verwijdert, of alle niet-gecommitte wijzigingen volledig verwerpen. Bovendien worden codespaces die gedurende een ingestelde periode inactief blijven automatisch verwijderd. Dit is bedoeld om developers te helpen hun opslag en kosten te beheren. Het kiezen van de periode vóór automatische verwijdering is nog een instelling die we hieronder behandelen.

Image showing how to delete a GitHub codespace

Een codespace verwijderen. Afbeelding door de auteur

GitHub Codespaces aanpassen

Een groot voordeel van GitHub Codespaces is dat ze sterk aanpasbaar zijn. Je kunt een configuratie kiezen of specifieke tools selecteren. Grofweg kunnen we de aanpassingen verdelen in twee categorieën: aanpassingen die je werkruimte personaliseren naar jouw werkstijl, en aanpassingen die je helpen resources te beheren en kosten te beperken. 

Je codespace-omgeving personaliseren

Als eerste kunnen we kijken hoe we de omgeving personaliseren. Developers waarderen aanpassingen die bij hun specifieke workflow passen. De meeste van deze instellingen vind je door op je profielfoto te klikken om het instellingenmenu te openen, zoals je hieronder ziet. 

Image showing the profile photo which will open up the GitHub sidebarHet instellingenmenu openen. Afbeelding door de auteur

Settings Sync

Het eerste wat je mogelijk wilt doen, is zorgen dat je instellingen consistent zijn tussen de desktopversie van VS Code en de webclient. Dat kan door Settings Sync in te schakelen, zodat wijzigingen of aanpassingen die je op de ene plek maakt, ook op de andere worden toegepast. Dit is erg handig voor developers die moeten wisselen tussen omgevingen.

Image showing GitHub Settings Sync section under GitHub Codespaces settings

Settings Sync inschakelen. Afbeelding door de auteur

Er kunnen conflicten ontstaan als er verschillen zijn tussen de cloudinstellingen en je lokale instellingen, of als een van je machines een tijd offline was. In geval van conflicten kun je overschrijven met ofwel de lokale of de cloudinstellingen, of specifieker kiezen welke instellingen je wilt behouden. 

Een codespace hernoemen

GitHub kent een weergavenaam toe aan elke nieuwe codespace. Waarschijnlijk wil je de automatisch gegenereerde naam niet behouden, zeker niet als je meerdere codespaces hebt. Zelf kies ik een naam die het doel van het project laat zien en me helpt makkelijk te navigeren.  

GIF showing process of renaming a GitHub codefileEen codespace hernoemen. Afbeelding door de auteur

Weet dat elke codespace, naast de weergavenaam, ook een permanente naam heeft die je niet kunt wijzigen. Deze permanente naam is in feite de weergavenaam met een reeks willekeurig gegenereerde tekens aan het einde. Het doel hiervan is om een unieke identifier te garanderen. Let op de permanente naam als je van plan bent de GitHub command line interface te gebruiken. Het is ook handig als je contact moet opnemen met het GitHub-supportteam. Je vindt de permanente naam door de codespace in de browser te openen; het subdomein in de browser is de permanente naam. 

De shell wijzigen

Als je een nieuwe codespace opent in de VS Code-desktopapp, hangt de shell die opent af van je lokale instellingen. Gebruik je de VS Code-webclient, dan zie je standaard bash. Je kunt je shell altijd wijzigen als je bijvoorbeeld zsh of fish verkiest, en deze wijziging in je instellingen opslaan zodat je voortaan altijd je favoriete shell opent. 

Image showing the plus icon on the GitHub terminalDe shell wijzigen. Afbeelding door de auteur

Stel de standaardeditor in

Je kunt ook je favoriete code-editor kiezen. Als je bijvoorbeeld net als ik fan bent van Visual Studio Code, kun je je instellingen zo configureren dat VS Code elke keer wordt gestart wanneer je een codespace maakt of opent. Je kunt kiezen uit VS Code, JetBrains en JupyterLab.

Image showing the various options of opening a GitHub codespace by clicking on the codespace ellipsisEen standaardeditor kiezen. Afbeelding door de auteur

Resources en performance beheren

Laten we nu enkele instellingen bekijken rond resource-toewijzing en prestaties.

Het machinetype wijzigen

Je kunt de onderliggende hardware selecteren of aanpassen die je omgeving aandrijft. Je kunt bijvoorbeeld overschakelen naar een machine met meer CPU, RAM of opslag. Zo zorg je dat je codespace genoeg resources heeft voor de taak waar je aan werkt, maar voorkom je tegelijk overkill. Let goed op welk remote machinetype je gebruikt, want de types vallen in verschillende tariefklassen.  

Image of a dialog window with GitHub options to select a preferred machine typeEen voorkeursmachinetype selecteren. Afbeelding door de auteur

Weet dat je het machinetype alleen kunt wijzigen voor gepubliceerde codespaces. Maak je een codespace vanuit een template die niet is gekoppeld aan een GitHub-repository, dan heb je niet de optie om het machinetype te wijzigen. En als je deel uitmaakt van een organisatie, kan het zijn dat je het machinetype niet kunt aanpassen, afhankelijk van het beleid waaronder je valt. 

De time-outperiode aanpassen

Standaard stopt GitHub Codespaces automatisch na 30 minuten, maar je kunt dit aanpassen in je persoonlijke instellingen. De maximale time-outperiode is vier uur. Het is belangrijk bewust om te gaan met resourcegebruik en te voorkomen dat inactieve codespaces onnodig blijven draaien.

Image showing the default idle timeout section under the GitHub codespaces settingsDe time-outperiode wijzigen. Afbeelding door de auteur

Automatische verwijdering configureren

Inactieve codespaces worden na een bepaalde tijd verwijderd. Dit is bedoeld om resources vrij te maken. Je kunt instellen hoe lang je gestopte codespaces bewaard blijven voordat ze worden verwijderd, maar houd er rekening mee dat de maximale bewaartermijn 30 dagen is. 

Image for setting the retention period for a GitHub codespaceDe bewaartermijn instellen. Afbeelding door de auteur

Kies de geografische regio

Je kunt in je profielinstellingen een standaardregio instellen waar je GitHub Codespaces worden gehost. Een regio dichter bij je locatie kan de performance verbeteren, zoals snellere laadtijden en lagere latency, en stelt je in staat te bepalen waar je data wordt opgeslagen om te voldoen aan vereisten rondom gegevenslocatie.

Image showing how to change the region of your GitHub codespacesDe regio wijzigen. Afbeelding door de auteur

GitHub.dev vs. GitHub Codespaces

Als je bekend bent met GitHub, ken je mogelijk ook GitHub.dev, en vraag je je af wat het verschil is tussen GitHub.dev en GitHub Codespaces. 

GitHub.dev is om te beginnen een lichte, browsergebaseerde code-editor, terwijl GitHub Codespaces een volledige ontwikkelomgeving biedt waarin je je code kunt draaien en testen. Met andere woorden: omdat GitHub.dev beperkt is in scope, is het echt alleen bedoeld voor codebewerkingen. 

GitHub Codespaces integreert ook met IDE’s zoals VS Code, en wijzigingen in instellingen in de cloud- en lokale omgevingen kunnen worden gesynchroniseerd via Settings Sync, zoals we hebben gezien. Developers zullen ook merken dat GitHub.dev-omgevingen niet persistent zijn, wat betekent dat je werk niet tussen sessies wordt opgeslagen tenzij je wijzigingen handmatig commit naar de repository. Bij GitHub Codespaces daarentegen blijven je wijzigingen bewaard, zelfs als je je codespace sluit of stopt. 

Alles bij elkaar genomen is GitHub Codespaces de keuze voor grotere projecten en complexere workflows, omdat het de kracht van een ontwikkelomgeving biedt zonder configuratie of resourcebeheer op je eigen machine.  

FunctieGitHub.devGitHub Codespaces
DoelBrowsergebaseerde code-editor voor snelle bewerkingen aan code in GitHub-repositoriesVolwaardige, cloudgebaseerde ontwikkelomgeving
OmgevingGeen setup nodig; snelle toegang via de browserDocker-gebaseerde container met vooraf geconfigureerde tools, libraries en dependencies
IDE-integratieBeperkte bewerkingservaring met ingebouwde editorOndersteunt Visual Studio Code, JetBrains en JupyterLab
AanpasbaarheidMinimale aanpassingZeer aanpasbaar
ResourcebeheerGeen resourcebeheer vereistGebruikers beheren CPU-kosten, opslagkosten en stellen time-outs in
DeployenNiet ontworpen voor deploymentVolledige ondersteuning voor deployment-workflows
BeschikbaarheidBeschikbaar voor elke GitHub-repositoryVereist een abonnement en meer resources

Conclusie

Naarmate we toewerken naar een gedistribueerde en flexibele werkomgeving, zullen tools zoals GitHub Codespaces een grote rol spelen in de toekomst van softwareontwikkeling. Concreet lost GitHub Codepspaces een paar grote problemen op: je kunt meteen beginnen met coderen, ongeacht de specificaties van je lokale machine; je hebt vanaf elk apparaat toegang tot een ontwikkelomgeving; en je kunt samenwerken met teamleden in identieke omgevingen. 

Wil je verder leren? Lees dan de volgende DataCamp-artikelen:

Luister tenslotte naar de DataCamp-podcastaflevering The Future of Programming with Kyle Daigle, COO at GitHub. Daarin bespreekt hij de stand van zaken rond AI-ondersteund coderen en hoe hij de ontwikkelingen in de sector ziet.

Adejumo Ridwan Suleiman

Auteur

Adejumo Ridwan Suleiman

Ervaren docent data science en biostatisticus met expertise in Python, R en machine learning.

Veelgestelde vragen

Wat is het maximum aantal codespaces dat je kunt maken per repository of branch?

Je kunt onbeperkt codespaces per repository-branch maken als je genoeg opslag hebt. Als je de toegewezen resources overschrijdt, krijg je een melding dat je een codespace moet verwijderen voordat je een nieuwe kunt aanmaken.

Wat is het verschil tussen Github.dev en GitHub Codespaces?

GitHub.dev is een lichte browsereditor voor codebewerkingen, terwijl GitHub Codespaces een volledige cloudgebaseerde ontwikkelomgeving biedt voor complexe workflows.

Onderwerpen