GitHub Actions en .NET

In dit overzicht leert u welke rol GitHub Actions speelt in .NET-toepassingsontwikkeling. Met GitHub Actions kunnen uw broncodeopslagplaatsen continue integratie (CI) en continue levering (CD) automatiseren. Bovendien maken GitHub Actions meer geavanceerde scenario's beschikbaar, waarmee hooks voor automatisering worden geboden met codebeoordelingen, vertakkingsbeheer en probleem-triaging. Met uw .NET-broncode in GitHub kunt u gitHub Actions op veel manieren gebruiken.

GitHub Actions

GitHub Actions vertegenwoordigen zelfstandige opdrachten, zoals:

Hoewel deze opdrachten zijn geïsoleerd tot één actie, zijn ze krachtig via werkstroomsamenstelling. In werkstroomsamenstelling definieert u de gebeurtenissen die de werkstroom activeren. Zodra een werkstroom wordt uitgevoerd, zijn er verschillende taken die moeten worden uitgevoerd. Elke taak definieert een willekeurig aantal stappen. De stappen delegeren naar GitHub Actions of roepen opdrachtregelscripts aan.

Zie Inleiding tot GitHub Actions voor meer informatie. U kunt een werkstroombestand beschouwen als een samenstelling die de verschillende stappen vertegenwoordigt voor het bouwen, testen en/of publiceren van een toepassing. Veel .NET CLI-opdrachten zijn beschikbaar, waarvan de meeste kunnen worden gebruikt in de context van een GitHub Action.

Aangepaste GitHub Actions

Hoewel er veel GitHub Actions beschikbaar zijn in Marketplace, wilt u mogelijk uw eigen acties ontwerpen. U kunt GitHub Actions maken waarop .NET-toepassingen worden uitgevoerd. Zie Zelfstudie: Een GitHub-actie maken met .NET voor meer informatie

Werkstroombestand

GitHub Actions worden gebruikt via een werkstroombestand. Het werkstroombestand moet zich in de map .github/workflows van de opslagplaats bevinden en is naar verwachting YAML ( *.yml of *.yaml). Werkstroombestanden definiëren de werkstroomsamenstelling. Een werkstroom is een configureerbaar geautomatiseerd proces dat bestaat uit een of meer taken. Zie Werkstroomsyntaxis voor GitHub Actions voor meer informatie.

Voorbeeldwerkstroombestanden

Er zijn veel voorbeelden van .NET-werkstroombestanden die worden aangeboden als zelfstudies en quickstarts. Hier volgen enkele goede voorbeelden van namen van werkstroombestanden:

Naam van werkstroombestand

Beschrijving

Compileert (of bouwt) de broncode. Als de broncode niet wordt gecompileerd, mislukt dit.

Oefent de eenheidstests in de opslagplaats. Als u tests wilt uitvoeren, moet de broncode eerst worden gecompileerd. Dit is eigenlijk zowel een build- als testwerkstroom (deze vervangt de build-validation.yml werkstroom). Mislukte eenheidstests veroorzaken een werkstroomfout.

Pakketten en publiceert de broncode naar een bestemming.

Analyseert uw code voor beveiligingsproblemen en coderingsfouten. Eventuele gedetecteerde beveiligingsproblemen kunnen fouten veroorzaken.

Versleutelde geheimen

Als u versleutelde geheimen in uw werkstroombestanden wilt gebruiken, verwijst u naar de geheimen met behulp van de syntaxis van de werkstroomexpressie vanuit het secrets contextobject.

${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret

Geheime waarden worden nooit afgedrukt in de logboeken. In plaats daarvan worden hun namen afgedrukt met een sterretje dat hun waarden vertegenwoordigt. Als elke stap bijvoorbeeld binnen een taak wordt uitgevoerd, worden alle waarden die worden gebruikt, uitgevoerd in het actielogboek. Geheime waarden worden ongeveer als volgt weergegeven:

MY_SECRET_VALUE: ***

Belangrijk

De secrets context biedt het GitHub-verificatietoken dat is gericht op de opslagplaats, vertakking en actie. Het wordt geleverd door GitHub zonder tussenkomst van de gebruiker:

${{ secrets.GITHUB_TOKEN }}

Zie Versleutelde geheimen gebruiken in een werkstroom voor meer informatie.

gebeurtenis

Werkstromen worden geactiveerd door veel verschillende typen gebeurtenissen. Naast Webhook-gebeurtenissen, die het meest voorkomen, zijn er ook geplande gebeurtenissen en handmatige gebeurtenissen.

Voorbeeld van een webhook-gebeurtenis

In het volgende voorbeeld ziet u hoe u een webhook-gebeurtenistrigger voor een werkstroom opgeeft:

name: code coverage

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main, staging

jobs:
  coverage:

    runs-on: ubuntu-latest

    # steps omitted for brevity

In de voorgaande werkstroom activeren de push en pull_request gebeurtenissen de werkstroom om uit te voeren.

Voorbeeld van geplande gebeurtenis

In het volgende voorbeeld ziet u hoe u een geplande gebeurtenistrigger (cron-taak) voor een werkstroom opgeeft:

name: scan
on:
  schedule:
  - cron: '0 0 1 * *'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    # steps omitted for brevity

In de voorgaande werkstroom geeft de schedule gebeurtenis aan cron'0 0 1 * *' welke de werkstroom op de eerste dag van elke maand wordt uitgevoerd. Het uitvoeren van werkstromen volgens een planning is ideaal voor werkstromen die lang duren voordat ze worden uitgevoerd of acties uitvoeren waarvoor minder frequente aandacht is vereist.

Voorbeeld van handmatige gebeurtenis

In het volgende voorbeeld ziet u hoe u een handmatige gebeurtenistrigger voor een werkstroom opgeeft:

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

In de voorgaande werkstroom vereist de workflow_dispatch gebeurtenis een reason als invoer. GitHub ziet dit en de gebruikersinterface dynamisch worden gewijzigd om de gebruiker te vragen om de reden voor het handmatig uitvoeren van de werkstroom. De steps opgegeven reden wordt van de gebruiker afgedrukt.

Zie Gebeurtenissen die werkstromen activeren voor meer informatie.

.NET CLI

De .NET-opdrachtregelinterface (CLI) is een platformoverschrijdende hulpprogrammaketen voor het ontwikkelen, bouwen, uitvoeren en publiceren van .NET-toepassingen. De .NET CLI wordt gebruikt run als onderdeel van een individu steps in een werkstroombestand. Algemene opdracht zijn onder andere:

Zie het overzicht van .NET CLI voor meer informatie

Zie ook

Bekijk de volgende bronnen voor een uitgebreider overzicht van GitHub Actions met .NET: