Démarrage rapide : Créer un workflow GitHub pour publier une application

Dans ce guide de démarrage rapide, vous allez apprendre à créer un workflow GitHub pour publier votre application .NET à partir du code source. La publication automatique de votre application .NET à partir de GitHub vers une destination est appelée déploiement continu (CD). Il existe de nombreuses destinations possibles pour publier une application. Dans ce guide de démarrage rapide, vous allez publier sur Azure.

Prérequis

Ajouter un profil de publication

Pour publier l’application sur Azure, ouvrez le Portail Azure de l’instance App Service de l’application. Dans la Vue d’ensemble de la ressource, sélectionnez Obtenir le profil de publication et enregistrez le *. fichier PublishSetting localement.

Azure Portal, App Service resource: Get publish profile

Avertissement

Le profil de publication contient des informations sensibles, telles que des informations d’identification pour accéder à votre ressource Azure App Service. Ces informations doivent toujours être traitées avec précaution.

Dans le référentiel GitHub, accédez à Paramètres et sélectionnez Secrets dans le menu de navigation de gauche. Sélectionnez Nouveau secret de référentiel pour ajouter un nouveau secret.

GitHub / Settings / Secret: Add new repository secret

Entrez AZURE_PUBLISH_PROFILE comme Nom, puis collez le contenu XML du profil de publication dans la zone de texte Valeur. Sélectionnez Ajouter un secret. Pour plus d’informations, consultez « Secrets chiffrés ».

Créer un fichier de workflow

Dans le référentiel GitHub, ajoutez un nouveau fichier YAML au répertoire .github/workflows. Choisissez un nom de fichier explicite, qui indiquera clairement ce que le workflow est censé faire. Pour plus d’informations, consultez Fichier de flux de travail.

Important

GitHub exige que les fichiers de composition de flux de travail soient placés dans le répertoire .github/workflows .

Les fichiers de flux de travail définissent généralement une composition d’une ou plusieurs actions GitHub via jobs.<job_id>/steps[*]. Pour plus d’informations, consultez Syntaxe de workflow pour GitHub Actions.

Créez un nouveau fichier nommé publish-app.yml, copiez et collez-y le contenu YML suivant :

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

Dans la composition de workflow précédente :

  • Le name: publish définit le nom, « publier » s’affiche dans les badges d’état du workflow.

    name: publish
    
  • Le nœud on désigne les événements qui déclenchent le workflow :

    on:
      push:
        branches: [ production ]
    
    • Déclenchée lorsqu’un push se produit sur la branche production.
  • Le nœud env définit des variables d’environnement nommées (env var).

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • La variable d'environnement AZURE_WEBAPP_NAME est attribuée à la valeur DotNetWeb.
    • La variable d'environnement AZURE_WEBAPP_PACKAGE_PATH est attribuée à la valeur '.'.
    • La variable d'environnement DOTNET_VERSION est attribuée à la valeur '6.0.401'. La variable d’environnement est référencée ultérieurement pour spécifier le dotnet-version de l’action GitHub actions/setup-dotnet@v3.
  • Le nœud jobs génère les étapes à suivre pour le workflow.

    jobs:
      publish:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • Il existe un seul travail, nommé publish qui s’exécutera sur la dernière version d’Ubuntu.
    • L’action GitHub actions/setup-dotnet@v3 est utilisée pour configurer le SDK .NET avec la version spécifiée à partir de la variable d’environnement DOTNET_VERSION.
    • La commande dotnet restore est appelée.
    • La commande dotnet build est appelée.
    • La commande dotnet publish est appelée.
    • La commande dotnet test est appelée.
    • L’action GitHub azure/webapps-deploy@v2 déploie l’application avec les publish-profile et package donnés.
      • Le publish-profile est attribué à partir du secret du référentiel AZURE_PUBLISH_PROFILE.

Créer un badge d’état de workflow

Il est courant que les référentiels GitHub aient un fichier README.md à la racine du répertoire du référentiel. De même, il est agréable de signaler l’état le plus récent pour différents flux de travail. Tous les flux de travail peuvent générer un badge d’état, qui est visuellement attrayant dans le fichier README.md. Pour ajouter le badge d’état du flux de travail :

  1. Dans le référentiel GitHub, sélectionnez l’option de navigation Actions.

  2. Tous les flux de travail du référentiel s’affichent sur le côté gauche, sélectionnez le flux de travail souhaité et le bouton points de suspension (...).

    • Le bouton points de suspension (...) développe les options de menu pour le flux de travail sélectionné.
  3. Sélectionnez l’option de menu Créer un badge d’état.

    GitHub: Create status badge

  4. Sélectionnez le bouton Copier le Markdown du badge d’état.

    GitHub: Copy status badge Markdown

  5. Collez le Markdown dans le fichier README.md, enregistrez le fichier, validez et envoyez (push) les modifications.

Pour plus d’informations, consultez Ajouter un badge d’état de workflow.

Exemple de badge d’état de workflow de publication

Passage Échec de Aucun état
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

Voir aussi

Étapes suivantes