Utiliser l’action de déploiement d’application web Azure avec Azure Stack Hub

Vous pouvez configurer la fonctionnalité GitHub Actions pour déployer une application web sur votre instance Azure Stack Hub. Cela vous permet de configurer l’intégration et le déploiement continus pour votre application. Cet article vous aide à devenir opérationnel avec le déploiement automatisé à l’aide de la fonctionnalité GitHub Actions et d’Azure Stack Hub. Vous allez créer une application web et utiliser le profil de publication pour créer l’application web destinée à héberger votre application.

La fonctionnalité GitHub Actions correspond à des workflows composés d’actions qui permettent une automatisation directe dans votre dépôt de code. Vous pouvez déclencher les workflows avec des événements dans votre processus de développement GitHub. Vous pouvez définir des tâches d’automatisation DevOps courantes, comme le test, le déploiement et l’intégration continue.

Cet exemple de workflow comprend des instructions pour :

  • La création et la validation de votre principal de service
  • La création de votre profil de publication d’application web
  • Ajout d’un flux de travail spécifique du runtime
  • Ajout d’un flux de travail correspondant avec un déploiement d’application web

Créer un principal du service

Un principal de service peut utiliser le contrôle d’accès en fonction du rôle (RBAC) pour se connecter aux ressources et interagir avec elles. Vous allez avoir besoin d’un principal de service avec un accès Contributeur et des attributs spécifiés dans ces instructions à utiliser avec votre fonctionnalité GitHub Actions.

Important

Si vous êtes développeur ou utilisateur Azure Stack Hub, vous n’êtes pas autorisé à créer un principal de service. Vous devez disposer de privilèges d’opérateur cloud ou demander ce principal à votre opérateur cloud en utilisant les instructions de cette section.

Les extraits de code suivants sont écrits pour une machine Windows en utilisant l’invite PowerShell avec Azure CLI. Si vous utilisez l’interface de ligne de commande sur une machine Linux et bash, supprimez la rallonge de ligne ou remplacez-la par le signe \.

  1. Préparez les valeurs des paramètres suivants utilisés pour créer le principal de service :

    Paramètre Exemple Description
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Point de terminaison de gestion des ressources.
    suffix-storage-endpoint « orlando.azurestack.corp.microsoft.com » Suffixe de point de terminaison pour les comptes de stockage.
    suffix-keyvault-dns « .vault.orlando.azurestack.corp.microsoft.com » Suffixe DNS du service Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" L’ID de ressource Active Directory.
    endpoint-sql-management https://notsupported Point de terminaison de gestion SQL Server. À définir avec la valeur https://notsupported
    profile 2020-09-01-hybrid Profil à utiliser pour ce cloud.
  2. Ouvrez votre outil en ligne de commande, comme Windows PowerShell ou Bash. Connectez-vous à Azure CLI en utilisant la commande suivante :

    az login
    
  3. Utilisez la commande register pour un nouvel environnement ou la commande update si vous utilisez un environnement existant. Utilisez la commande suivante.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2020-09-01-hybrid
    
  4. Obtenez l’ID d’abonnement et le groupe de ressources que vous voulez utiliser pour le principal de service.

  5. Créez le principal de service en utilisant la commande suivante avec l’ID d’abonnement et le groupe de ressources :

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Copiez l’objet JSON résultant. Vous allez utiliser l’objet JSON pour créer votre secret dans votre dépôt GitHub contenant votre action. L’objet JSON doit avoir les attributs suivants :

    {
      "clientId": <Application ID for the service principal>,
      "clientSecret": <Client secret for the service principal>,
      "subscriptionId": <Subscription ID for the service principal>,
      "tenantId": <Tenant ID for the service principal>,
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/",
      "resourceManagerEndpointUrl": "https://management.<FQDN>",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://notsupported",
      "galleryEndpointUrl": "https://providers.<FQDN>:30016/",
      "managementEndpointUrl": "https://management.<FQDN>"
    }
    

Créer le profil de publication d’application web

Ouvrir le panneau de création d’application web

  1. Connectez-vous au portail Azure Stack Hub.
  2. Sélectionnez Créer une ressource>Web + Mobile>Application web. Créer une application web dans Azure Stack Hub

Pour créer votre application web

  1. Sélectionnez votre abonnement.
  2. Créez ou sélectionnez un Groupe de ressources.
  3. Tapez le Nom de votre application. Le nom de l’application s’affiche dans l’URL de votre application, par exemple, yourappname.appservice.<region>.<FQDN>.
  4. Sélectionnez la pile d’exécution pour votre application. Le runtime doit correspondre au flux de travail que vous utilisez pour cibler votre profil de publication.
  5. Sélectionnez le Système d’exploitation (SE) qui hébergera votre runtime et votre application.
  6. Sélectionnez ou tapez la Région de votre instance Azure Stack Hub.
  7. Sélectionnez le plan en fonction de votre instance Azure Stack Hub, de la région et du système d’exploitation de l’application.
  8. Sélectionnez Vérifier + créer.
  9. Examinez votre application web. Sélectionnez Create (Créer). Vérifier une application web Azure Stack Hub
  10. Sélectionnez Accéder à la ressource. Obtenir un profil de publication dans Azure Stack Hub
  11. Sélectionnez Obtenir le profil de publication. Votre profil de publication est téléchargé et nommé <yourappname>.PublishSettings . Le fichier contient un code XML avec les valeurs cibles de votre application web.
  12. Stockez votre profil de publication afin de pouvoir y accéder lorsque vous créez les secrets pour votre dépôt.

Ajouter vos secrets au dépôt

Vous pouvez utiliser des secrets GitHub pour chiffrer les informations sensibles à utiliser dans vos actions. Vous allez créer un secret pour y placer votre principal de service et un autre secret pour y placer votre profil de publication d’application web. L’action les utilise pour se connecter à votre instance Azure Stack Hub et créer votre application sur la cible de l’application web.

  1. Ouvrez ou créez un dépôt GitHub. Si vous avez besoin d’aide pour créer un dépôt dans GitHub, vous trouverez des instructions dans la documentation de GitHub.
  2. Sélectionnez Paramètres.
  3. Sélectionnez Secrets.
  4. Sélectionnez New repository secret (Nouveau secret de dépôt). Ajoutez votre secret GitHub Actions
  5. Nommez votre secret AZURE_CREDENTIALS.
  6. Collez l’objet JSON qui représente votre principal de service.
  7. Sélectionnez Ajouter un secret.
  8. Sélectionnez New repository secret (Nouveau secret de dépôt).
  9. Nommez votre secret AZURE_WEBAPP_PUBLISH_PROFILE.
  10. Ouvrez votre <yourappname>.PublishSettings dans un éditeur de texte, puis copiez et collez le code XML dans le secret du dépôt.
  11. Sélectionnez Ajouter un secret.

Ajouter un flux de travail de runtime

  1. Choisissez un modèle dans la table pour le runtime de votre application web.

    Runtime Modèle
    DotNet dotnet.yml
    NodeJS node.yml
    Java java_jar.yml
    Java java_war.yml
    Python python.yml
    PHP php.yml
    Docker docker.yml
  2. Placez le modèle de répertoire de workflow GitHub Actions dans le dépôt de votre projet : .github/workflows/<runtime.yml> Votre répertoire de workflow contient deux workflows.

Ajouter l’action de déploiement d’application web

Créez un deuxième flux de travail en utilisant le code YAML figurant dans cette section. Dans cet exemple, vous déployez une application web Python. Vous devez sélectionner une action de configuration en fonction de votre flux de travail. Vous pouvez trouver des références pour configurer des actions pour différents runtimes dans le tableau Actions d’installation pour différents runtimes après les étapes utilisées pour créer l’action.

Exemple de workflow GitHub Actions

  1. Ouvrez votre dépôt GitHub. Si vous n’avez pas encore ajouté les ressources de votre application web, ajoutez-les maintenant. J’utilise ici l’exemple Python Flask Hello World et j’ai ajouté les fichiers Python .gitignore, app.py et requirements.txt.

    Exemple de dépôt utilisant Python Flask avec Azure Stack Hub

  2. Sélectionnez Actions.

  3. Sélectionnez Nouveau workflow.

    • S’il s’agit de votre premier workflow, sélectionnez Set up a workflow yourself (Configurer un workflow vous-même) sous Choose a workflow template (Choisir un modèle de workflow).
    • Si vous avez des workflows existants, sélectionnez New workflow>Set up a workflow yourself (Nouveau workflow > Configurer un workflow vous-même).
  4. Dans le chemin, nommez le fichier workflow.yml.

  5. Copiez et collez le ficher yml du workflow.

    # .github/workflows/worfklow.yml
    on: push
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        # checkout the repo
        - name: 'Checkout Github Action' 
          uses: actions/checkout@main
    
        - name: Setup Python 3.6
          uses: actions/setup-node@v1
          with:
            python-version: '3.6'
        - name: 'create a virtual environment and install dependencies'
          run: |
            python3 -m venv .venv
            source .venv/bin/activate
            pip install -r requirements.txt
    
        - name: 'Run Azure webapp deploy action using publish profile credentials'
          uses: azure/webapps-deploy@v2
          with:
            app-name: <YOURAPPNAME>
            publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    
  6. Dans le code YAML du flux de travail, remplacez <YOURAPPNAME> par le nom de votre application.

  7. Sélectionnez Démarrer la validation.

  8. Ajoutez le titre du commit et les détails facultatifs, puis sélectionnez Commit new file (Commiter un nouveau fichier).

Actions d’installation pour différents runtimes

Pour générer du code d’application dans un environnement basé sur un langage spécifique, utilisez des actions d’installation :

Runtime Actions d’installation
DotNet Setup DotNet
NodeJS Setup Node
Java Setup Java
Python Setup Python
Docker docker-login

Une fois l’action de connexion effectuée, l’ensemble suivant d’actions dans le flux de travail peut effectuer des tâches telles que la génération, le balisage et le push de conteneurs. Pour plus d’informations, consultez la documentation relative à l'action d’application web Azure.

Déclencher votre déploiement

Quand l’action s’exécute, vérifiez qu’elle a bien abouti.

  1. Ouvrez votre dépôt GitHub. Vous pouvez déclencher le workflow par un envoi (push) au dépôt.
  2. Sélectionnez Actions.
  3. Sélectionnez le nom du commit sous All workflows (Tous les workflows). Les deux flux de travail ont journalisé leur état. Vérifier l’état de votre action GitHub
  4. Sélectionnez le nom du travail pour le déploiement, .github/workflows/workflow.yml.
  5. Développez les sections afin d’examiner les valeurs renvoyées pour vos actions de flux de travail. Recherchez l’URL de votre application web déployée. Rechercher l’URL de votre application web Azure Stack Hub
  6. Ouvrez un navigateur web et chargez l’URL.

Étapes suivantes