Déployer des modèles ARM à l’aide de GitHub Actions

GitHub Actions est une suite de fonctionnalités dans GitHub permettant d’automatiser vos workflows de développement logiciel dans le même emplacement que celui où vous stockez le code et collaborez sur les demandes de tirage (pull requests) et les problèmes.

Utilisez l’action Déployer un modèle Azure Resource Manager pour automatiser le déploiement d’un modèle Azure Resource Manager (modèle ARM) sur Azure.

Prérequis

Vue d’ensemble du fichier de workflow

Un workflow est défini par un fichier YAML (.yml) situé dans le chemin /.github/workflows/ de votre dépôt. Cette définition contient les étapes et les paramètres qui composent le workflow.

Le fichier comporte deux sections :

Section Tâches
Authentification 1. Générer les informations d’identification du déploiement.
Déployer 1. Déployez le modèle Resource Manager.

Générer les informations d’identification du déploiement

Créez un principal de service à l’aide de la commande az ad sp create-for-rbac dans Azure CLI. Exécutez cette commande en utilisant Azure Cloud Shell dans le portail Azure ou en sélectionnant le bouton Essayer.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Le paramètre --json-auth est disponible dans les versions d’Azure CLI >= 2.51.0. Les versions antérieures à celle-ci utilisent --sdk-auth avec un avertissement de dépréciation.

Dans l’exemple ci-dessus, remplacez les espaces réservés par votre ID d’abonnement, le nom de votre groupe de ressources et le nom de votre application. La sortie correspond à un objet JSON avec les informations d’identification de l’attribution de rôle qui fournit l’accès à votre application App Service, similaire à ce qui suit. Copiez cet objet JSON pour une version ultérieure.

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

Configurer les secrets GitHub

  1. Dans GitHub, accédez à votre dépôt.

  2. Sélectionnez Paramètres dans le volet de navigation.

  3. Sélectionnez Sécurité > Secrets et variables > Actions.

    Capture d’écran de l’ajout d’un secret

  4. Sélectionnez New repository secret (Nouveau secret de dépôt).

  5. Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret AZURE_CREDENTIALS.

  6. Sélectionnez Ajouter un secret.

Ajouter un modèle Resource Manager

Ajoutez un modèle Resource Manager à votre référentiel GitHub. Ce modèle crée un compte de stockage.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Vous pouvez placer le fichier n’importe où dans le référentiel. L’exemple de workflow dans la section suivante suppose que le fichier de modèle est nommé azuredeploy.json et qu’il est stocké à la racine de votre référentiel.

Créer un workflow

Le fichier de workflow doit être stocké dans le dossier .github/workflows à la racine de votre référentiel. L’extension du fichier de workflow peut être .yml ou .yaml.

  1. À partir de votre référentiel GitHub, sélectionnez Actions dans le menu supérieur.
  2. Sélectionnez Nouveau workflow.
  3. Sélectionnez Configurer vous-même un workflow.
  4. Renommez le fichier de workflow si vous préférez utiliser un autre nom que main.yml. Par exemple : deployStorageAccount.yml.
  5. Remplacez le contenu du fichier yml par ce qui suit :
  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 ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

Notes

À la place, vous pouvez spécifier un fichier de paramètres au format JSON dans l’action de déploiement ARM (exemple : .azuredeploy.parameters.json).

La première section du fichier de workflow comprend les éléments suivants :

  • nom : Nom du workflow.
  • on : nom des événements GitHub qui déclenchent le workflow. Le workflow est déclenché quand il y a un événement push sur la branche primaire, qui modifie au moins l’un des deux fichiers spécifiés. Les deux fichiers sont le fichier de workflow et le modèle de fichier.
  1. Sélectionnez Démarrer la validation.
  2. Sélectionnez Valider directement sur la branche primaire.
  3. Sélectionnez Valider un nouveau fichier (ou Valider les modifications).

Étant donné que le workflow est configuré pour être déclenché par le fichier de workflow ou le modèle de fichier mis à jour, le workflow démarre juste après la validation des modifications.

Vérifier l’état du workflow

  1. Sélectionnez l’onglet Actions. Un flux de travail Create deployStorageAccount.yml est répertorié. L’exécution du workflow prend 1 à 2 minutes.
  2. Sélectionnez le workflow pour l’ouvrir.
  3. Sélectionnez Exécuter le déploiement ARM dans le menu pour vérifier le déploiement.

Nettoyer les ressources

Lorsque votre groupe de ressource et référentiel ne sont plus nécessaires, nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources et votre référentiel GitHub.

Étapes suivantes