Exercice - Déployer un exemple d’application Spring Boot
Dans cet exercice, vous allez utiliser un workflow automatisé pour générer et déployer votre exemple d’application Spring Boot.
Configurer une action GitHub pour déployer l’exemple d’application
Maintenant que nous avons approvisionné nos ressources Azure, nous pouvons déployer votre échantillon d’application Spring Boot.
Pour créer votre workflow Maven GitHub, vous allez utiliser l’outil intégré de l’Assistant d’intégration continue et livraison continue (CI/CD), disponible dans le centre de déploiement du Portail Azure App Service.
Le centre de déploiement Azure App Service génère automatiquement un fichier de workflow GitHub Actions basé sur votre pile d’applications. Le centre de déploiement valide ensuite le fichier dans votre référentiel GitHub dans le répertoire approprié. Le centre de déploiement lie également votre action GitHub à un profil de publication Azure App Service.
Dans le Portail Azure, accédez à votre application web Azure App Service.
Dans le volet de gauche, développez Déploiement et sélectionnez Centre de déploiement.
Dans la liste déroulante Source, sous Déploiement continu (CI/CD), sélectionnez GitHub.
Sélectionnez GitHub Actions. (Il doit s’agir de la valeur par défaut. Si ce n’est pas le cas, sélectionnez Changer le fournisseur pour charger les options du fournisseur.)
Sous Paramètres, dans les listes déroulantes, procédez comme suit :
a. Sélectionnez votre référentiel GitHub.
b. Pour la branche, sélectionnez principale.
c. Pour la pile d’applications, sélectionnez JAVA 8.Sur la dernière page, examinez vos sélections et affichez un aperçu du fichier de workflow qui sera validé dans le référentiel.
Sélectionnez Enregistrer pour valider le fichier de workflow dans le référentiel, puis commencez immédiatement à générer et à déployer votre application.
Notes
Vous pouvez également déclencher le workflow GitHub Actions dans votre référentiel en sélectionnant l’onglet Actions, en sélectionnant le workflow génération et déploiement, puis en sélectionnant Réexécuter les travaux.
Confirmer la build GitHub Actions
Dans votre dépôt GitHub, sélectionnez l’onglet Actions, puis, sur le côté gauche, sous All Workflows (Tous les workflows), sélectionnez Build and deploy JAR app to Azure Web App (Générer et déployer l’application JAR sur l’application web Azure).
Ensuite, dans le tableau de droite, sous Exécution du workflow, sélectionnez l’exécution de workflow Ajouter ou mettre à jour la configuration de workflow du déploiement App service.
Attendez la fin de l’exécution du workflow, puis, sous le travail Déployer dans l’exécution du workflow, copiez l’URL dans le travail Déployer qui affiche l’URL de l’application web Azure.
Enfin, ouvrez l’URL dans un navigateur et vérifiez que votre application Java est déployée, connectée à votre base de données MySQL et qu’elle retourne des données.
Étapes suivantes
Félicitations ! Vous avez maintenant deux workflows GitHub Actions : une action d’approvisionnement et une action de génération et déploiement.
Chaque fois que vous entrez une commande git push
pour valider votre code, votre action de génération et déploiement est déclenchée et votre application est déployée.
Important
La réexécution du provisionnement de votre action GitHub ne recrée pas vos ressources si elles existent déjà. Vous devrez supprimer votre groupe de ressources ou vos ressources manuellement, puis réexécuter l’action GitHub.
La réexécution de votre action GitHub de génération et de déploiement remplace votre application.
Si vous recréez votre instance App Service, vous devez également basculer vers le nouveau profil de publication. Vous ne devez modifier que la ligne suivante :
publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}
Configurer un pipeline Azure pour déployer l’exemple d’application
Comme précédemment, vous devez créer un pipeline Azure pour générer et déployer votre application.
Dans Azure DevOps, accédez à votre projet, sélectionnez « Pipelines » et sélectionnez « Nouveau pipeline » (en haut à droite).
Vous disposez maintenant de quatre onglets pour configurer votre pipeline :
- Sous l’onglet Connecter, sélectionnez GitHub (fichier YAML).
- Sous l’onglet Sélectionner, sélectionnez le dépôt GitHub contenant votre modèle.
- Sous l’onglet Configurer, sélectionnez l’option Fichier YAML Azure Pipelines existant pour utiliser un fichier YAML Azure Pipelines existant.
- Dans le chemin, sélectionnez cette fois « /azuredevops/build_deploy.yml ».
- Sélectionnez Continuer pour accéder à l’onglet *Revue et passer votre pipeline en revue avant de l’exécuter.
Dans l’écran Passer en revue le fichier YAML de pipeline, examinez le fichier YAML que vous allez utiliser pour créer votre pipeline :
name: Build and Deploy
trigger:
- main
stages:
# Build your Spring Boot App using Maven
- stage: Build
displayName: Build stage
jobs:
- job: MavenPackageAndPublishArtifacts
displayName: Maven Package and Publish Artifacts
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@3
displayName: 'Maven Package'
inputs:
mavenPomFile: 'pom.xml'
- task: CopyFiles@2
displayName: 'Copy Files to artifact staging directory'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)'
Contents: '**/target/*.?(war|jar)'
TargetFolder: $(Build.ArtifactStagingDirectory)
- upload: $(Build.ArtifactStagingDirectory)
artifact: drop
# Deploy to Azure using the AzureWebApp task using your Service Connection
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeployLinuxWebApp
displayName: Deploy Linux Web App
environment: 'production'
pool:
vmImage: 'ubuntu-latest'
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
displayName: 'Azure Web App Deploy'
inputs:
azureSubscription: $(serviceConnection)
appType: webAppLinux
appName: '$(webAppName)'
package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'
Regardez plus en détail certains des champs utilisés dans la configuration Build :
- azureSubscription : votre abonnement Azure
- appType : type de votre application web
- appName : nom de votre service d’application existant
- package : chemin du fichier de package ou d’un dossier stockant le contenu de votre service d’application
Ajouter des variables de génération
Comme avec notre pipeline d’approvisionnement, avant d’enregistrer et d’exécuter le pipeline de génération et de déploiement, vous devez ajouter les variables de votre pipeline :
- Sélectionnez Variables en haut à droite.
- Ajoutez une variable nommée serviceConnection et ayant pour valeur le nom de votre connexion de service.
- Sélectionnez OK dans le coin inférieur droit pour enregistrer la variable.
- Ajoutez une deuxième variable nommée webAppName avec votre nom d’App Service (même valeur définie dans votre variable Terraform « application_name »).
- Sélectionnez OK pour enregistrer la variable.
- Sélectionnez Enregistrer dans le coin inférieur droit pour enregistrer les deux variables.
Observer l’exécution du pipeline
- Sélectionnez && pour enregistrer et exécuter le pipeline
- Comme vous l’avez fait pour le pipeline Provisionner, tracez le processus de build tout au long des phases et des étapes.
- Vérifiez que votre application Java est déployée, qu’elle est connectée à votre base de données MySQL et qu’elle retourne des données.
Étapes suivantes
Félicitations ! Vous avez maintenant deux workflows Azure Pipelines : un pipeline de provisionnement et un pipeline de génération et de déploiement.
Chaque fois que vous entrez une commande git push
pour commiter votre code dans la branche main, votre pipeline de génération et de déploiement est déclenché et votre application est déployée.
Important
La réexécution du pipeline de provisionnement ne recrée pas vos ressources si elles existent déjà. Vous devez supprimer votre groupe de ressources ou vos ressources manuellement, puis réexécuter le pipeline. Vous trouverez plus d’informations sur la façon d’optimiser ces opérations en production dans la section Résumé.
La réexécution de votre pipeline de génération et de déploiement remplace votre application.
L’unité suivante est un contrôle des connaissances pour voir ce que vous avez appris dans ce module.