GitHub Actions och .NET

I den här översikten får du lära dig vilken roll GitHub Actions spelar i .NET-programutveckling. Med GitHub Actions kan dina lagringsplatser för källkod automatisera kontinuerlig integrering (CI) och kontinuerlig leverans (CD). Utöver detta exponerar GitHub Actions mer avancerade scenarier – tillhandahålla krokar för automatisering med kodgranskningar, grenhantering och problemtriaging. 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:

  • actions/checkout – Den här åtgärden checkar ut lagringsplatsen under $GITHUB_WORKSPACE, så att arbetsflödet kan komma åt den.
  • 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-lagringsplatser för målversioner av .NET som inte stöds.

Även om dessa kommandon är isolerade till en enda åtgärd är de kraftfulla genom arbetsflödessammansättning. I arbetsflödessammansättning definierar du de händelser som utlöser arbetsflödet. När ett arbetsflöde körs finns det olika jobb som det instrueras att utföra. Varje jobb definierar valfritt antal steg. Stegen delegerar ut 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 katalogen .github/workflows på lagringsplatsen och förväntas vara YAML (antingen *.yml eller *.yaml). Arbetsflödesfiler definierar arbetsflödets sammansä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 snabbstarter. Här är flera bra exempel på namn på arbetsflödesfiler:

Namn på arbetsflödesfil

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 ett mål.

Analyserar koden efter säkerhetsrisker och kodfel. Eventuella identifierade sårbarheter kan orsaka fel.

Krypterade hemligheter

Om du vill använda krypterade hemligheter i arbetsflödesfilerna refererar du till hemligheterna med hjälp av 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. När varje steg till exempel körs i ett jobb är alla värden som används utdata till åtgärdsloggen. Hemliga värden återges ungefär så här:

MY_SECRET_VALUE: ***

Viktigt!

Kontexten secrets tillhandahå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.

Händelser

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 push utlöser händelserna och pull_request 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 schedule anger händelsen vars cron'0 0 1 * *' utlösare arbetsflödet ska köras den första dagen i 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. Skriver steps ut den angivna orsaken från användaren.

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 som run en del av enskilda 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: