Exercice - Créer un pipeline Azure DevOps pour déployer votre application native cloud
Votre manager souhaite que vous modifiiez l’intégration continue et la livraison continue (CI/CD) pour que l’application eShop de l’entreprise puisse utiliser Azure Pipelines. Vous allez maintenant créer un pipeline Azure DevOps pour créer et déployer votre service de produits.
Créer un pipeline Azure DevOps
Important
Avant de commencer, vous devez disposer d’un compte Azure DevOps. Si vous n’en avez pas, vous pouvez en créer un gratuitement à dev.azure.com.
- Connectez-vous à dev.azure.com.
- Sélectionnez + Nouveau projet.
- Pour le nom du projet, entrez déploiement eShop.
- Laissez la visibilité définie sur Private, puis sélectionnez Créer.
- Sur la gauche, sélectionnez Pipelines, puis créez un pipeline.
- Dans la page Se connecter, pour Où se trouve votre code ?, sélectionnez GitHub.
- Si vous y êtes invité, connectez-vous à GitHub et autorisez Azure Pipelines à accéder à votre compte GitHub.
- Pour Sélectionner un dépôt, sélectionnez votre dépôt forké.
- Dans la page Configurer , sélectionnez l’option Déployer sur Azure Kubernetes Service .
- Dans le volet Déployer sur Azure Kubernetes Service , sélectionnez votre abonnement Azure, puis sélectionnez Continuer.
- Si vous y êtes invité, connectez-vous à votre abonnement Azure.
- Pour le cluster, sélectionnez le cluster AKS que vous avez créé dans l’unité précédente aks-eshop.
- Pour l’espace de noms, laissez Existant sélectionné, puis sélectionnez par défaut.
- Pour le registre de conteneurs, sélectionnez Azure Container Registry que vous avez créé dans l’unité précédente, par exemple acseshop186748394.
- Pour le nom de l’image, entrez productservice.
- Pour le port de service, entrez 8080.
- Sélectionnez Valider et configurer.
Passer en revue le fichier YAML du pipeline
Azure Pipelines utilise des fichiers YAML pour définir les étapes de génération et de déploiement de votre application. Le fichier YAML est stocké dans votre dépôt GitHub et a été créé automatiquement pour vous, en fonction des informations que vous avez fournies.
Examinons le fichier YAML :
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: '3bcbb23c-6fca-4ff0-8719-bfbdb64a89b1'
imageRepository: 'productservice'
containerRegistry: 'acseshop186748394.azurecr.io'
dockerfilePath: '**/Dockerfile'
tag: '$(Build.BuildId)'
imagePullSecret: 'acseshop18674839414442d34-auth'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- upload: manifests
artifact: manifests
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy
pool:
vmImage: $(vmImageName)
environment: 'PhilStollerymod9cloudnativeexercisecode-1959.default'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: createSecret
secretName: $(imagePullSecret)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
Les sections déclencheur et ressources définissent quand le pipeline doit s’exécuter. Dans ce cas, le pipeline s’exécute quand une modification est validée dans la branche principale de votre référentiel.
Les variables de la section définissent les variables utilisées dans le pipeline. Les variables sont utilisées pour définir Azure Container Registry et le fichier Dockerfile à utiliser.
YAML définit ensuite une tâche de construction qui utilise l’agent ubuntu-latest. Le travail utilise la tâche Docker pour générer et propager l’image vers Azure Container Registry.
La dernière étape consiste à déployer le service de produit mis à jour sur AKS. Le travail utilise la tâche KubernetesManifest pour déployer l’image sur AKS.
Exécuter le pipeline
En haut à droite de la page Réviser votre YAML de pipeline, sélectionnez Enregistrer et exécuter. Dans le volet Enregistrer et exécuter :
- Sélectionnez Créer une branche pour cette validation.
- Conservez toutes les autres options définies sur leurs valeurs par défaut.
- Sélectionnez Enregistrer et exécuter.
Surveiller et dépanner le pipeline
Azure Pipelines est surveillé et géré à partir du portail Azure DevOps. Regardons les résultats de l’exécution du pipeline que vous avez créé.
La page récapitulative affiche toutes les étapes de votre pipeline en cours d’exécution. Vous pouvez sélectionner une étape pour afficher plus en détail les étapes. Dans un instant, vous verrez que le pipeline a échoué. Sélectionnez l’étape de compilation.
Lors de l'étape de compilation, vous pouvez voir que la compilation a échoué. Sélectionnez l’étape Créer et envoyer une image vers Azure Container Registry. L’erreur dans le fichier journal indique :
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
Corriger l’erreur
Dans DevOps, revenez à la page récapitulative du pipeline. Vous allez modifier le pipeline créé pour corriger l’erreur.
En haut à droite, sélectionnez le menu Autres actions , puis sélectionnez Modifier le pipeline.
La ligne 17 du fichier YAML définit le fichier Dockerfile à utiliser et, par défaut, le pipeline s’attend à ce qu’il y ait un fichier nommé Dockerfile à la racine du référentiel.
L’eShop utilise un autre fichier Docker pour le service produit nommé DockerfileProducts. Modifiez la ligne 17 pour être :
dockerfilePath: '**/DockerfileProducts.acr'Cliquez sur Enregistrer.
Dans le volet Enregistrer , sélectionnez Enregistrer.
Sélectionnez Exécuter , puis, dans le volet Exécuter le pipeline , sélectionnez Exécuter.
Regardez l'étape de build s'achever. L’étape Déployer s’interrompt jusqu’à ce que vous la sélectionnez et l’autorise à s’exécuter.
Le pipeline se termine correctement. Sélectionnez l’étape Déployer pour afficher les étapes.



