Dela via


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 schedulecron 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: