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

Effectué

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

Prérequis

  • 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 et vos flux de travail Bicep créés précédemment dans Exercice - Créer des modèles Bicep. Une fois que vous avez créé votre dépôt GitHub, poussez (push) le fichier Bicep dans celui-ci.
  • Pour le déploiement sur Azure, vous devez avoir accès à un abonnement Azure que vous pouvez créer 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

Notes

N’oubliez pas de remplacer l’ID d’abonnement par le vôtre.

Au terme de l’opération, vous devriez disposer d’un objet JSON contenant les propriétés tenantId, subscriptionId, clientId, clientSecret et quelques autres comme les suivantes.

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

Notez cet objet, car vous devrez 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 et un pour l’abonnement.

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

Création d’une action GitHub

  1. Tout d’abord, accédez à votre dépôt 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.

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

    on: [push]
    name: Azure ARM
    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 le préfixe du compte de stockage par le vôtre.

    Notes

    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.

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

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

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

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

  5. Surveillez l’état. Une fois le travail terminé, vérifiez le portail Azure pour voir si le compte de stockage est en cours de création.

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