Hoe automatiseert GitHub Actions ontwikkelingstaken?
Hier introduceren we GitHub Actions en werkstromen. U leert welke typen acties u kunt gebruiken en waar u deze kunt vinden. U bekijkt ook voorbeelden van deze typen acties en hoe deze in een werkstroom passen.
GitHub verkort de tijd van idee tot implementatie
GitHub is ontworpen om teams van ontwikkelaars en DevOps-technici in staat te stellen toepassingen snel te bouwen en te implementeren. Er zijn veel functies in GitHub die dit mogelijk maken, maar ze behoren doorgaans tot een van de volgende twee categorieën:
- Communicatie: Houd rekening met alle manieren waarop GitHub het eenvoudig maakt voor een team van ontwikkelaars om te communiceren over het softwareontwikkelingsproject: codebeoordelingen in pull-aanvragen, GitHub-problemen, projectborden, wiki's, meldingen, enzovoort.
- Automatisering: Met GitHub Actions kan uw team werkstromen automatiseren bij elke stap in het softwareontwikkelingsproces, van integratie tot levering tot implementatie. Hiermee kunt u zelfs het toevoegen van labels aan pull-aanvragen automatiseren en controleren op verouderde problemen en pull-aanvragen.
In combinatie hebben deze functies duizenden ontwikkelteams in staat gesteld om de hoeveelheid tijd die nodig is van hun eerste idee tot implementatie effectief te verminderen.
Werkstroomautomatisering gebruiken om de ontwikkelingstijd te verkorten
We richten ons op automatisering in deze module, dus laten we even kijken hoe teams automatisering kunnen gebruiken om de hoeveelheid tijd te verminderen die nodig is om een typische ontwikkel- en implementatiewerkstroom te voltooien.
Houd rekening met alle taken die moeten worden uitgevoerd nadat de code is geschreven, maar voordat u de code betrouwbaar kunt gebruiken voor het beoogde doel. Afhankelijk van de doelstellingen van uw organisatie moet u waarschijnlijk een of meer van de volgende taken uitvoeren:
- Zorg ervoor dat de code voor alle moduletests slaagt
- Codekwaliteit en nalevingscontroles uitvoeren om ervoor te zorgen dat de broncode voldoet aan de normen van de organisatie
- Controleer de code en de afhankelijkheden ervan op bekende beveiligingsproblemen
- Bouw de code en integreer hierin nieuwe broncode van (mogelijk) meerdere ontwikkelaars
- Zorg ervoor dat de software slaagt voor de integratietests
- Maak een versie van de nieuwe build
- Lever de nieuwe binaire bestanden af op de juiste bestandssysteemlocatie
- Implementeer de nieuwe binaire bestanden op een of meer servers
- Als een van deze taken niet wordt doorgegeven, meldt u het probleem aan de juiste persoon of het juiste team voor oplossing
De uitdaging is om deze taken betrouwbaar, consistent en duurzaam uit te voeren. Dit is een ideale taak voor werkstroomautomatisering. Als u al gebruikmaakt van GitHub, wilt u waarschijnlijk uw werkstroomautomatisering instellen met behulp van GitHub Actions.
Wat is GitHub Actions?
GitHub Actions zijn verpakte scripts voor het automatiseren van taken in een werkstroom voor softwareontwikkeling in GitHub. U kunt GitHub Actions configureren om complexe werkstromen te activeren die voldoen aan de behoeften van uw organisatie; telkens wanneer ontwikkelaars nieuwe broncode controleren in een specifieke vertakking, met tijdsintervallen of handmatig. Het resultaat is een betrouwbare en duurzame geautomatiseerde werkstroom, wat leidt tot een aanzienlijke afname van de ontwikkelingstijd.
Waar kunt u GitHub Actions vinden?
GitHub Actions zijn scripts in een yml-gegevensindeling. Elke opslagplaats heeft een tabblad Acties waarmee u snel en eenvoudig aan de slag kunt met het instellen van uw eerste script. Als u een werkstroom ziet die u denkt een goed uitgangspunt te zijn, selecteert u de knop Configureren om het script toe te voegen en begint u met het bewerken van de bron-yml.
Maar naast de GitHub Actions die worden aanbevolen op het tabblad Acties, kunt u het volgende doen:
- Zoeken naar GitHub Actions in de GitHub Marketplace. In de GitHub Marketplace kunt u nieuwe tools voor het uitbreiden van uw werkstromen, ontdekken en kopen.
- Zoeken naar opensource-projecten. De GitHub Actions-organisatie bevat bijvoorbeeld veel populaire opensource-opslagplaatsen die GitHub Actions bevatten die u kunt gebruiken.
- Uw eigen GitHub Actions helemaal zelf schrijven. U kunt u deze bovendien opensource maken als u dat wilt, of u kunt ze zelfs publiceren naar de GitHub Marketplace.
Opensource GitHub Actions gebruiken
Veel GitHub Actions zijn open source en beschikbaar voor iedereen die ze wil gebruiken. Net als bij elke opensource-software moet u deze echter zorgvuldig controleren voordat u ze in uw project gebruikt. Vergelijkbaar met aanbevolen communitystandaarden met opensource-software, zoals het opnemen van een README, gedragscode, het bijdragen van bestanden en probleemsjablonen, om er maar een paar te noemen, kunt u deze aanbevelingen volgen bij het gebruik van GitHub Actions:
- Controleer het bestand van
action.yml
de actie op invoer, uitvoer en controleer of de code doet wat het doet. - Controleer of de actie zich in de GitHub Marketplace bevindt. Dit is een goede controle, zelfs als een actie niet op de GitHub Marketplace hoeft te staan om geldig te zijn.
- Controleer of de actie is geverifieerd in GitHub Marketplace. Dit betekent dat GitHub het gebruik van deze actie heeft goedgekeurd. U moet het echter nog steeds controleren voordat u deze gebruikt.
- Neem de versie op van de actie die u gebruikt door een Git-verwijzing, SHA of tag op te geven.
Typen GitHub-acties
Er zijn drie typen GitHub-acties: containeracties, JavaScript-acties en samengestelde acties.
Bij containeracties maakt de omgeving deel uit van de code van de actie. Deze acties kunnen enkel worden uitgevoerd in een Linux-omgeving die gehost wordt op GitHub. Containeracties ondersteunen veel verschillende talen.
Bij JavaScript-acties zit de omgeving niet in de code. U moet de omgeving opgeven om deze acties uit te voeren. U kunt deze acties uitvoeren op een virtuele machine in de cloud of on-premises. JavaScript-acties ondersteunen Linux-, macOS- en Windows-omgevingen.
Met samengestelde acties kunt u meerdere werkstroomstappen binnen één actie combineren. U kunt deze functie bijvoorbeeld gebruiken om meerdere uitvoeringsopdrachten samen te voegen in een actie en vervolgens een werkstroom te hebben waarmee de gebundelde opdrachten worden uitgevoerd als één stap met die actie.
De anatomie van een GitHub-actie
Hier volgt een voorbeeld van een actie waarmee een Git-betaling van een opslagplaats wordt uitgevoerd. Deze actie, acties/checkout@v1, maakt deel uit van een stap in een werkstroom. Met deze stap wordt ook de Node.js code gebouwd die is uitgecheckt. In de volgende sectie bespreken we werkstromen, taken en stappen.
steps:
- uses: actions/checkout@v1
- name: npm install and build webpack
run: |
npm install
npm run build
Stel u voor dat u een containeractie wilt gebruiken om een code in een container uit te voeren. Uw actie zou er zo uit kunnen zien:
name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"
inputs:
MY_NAME:
description: "Who to greet"
required: true
default: "World"
runs:
uses: "docker"
image: "Dockerfile"
branding:
icon: "mic"
color: "purple"
Let op de sectie inputs
. Hier krijgt u de waarde van een variabele met de naam MY_NAME
. Deze variabele wordt ingesteld in de werkstroom die deze actie uitvoert.
Merk op dat u in de sectie runs
docker opgeeft voor het kenmerk uses
. Wanneer u dit doet, moet u het pad naar het Docker-installatiekopieënbestand opgeven. Hier is de naam Dockerfile. We gaan hier niet in op de details van Docker, maar als u meer informatie wilt, raadpleegt u de module Inleiding tot Docker Containers .
De laatste sectie, Huisstijl, personaliseert uw actie op de GitHub Marketplace als u deze daar wilt publiceren.
U vindt een volledige lijst met metagegevens van acties op Syntaxis van metagegevens voor GitHub Actions.
Wat is een GitHub Actions-werkstroom?
Een GitHub Actions-werkstroom is een proces dat u in uw opslagplaats instelt voor het automatiseren van levenscyclustaken voor softwareontwikkeling, waaronder GitHub Actions. Met een werkstroom kunt u elk project bouwen, testen, verpakken, vrijgeven en implementeren op GitHub.
Om een werkstroom aan te maken moet u acties toevoegen aan een .yml-bestand in de map .github/workflows
in uw GitHub-opslagplaats.
In de volgende oefening ziet uw werkstroombestand, main.yml, er als volgt uit:
name: A workflow for my Hello World file
on: push
jobs:
build:
name: Hello world action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./action-a
with:
MY_NAME: "Mona"
Let op het kenmerk on:
. Dit is een trigger om aan te geven wanneer deze werkstroom wordt uitgevoerd. Hier wordt een uitvoering geactiveerd wanneer er een pushgebeurtenis naar uw opslagplaats is. U kunt enkele gebeurtenissen opgeven, zoals on: push
een matrix met gebeurtenissen, zoals on: [push, pull_request]
of een gebeurtenisconfiguratieoverzicht waarmee een werkstroom wordt gepland of de uitvoering van een werkstroom wordt beperkt tot specifieke bestanden, tags of vertakkingswijzigingen. De map zou er ongeveer als volgt uit kunnen zien:
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# Also trigger on page_build, as well as release created events
page_build:
release:
types: # This configuration does not affect the page_build event above
- created
Een gebeurtenis wordt geactiveerd voor alle activiteitstypen voor de gebeurtenissen, tenzij u het type of de typen opgeeft. Zie voor een uitgebreide lijst met gebeurtenissen en hun activiteitstypen: Gebeurtenissen die werkstromen activeren in de GitHub-documentatie.
Een werkstroom moet minstens één taak hebben. Een taak is een sectie van de werkstroom die is gekoppeld aan een runner. Een runner kan worden gehost op GitHub of zelf-hosten en de taak kan worden uitgevoerd op een machine of in een container. U geeft de runner op met het runs-on:
kenmerk. Hier vertelt u de werkstroom om deze taak uit te voeren.ubuntu-latest
Voor elke taak moeten verschillende stappen worden uitgevoerd. In ons voorbeeld gebruikt de stap de actieacties /checkout@v1 om de opslagplaats te bekijken. Wat interessant is, is de uses: ./action-a
waarde, het pad naar de containeractie die u in een action.yml-bestand bouwt. We hebben de inhoud van een action.yml-bestand bekeken in de sectie Wat is GitHub Actions?
In het laatste deel van dit werkstroombestand wordt de MY_NAME
variabele waarde voor deze werkstroom ingesteld. Zoals u weet, heeft de containeractie een invoer met de naam .MY_NAME
Zie Werkstroomsyntaxis voor GitHub Actions voor meer informatie over werkstroomsyntaxis
Door GitHub gehoste versus zelf-hostende hardlopers
We hebben kort gezegd dat hardlopers gekoppeld zijn aan een baan. Een runner is gewoon een server waarop de GitHub Actions runner-toepassing is geïnstalleerd. In het vorige werkstroomvoorbeeld was er een runs-on: ubuntu-latest
kenmerk in het takenblok, waarin de werkstroom werd verteld dat de taak wordt uitgevoerd met behulp van de door GitHub gehoste runner die in de ubuntu-latest
omgeving wordt uitgevoerd.
Als het gaat om hardlopers, zijn er twee opties waaruit u kunt kiezen: Door GitHub gehoste runners of zelf-hostende runners. Als u een door GitHub gehoste runner gebruikt, wordt elke taak uitgevoerd in een nieuw exemplaar van een virtuele omgeving die is opgegeven door het door GitHub gehoste runnertype dat u definieert, runs-on: {operating system-version}
. Met zelf-hostende runners moet u het zelf-hostende label, het besturingssysteem en de systeemarchitectuur toepassen. Een zelf-hostende runner met een Linux-besturingssysteem en ARM32-architectuur ziet er bijvoorbeeld als volgt uit: runs-on: [self-hosted, linux, ARM32]
Elk type runner heeft de voordelen, maar GitHub-gehoste runners bieden een snellere, eenvoudigere manier om uw werkstromen uit te voeren, zij het met beperkte opties. Zelf-hostende hardlopers zijn een zeer configureerbare manier om werkstromen uit te voeren in uw eigen aangepaste lokale omgeving. U kunt zelf-hostende hardlopers on-premises of in de cloud uitvoeren. U kunt ook zelf-hostende hardlopers gebruiken om een aangepaste hardwareconfiguratie te maken met meer verwerkingskracht of geheugen om grotere taken uit te voeren, software te installeren die beschikbaar is op uw lokale netwerk en een besturingssysteem te kiezen dat niet wordt aangeboden door door GitHub gehoste runners.
GitHub Actions kunnen gebruikslimieten hebben
GitHub Actions heeft een aantal gebruikslimieten, afhankelijk van uw GitHub-abonnement en of uw runner wordt gehost door GitHub of zelf-hostend is. Raadpleeg gebruikslimieten, facturering en beheer in de GitHub-documentatie voor meer informatie over gebruikslimieten.