Démarrage rapide : Déployer des fichiers Bicep à l’aide de GitHub Actions

GitHub Actions est une suite de fonctionnalités dans GitHub permettant d’automatiser vos flux de travail de développement logiciel. Dans ce guide de démarrage rapide, vous utiliserez GitHub Actions pour le déploiement Azure Resource Manager afin d’automatiser le déploiement d’un fichier Bicep sur Azure.

Vous y trouverez également une brève présentation des actions GitHub pour les fichiers Bicep. Pour plus d’informations sur la configuration des actions de GitHub et du projet, consultez Déployer des ressources Azure à l’aide de Bicep et de GitHub Actions.

Prérequis

Créer un groupe de ressources

Créez un groupe de ressources. Plus tard dans ce démarrage rapide, vous allez déployer votre fichier Bicep dans ce groupe de ressources.

az group create -n exampleRG -l westus

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

Vos GitHub Actions s’exécutent sous une identité. Utilisez az ad sp create-for-rbac pour créer un principal de service pour l’identité. Accordez au principal de service le rôle Contributeur du groupe de ressources créé dans la session précédente afin que l’action GitHub avec l’identité puisse créer des ressources dans ce groupe de ressources. Recommandation : accordez l’accès minimal requis.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Remplacez l’espace réservé {app-name} par le nom de votre application. Remplacez {subscription-id} par votre ID d’abonnement.

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.

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

Copiez cet objet JSON pour une version ultérieure. Vous n’aurez besoin que des sections avec les valeurs clientId, clientSecret, subscriptionId et tenantId. Assurez-vous que vous n’avez pas de virgule supplémentaire à la fin de la dernière ligne, par exemple, la ligne tenantId de l’exemple précédent, car cela génère un fichier JSON non valide. Cela générera une erreur lors du déploiement indiquant « Échec de la connexion avec erreur : le contenu n’est pas un objet JSON valide. Vérifiez si le « auth-type » est correct. »

Configurer les secrets GitHub

Créez des secrets pour vos informations d’identification, votre groupe de ressources et vos abonnements Azure. Vous utiliserez ces secrets dans la section Créer un flux de travail.

  1. Dans GitHub, accédez à votre référentiel.

  2. Sélectionnez Paramètres > Secrets et variables > Actions > Nouveau secret de référentiel.

  3. 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.

  4. Créez un autre secret nommé AZURE_RG. Ajoutez le nom de votre groupe de ressources au champ de valeur du secret (exampleRG).

  5. Créez un autre secret nommé AZURE_SUBSCRIPTION. Ajoutez votre ID d’abonnement au champ de valeur du secret (exemple : 90fd3f9d-4c61-432d-99ba-1273f236afa2).

Ajouter un fichier Bicep

Ajoutez un fichier Bicep à votre référentiel GitHub. Le fichier Bicep suivant crée un compte de stockage :

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Le fichier Bicep requiert un paramètre appelé storagePrefix avec 3 à 11 caractères.

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é main.bicep et qu’il est stocké à la racine de votre dépôt.

Créer un workflow

Un flux de travail définit les étapes à exécuter lors du déclenchement. Il s’agit d’un fichier YAML (.yml) dans le chemin d’accès .github/workflows/ de votre référentiel. L’extension du fichier de workflow peut être .yml ou .yaml.

Pour créer un flux de travail, vous pouvez suivre les étapes suivantes :

  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 : deployBicepFile.yml.

  5. Remplacez le contenu du fichier yml par le code suivant :

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

    Remplacez mystore par votre propre préfixe de nom de compte de stockage.

    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 flux de travail est déclenché lorsqu’un événement push se trouve sur la branche principale.
  6. Sélectionnez Valider les modifications.

  7. Sélectionnez Valider directement sur la branche primaire.

  8. Sélectionnez Valider un nouveau fichier (ou Valider les modifications).

La mise à jour du fichier de flux de travail ou du fichier bicep déclenche le flux de travail. Le flux de travail démarre juste après la validation des modifications.

Vérifier l’état du workflow

  1. Sélectionnez l’onglet Actions. Vous y verrez un flux de travail Créer deployBicepFile.yml. L’exécution du workflow prend 1 à 2 minutes.
  2. Sélectionnez le flux de travail pour l’ouvrir, puis vérifiez que Status a la valeur Success.

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.

az group delete --name exampleRG

Étapes suivantes