GitHub Actions och .NET
I den här översikten får du lära dig vilken roll GitHub Actions spela i .NET-programutveckling. Med GitHub Actions kan dina lagringsplatser för källkod automatisera kontinuerlig integrering (CI) och kontinuerlig leverans (CD). Utöver detta tillhandahåller GitHub Actions mer avancerade scenarier – med krokar för automatisering vid kodgranskningar, grenhantering och problemlösning. Med din .NET-källkod i GitHub kan du använda GitHub Actions på många sätt.
GitHub Actions
GitHub Actions representerar fristående kommandon, till exempel:
-
åtgärder/utcheckning – Den här åtgärden checkar ut ditt arkiv i
$GITHUB_WORKSPACE
, så att ditt arbetsflöde kan komma åt det. - actions/setup-dotnet – Den här åtgärden konfigurerar en .NET CLI-miljö för användning i åtgärder.
- dotnet/versionsweeper – Den här åtgärden sveper .NET-arkiv för .NET-målversioner som inte längre stöds.
Även om dessa kommandon är isolerade till en enda åtgärd är de kraftfulla genom arbetsflödessammansättning. I arbetsflödets sammansättning definierar du de händelser som utlöser arbetsflödet. När ett arbetsflöde körs finns det olika uppgifter det instrueras att utföra. Varje jobb definierar valfritt antal steg. De stegen delegerar till GitHub Actions eller anropar kommandoradsskript.
Mer information finns i Introduktion till GitHub Actions. Tänk på en arbetsflödesfil som en sammansättning som representerar de olika stegen för att skapa, testa och/eller publicera ett program. Många .NET CLI-kommandon är tillgängliga, varav de flesta kan användas i kontexten för en GitHub-åtgärd.
Anpassade GitHub Actions
Det finns gott om GitHub Actions på Marketplace-, men du kanske vill skapa egna. Du kan skapa GitHub Actions som kör .NET-program. Mer information finns i Självstudie: Skapa en GitHub-åtgärd med .NET
Arbetsflödesfil
GitHub Actions används via en arbetsflödesfil. Arbetsflödesfilen måste finnas i .github/workflows-katalogen på lagringsplatsen och förväntas vara YAML (antingen *.yml eller *.yaml). Arbetsflödesfiler definierar arbetsflödessammansättning. Ett arbetsflöde är en konfigurerbar automatiserad process som består av ett eller flera jobb. Mer information finns i Arbetsflödessyntax för GitHub Actions.
Exempel på arbetsflödesfiler
Det finns många exempel på .NET-arbetsflödesfiler som tillhandahålls som självstudier och snabbstartsguider. Här är flera bra exempel på namn på arbetsflödesfiler:
arbetsflödesfilnamn
Beskrivning
Kompilerar (eller bygger) källkoden. Om källkoden inte kompileras misslyckas detta.
Utför enhetstesterna på lagringsplatsen. För att kunna köra tester måste källkoden först kompileras – det här är egentligen både ett bygg- och testarbetsflöde (det skulle ersätta build-validation.yml arbetsflödet). Misslyckade enhetstester orsakar arbetsflödesfel.
Paketerar och publicerar källkoden till en destination.
Analyserar koden efter säkerhetsrisker och kodfel. Eventuella identifierade sårbarheter kan orsaka fel.
Krypterade hemligheter
Om du vill använda krypterade hemligheter i dina arbetsflödesfiler, refererar du till hemligheterna med syntaxen för arbetsflödesuttryck från kontextobjektet secrets
.
${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret
Hemliga värden skrivs aldrig ut i loggarna. I stället skrivs deras namn ut med en asterisk som representerar deras värden. Till exempel, när varje steg körs inom ett jobb, skrivs alla värden som används ut i loggen. Hemliga värden visas ungefär så här:
MY_SECRET_VALUE: ***
Viktig
Den secrets
kontexten innehåller GitHub-autentiseringstoken som är begränsad till lagringsplatsen, grenen och åtgärden. Den tillhandahålls av GitHub utan någon användarintervention:
${{ secrets.GITHUB_TOKEN }}
Mer information finns i Använda krypterade hemligheter i ett arbetsflöde.
Evenemang
Arbetsflöden utlöses av många olika typer av händelser. Förutom Webhook-händelser, som är de vanligaste, finns det även schemalagda händelser och manuella händelser.
Exempel på webhook-händelse
I följande exempel visas hur du anger en webhook-händelseutlösare för ett arbetsflöde:
name: code coverage
on:
push:
branches:
- main
pull_request:
branches:
- main, staging
jobs:
coverage:
runs-on: ubuntu-latest
# steps omitted for brevity
I föregående arbetsflöde utlöser push
- och pull_request
-händelserna arbetsflödet att köras.
Exempel på schemalagd händelse
I följande exempel visas hur du anger en schemalagd händelseutlösare (cron-jobb) för ett arbetsflöde:
name: scan
on:
schedule:
- cron: '0 0 1 * *'
# additional events omitted for brevity
jobs:
build:
runs-on: ubuntu-latest
# steps omitted for brevity
I föregående arbetsflöde anger händelsen schedule
cron
för '0 0 1 * *'
som får arbetsflödet att köras den första varje månad. Att köra arbetsflöden enligt ett schema är bra för arbetsflöden som tar lång tid att köra eller utföra åtgärder som kräver mindre frekvent uppmärksamhet.
Exempel på manuell händelse
I följande exempel visas hur du anger en manuell händelseutlösare för ett arbetsflöde:
name: build
on:
workflow_dispatch:
inputs:
reason:
description: 'The reason for running the workflow'
required: true
default: 'Manual run'
# additional events omitted for brevity
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 'Print manual run reason'
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo 'Reason: ${{ github.event.inputs.reason }}'
# additional steps omitted for brevity
I föregående arbetsflöde kräver händelsen workflow_dispatch
en reason
som indata. GitHub ser detta och dess användargränssnitt ändras dynamiskt för att uppmana användaren att ange orsaken till att arbetsflödet körs manuellt. Funktionen steps
skriver ut användarens angivna orsak.
Mer information finns i händelser som utlöser arbetsflöden.
.NET CLI
.NET-kommandoradsgränssnittet (CLI) är en plattformsoberoende verktygskedja för att utveckla, skapa, köra och publicera .NET-program. .NET CLI används för att run
som en del av specifika steps
i en arbetsflödesfil. Vanliga kommandon är:
Mer information finns i .NET CLI-översikt
Se även
Om du vill ha en mer djupgående titt på GitHub Actions med .NET bör du överväga följande resurser: