Exercice - Déployer un fichier Bicep à partir de workflows GitHub

Effectué

GitHub Actions est similaire à Azure Pipelines par nature. Ils permettent d’automatiser le développement et les déploiements de logiciels. Dans cet exercice, vous allez apprendre à déployer un fichier Bicep à l’aide d’une action GitHub.

Conditions préalables

  • Vous aurez besoin d’un compte GitHub que vous pouvez créer gratuitement ici.
  • Un dépôt GitHub est également nécessaire pour stocker votre fichier Bicep et vos flux de travail créés précédemment dans l’exercice - Créer des modèles Bicep. Une fois que vous avez créé votre dépôt GitHub , envoyez le fichier Bicep dans celui-ci.
  • Pour le déploiement sur Azure, l’accès à un abonnement Azure est nécessaire, ce qui peut être créé gratuitement ici.

Création d’un principal de service dans Azure

Pour déployer vos ressources sur Azure, vous devez créer un principal de service que GitHub peut utiliser. Ouvrez un terminal ou utilisez Cloud Shell dans le portail Azure et tapez les commandes suivantes :

az login
az ad sp create-for-rbac --name myApp --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/Bicep --sdk-auth

Remarque

N’oubliez pas de remplacer le {subscription-id} par votre véritable ID d’abonnement.

Présentation de la commande

  • az ad sp create-for-rbac : Crée un principal de service pour le contrôle d’accès en fonction du rôle.
  • --nom: Nom du principal de service.
  • --rôle: Attribue le contributor rôle, ce qui permet une gestion complète des ressources.
  • --Étendues: Limite l’accès à un groupe de ressources spécifique.
  • --sdk-auth : Génère des informations d’identification dans un format adapté à l’authentification du Kit de développement logiciel (SDK).

Lorsque l’opération réussit, elle doit générer un objet JSON qui contient vos tenantIdpropriétés , , subscriptionIdclientId, clientSecretet quelques propriétés supplémentaires, telles que les suivantes :

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
}

Notez cet objet, car vous devez l’ajouter à vos secrets GitHub .

Création d’un secret GitHub

Dans votre dépôt GitHub , accédez à Paramètres>Secrets>Actions. Créez un secret appelé AZURE_CREDENTIALS et collez l’intégralité de l’objet JSON obtenu à l’étape précédente.

Créez un autre secret pour le nom du groupe de ressources avec un nom tel que AZURE_RG celui de l’ID d’abonnement nommé AZURE_SUBSCRIPTION.

Capture d’écran de la page de création et de gestion des secrets GitHub.

Pourquoi utiliser des secrets ?

Les secrets de GitHub permettent de stocker des informations sensibles en toute sécurité. Elles sont les suivantes :

  • Crypté: Stocké en toute sécurité dans GitHub.
  • Non visible dans les journaux : Masqué dans les journaux d’exécution du flux de travail.
  • Accessible dans les flux de travail : Disponible en tant que variables d’environnement pendant l’exécution du flux de travail.

Création d’une action GitHub

Créer un flux de travail

  1. Tout d’abord, accédez à votre référentiel et sélectionnez le menu Actions . Ensuite, configurez un workflow pour créer un workflow vide dans votre dépôt. Vous pouvez renommer le fichier si vous le souhaitez.

    Capture d’écran de la création, de la modification et de la prévisualisation d’un fichier.

Définir le flux de travail

  1. Remplacez le contenu du fichier par l’extrait de code suivant :

    on: [push]
    name: Azure Resource Manager
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
          # Checkout code
          - uses: actions/checkout@main
    
            # Log into Azure
          - uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
            # Deploy Bicep file
          - name: deploy
            uses: azure/arm-deploy@v1
            with:
              subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
              resourceGroupName: ${{ secrets.AZURE_RG }}
              template: ./main.bicep
              parameters: storagePrefix=stg
              failOnStdErr: false
    

    N’hésitez pas à remplacer la valeur de storagePrefix paramètre par la vôtre.

Présentation du flux de travail

Ce flux de travail GitHub Action effectue les opérations suivantes :

  • Déclencheur: S’exécute automatiquement lorsque le code est envoyé au dépôt (on: [push]).

  • Travail: Définit un travail nommé build-and-deploy qui s’exécute sur un exécuteur Ubuntu .

  • Steps:

    • Code de validation : Utilise actions/checkout@main pour valider le code du dépôt.
    • Connectez-vous à Azure : Utilise azure/login@v1 pour s’authentifier auprès d’Azure à l’aide du AZURE_CREDENTIALS secret.
    • Déployer le fichier Bicep : Utilise azure/arm-deploy@v1 pour déployer le modèle Bicep :
      • subscriptionId : ID d’abonnement Azure à partir de secrets.
      • resourceGroupName: nom du groupe de ressources à partir de secrets.
      • template: chemin d’accès au fichier Bicep .
      • parameters: paramètres passés au modèle Bicep .
      • failOnStdErr: défini sur false à ne pas échouer sur la sortie d’erreur standard.

    Remarque

    La première partie du flux de travail définit le déclencheur et son nom. Le reste définit un travail et utilise quelques tâches pour extraire le code, se connecter à Azure et déployer le fichier Bicep .

Commiter le workflow

  1. Sélectionnez Démarrer le commit, puis entrez un titre et une description dans la boîte de dialogue contextuelle. Sélectionnez ensuite Valider directement dans la branche principale, puis Valider le nouveau fichier.

    Capture d’écran de GitHub qui commite un nouveau fichier dans la branche main.

Surveiller le flux de travail

  1. Accédez à l’onglet Actions et sélectionnez l’action nouvellement créée qui doit être en cours d’exécution.

    Capture d’écran de l’exécution et du déploiement d’une action GitHub.

Vérifier le déploiement

  1. Surveillez l’état et lorsque le travail est terminé, vérifiez le portail Azure pour voir si le compte de stockage a été créé.

    Capture d’écran du travail réussi d’une action GitHub.