Comment sauvegarder des référentiels Azure DevOps Git ?

DevOps est une tendance émergente dans le monde du développement logiciel depuis plusieurs années. Bien que le terme puisse être relativement nouveau, il s’agit en réalité d’une convergence d’un certain nombre de pratiques qui évoluent depuis des décennies. DevOps est un moyen révolutionnaire de publier des logiciels rapidement et efficacement tout en maintenant un haut niveau de sécurité.

Azure DevOps, anciennement connu sous le nom de Visual Studio Team Services (VSTS), est une plateforme de logiciel en tant que service (SaaS) de Microsoft qui fournit une chaîne d’outils DevOps de bout en bout pour le développement et le déploiement de logiciels. Il s’intègre également à la plupart des outils du marché et constitue une excellente option pour orchestrer une chaîne d’outils DevOps. Il s’intègre également parfaitement à Visual Studio et Visual Studio Code. Alors que le code est parfaitement sûr sur l’infrastructure Azure comme décrit par Microsoft ici (Azure DevOps data protection overview), y compris les sauvegardes périodiques et la géo-réplication. Cela n’empêche pas les actions non intentionnelles ou malveillantes pouvant entraîner une perte de données.

Il existe également des cas où une sauvegarde locale centralisée de tous les projets et référentiels est nécessaire. Celles-ci peuvent inclure des politiques d’entreprise, plans de continuité des activités et de reprise après sinistre (BC / DR : Business continuity and disaster recovery).
Malheureusement, il n’y a pas de solution de sauvegarde prête à l’emploi comme le confirme Microsoft ici.
Éventuellement, ce que nous pourrions faire est de télécharger le repo manuellement à partir d’Azure DevOps dans un fichier Zip, comme illustré dans l’image ci-dessous.

blog ai3 Auto-Backup-AzDevOps-Repo-01-1024x519 Comment sauvegarder des référentiels Azure DevOps Git ?

Cette solution fonctionne mais n’est pas pratique si nous avons un nombre considérable de projets et de référentiels et que nous avons besoin de les sauvegarder régulièrement.

Nous allons explorer d’autres méthodes et voir comment automatiser la sauvegarde des référentiels.

Prérequis

Pour suivre cet article, vous devez disposer des éléments suivants:
1) Abonnement Azure – Si vous n’avez pas d’abonnement Azure, vous pouvez en créer un gratuitement ici.
2) Compte de stockage Azure – Pour créer un compte de stockage à usage général, suivez les instructions décrites ici.
3) Azure DevOps – Si vous n’en avez pas, vous pouvez en créer un gratuitement ici.
– Vous avez un Azure Repos existant.
– Vous êtes familiarisé avec Azure Pipelines et la syntaxe YAML.

Automatiser la sauvegarde du référentiel Azure DevOps

Pour automatiser la sauvegarde d’un référentiel, vous avez les possibilités suivantes :
1) Sauvegarder par programme le code source d’Azure DevOps à l’aide de l’API REST Azure DevOps. Ensuite, vous pouvez utiliser Azure Functions avec un déclencheur temporel (time trigger) pour l’exécuter selon une planification.
2) Créez un script git bash pour faire du mirroring et sauvegarder le référentiel Git.
3) Cloner le dernier référentiel sur votre machine, puis automatiser la sauvegarde à l’aide de votre application de sauvegarde sur site préférée telle que SCDPM, Veeam, etc…
4) Tirer parti du service Azure DevOps pour automatiser la sauvegarde et copier le référentiel sur le stockage Blob Azure ou sur une machine virtuelle Azure.

Pour le reste de cet article, nous utiliserons l’option 4 pour automatiser la sauvegarde du référentiel à l’aide d’un pipeline YAML et des tâches en ligne de commande.

Le processus est le suivant :
1) Créer un jeton d’accès personnel Azure DevOps (PAT).
2) Créer un pipeline YAML avec les tâches suivantes :

  • Cloner le référentiel Git.
  • Archiver le référentiel Git.
  • Copier le fichier d’archive dans le stockage Blob Azure.

Créer un jeton d’accès personnel Azure DevOps

Connectez-vous au portail Azure DevOps et procédez comme suit :

Dans le coin supérieur droit du portail, vous avez des paramètres utilisateur à côté de l’image de votre compte. En cliquant dessus, vous affichez le menu du compte où vous pouvez trouver l’option « Personal access tokens » comme indiqué dans l’image ci-dessous.

blog ai3 Auto-Backup-AzDevOps-Repo-02-2 Comment sauvegarder des référentiels Azure DevOps Git ?

La page « Personal access tokens » s’ouvre.
Cliquez sur « New Token » pour créer un nouveau token.
Pour cet exemple, il suffit de cocher « Read » dans « Code » comme indiqué dans l’image ci-dessous.
Ensuite, donnez un nom au jeton, puis définissez la date d’expiration et cliquez sur « Create ».

blog ai3 Auto-Backup-AzDevOps-Repo-03 Comment sauvegarder des référentiels Azure DevOps Git ?

Une fois le jeton créé, vous obtiendrez sa valeur et ensuite il ne sera plus affiché, vous devez donc le copier et l’enregistrer ailleurs.
Nous aurons besoin de ce jeton dans la section suivante pour cloner le référentiel.

Créer un pipeline YAML

Azure Pipelines prend en charge l’intégration continue (CI) et la livraison continue (CD) pour tester et créer votre code de manière constante et cohérente et le déployer sur n’importe quelle cible. Pour cela vous devez utiliser un un pipeline.
Lorsqu’il y a une mise à jour de votre référentiel, le pipeline sera déclenché pour s’exécuter et copier l’intégralité du référentiel.

Pour créer un pipeline YAML, vous devez :

1) Accéder à votre projet d’équipe sur Azure DevOps dans un nouvel onglet de navigateur.
2) Accéder au hub Pipelines sur le côté gauche.
3) Cliquer sur « New pipeline ». Nous utiliserons l’assistant pour créer automatiquement la définition YAML basée sur notre projet.

blog ai3 Auto-Backup-AzDevOps-Repo-04 Comment sauvegarder des référentiels Azure DevOps Git ?

4) Ensuite, sélectionnez « Azure Repos Git » comme plate-forme d’hébergement source.

blog ai3 Auto-Backup-AzDevOps-Repo-05 Comment sauvegarder des référentiels Azure DevOps Git ?

5) Sélectionnez ensuite votre référentiel. Dans notre exemple, le dépôt s’appelle « infra-code-cn »

blog ai3 Auto-Backup-AzDevOps-Repo-06 Comment sauvegarder des référentiels Azure DevOps Git ?

6) Ensuite, sélectionnez le template « Starter pipeline » comme point de départ du pipeline de sauvegarde.

blog ai3 Auto-Backup-AzDevOps-Repo-07 Comment sauvegarder des référentiels Azure DevOps Git ?

7) Le pipeline de démarrage s’ouvrira avec la définition YAML par défaut suivante.

blog ai3 Auto-Backup-AzDevOps-Repo-08 Comment sauvegarder des référentiels Azure DevOps Git ?

8) Ensuite, nous devons mettre à jour la définition YAML. La syntaxe complète de la définition YAML pour surveiller et sauvegarder toutes les branches ressemble à ceci (le PAT, l’abonnement Azure et le compte de stockage ont été intentionnellement modifiés dans cet exemple).
Les détails de la configuration sont sous l’image.

blog ai3 Auto-Backup-AzDevOps-Repo-09-1 Comment sauvegarder des référentiels Azure DevOps Git ?
  • Trigger (intégration continue): le joker (*) peut surveiller toutes les branches. Donc, s’il y a une mise à jour du référentiel, le pipeline sera déclenché pour s’exécuter.
  • Pool (windows-latest): cette tâche est écrite dans PowerShell et ne fonctionne donc que lors de l’exécution sur des agents Windows.
  • La tâche CmdLine : Cette commande appelle ‘git clone –mirror’ pour faire une copie du référentiel git. Ici, il faut utiliser le jeton d’accès personnel (PAT) que nous avons créé au cours des étapes précédentes.
    La syntaxe complète de la tâche de ligne de commande ressemble à ceci : ‘git clone –mirror https: // {yourPAT} @ dev.azure.com / {yourOrganizationName} / {yourProjectName} / _git / {yourRepoName}’
  • La tâche d’archivage des fichiers : cela prendra le référentiel git qui a été cloné à partir de l’étape précédente, puis compressé dans un fichier Backup.zip et écrasera le fichier d’archive existant sur l’image de machine virtuelle utilisée dans le pool. La tâche d’archivage des fichiers comprend une gamme de formats d’archive standard tels que .zip, .jar, .war, .ear, .tar, .7z, etc.
  • La tâche de copie de fichier : la tâche de copie prend le fichier d’archive Backup.zip et l’envoie au stockage Blob Azure. Dans cette tâche, vous devez spécifier l’abonnement Azure cible, le compte de stockage et le nom du conteneur.

9) Enfin, cliquez sur « Save and run » puis faites un commit.

blog ai3 Auto-Backup-AzDevOps-Repo-10 Comment sauvegarder des référentiels Azure DevOps Git ?

10) Une fois que vous avez fait un commit, vous devez donner au pipeline l’autorisation nécessaire pour accéder à la ressource avant qu’elle ne puisse s’exécuter pour la première fois. Cliquez sur « View ».

blog ai3 Auto-Backup-AzDevOps-Repo-11 Comment sauvegarder des référentiels Azure DevOps Git ?

11) Sur la page « Waiting for review », cliquez sur « Permit », puis de nouveau sur « Permit » dans la fenêtre de confirmation d’accès.

blog ai3 Auto-Backup-AzDevOps-Repo-12 Comment sauvegarder des référentiels Azure DevOps Git ?

12) Une fois que vous avez cliqué sur « Permit », le pipeline démarre et exécute le travail. Il devrait être terminé en environ 2 minutes.

blog ai3 Auto-Backup-AzDevOps-Repo-13 Comment sauvegarder des référentiels Azure DevOps Git ?

13 ) Vous recevrez un e-mail si le build a échoué ou a réussi comme ci-dessous.

blog ai3 Auto-Backup-AzDevOps-Repo-14 Comment sauvegarder des référentiels Azure DevOps Git ?

Vérification du backup

Pour vérifier la sauvegarde, connectez-vous au portail Azure et accédez au compte de stockage. Allez dans « Containers » dans « Blob service« .

Vous verrez un nouveau conteneur nommé « azure-devops-container » comme nous l’avons défini dans la définition YAML.

blog ai3 Auto-Backup-AzDevOps-Repo-15 Comment sauvegarder des référentiels Azure DevOps Git ?

Cliquez sur le nom du conteneur, puis ouvrez le dossier qui est le préfixe Blob (az-devops-backup), vous verrez le fichier d’archive Backup.zip comme indiqué dans l’image ci-dessous.

blog ai3 Auto-Backup-AzDevOps-Repo-16 Comment sauvegarder des référentiels Azure DevOps Git ?

Restaurer depuis un backup

Pour restaurer à partir d’un backup, vous devez d’abord télécharger le fichier d’archive Backup.zip à partir du conteneur et l’extraire localement sur votre machine.

Une fois que vous avez extrait le fichier, vous verrez le nom du référentiel avec l’extension .git. Ouvrez la fenêtre d’invite de commande en supposant que Git est déjà installé sur votre machine, accédez au dossier .git, puis exécutez la commande suivante pour pousser et restaurer votre référentiel. Veuillez noter que vous pouvez restaurer dans le même projet / référentiel ou vous pouvez restaurer dans un nouveau projet / nouveau référentiel.

blog ai3 Auto-Backup-AzDevOps-Repo-17 Comment sauvegarder des référentiels Azure DevOps Git ?

L’option –mirror est utilisée avec la commande clone pour la sauvegarde et la commande push. Cette option garantit que toutes les branches et autres attributs sont répliqués dans le nouveau référentiel.

Une fois que vous restaurez le référentiel, il comporte également toutes les informations de révision comme indiqué dans l’image ci-dessous.

blog ai3 Auto-Backup-AzDevOps-Repo-18 Comment sauvegarder des référentiels Azure DevOps Git ?

Voilà c’est fini !

Résumé

La logique du pipeline YAML est que, s’il y a un changement dans votre référentiel source, le pipeline sera déclenché et il prendra la dernière copie dans System.DefaultWorkingDirectory (tâche CmdLine) et archivera cette copie dans un fichier Backup.zip, puis la tâche Azure File copy copiera le fichier .zip dans le stockage d’objets blob Azure. Vous pouvez également le copier sur une machine virtuelle Azure, ce qui vous permet de créer une sauvegarde quotidienne / hebdomadaire pour votre machine virtuelle.

À l’aide de tâches simples, nous pouvons automatiser et produire une copie complète du référentiel qui pourrait être facilement restaurée ou importée dans le nouveau projet.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.