Partager via


Tutoriel : Empaqueter une dépendance Azure DevOps privée

Ce tutoriel vous guide tout au long de la création d’un port de superposition pour une bibliothèque hébergée sur un référentiel Azure DevOps privé, couvrant la configuration de l’authentification et l’empaquetage dans une superposition.

Configuration requise :

  • Compréhension de base de Git et vcpkg.
  • Accès à Azure DevOps avec des autorisations pour créer des projets et gérer des clés SSH.
  • vcpkg installé sur votre système.
  • Git installé sur votre système.

1 - Créer un projet privé

  1. Connectez-vous à votre compte Azure DevOps
  2. Créez un projet privé. Si vous n’avez pas d’organisation, vous êtes invité à en créer un pendant le processus de création du projet.
    • Nommez votre projet : choisissez un nom explicite qui reflète votre bibliothèque ou son objectif.

    • Visibilité : vérifiez que le projet est défini sur « Privé » pour contrôler l’accès.

      New Project

2 - Configurer l’authentification dans Azure DevOps

Sécuriser l’accès à votre référentiel avec des clés SSH.

  1. Générer une paire de clés SSH

    • Ouvrez un terminal ou une invite de commandes.

    • Exécutez la commande suivante :

      ssh-keygen -t rsa -b 4096 -C "ADO-RSA" -f /path/to/.ssh/id_rsa_ado
      
      • -t rsa: spécifie le type de clé à créer, dans ce cas, RSA.
      • -b 4096: définit le nombre de bits dans la clé, dans ce cas, 4096, qui est considéré comme fort et sécurisé.
      • -C "ADO-RSA": ajoute une étiquette à la clé pour l’identification, ce qui peut être particulièrement utile lorsque vous avez plusieurs clés.
      • -f /path/to/.ssh/id_rsa_ado: spécifie le nom de fichier de la nouvelle clé. Cette commande enregistre la clé privée dans id_rsa_ado et la clé publique dans id_rsa_ado.pub.

      Vous serez invité à entrer une phrase secrète pour une sécurité supplémentaire. Vous pouvez entrer une phrase secrète ou appuyer sur Entrée pour continuer sans une phrase secrète. Une phrase secrète ajoute une couche de sécurité supplémentaire en exigeant que la phrase secrète soit entrée chaque fois que la clé est utilisée.

    • Une fois la génération de clé terminée, vérifiez que la nouvelle clé est créée en répertoriant le contenu de votre /.ssh/ répertoire :

      ls /path/to/.ssh
      
  2. Ajouter votre clé SSH à Azure DevOps

    • Ouvrez le id_rsa_ado.pub fichier avec un éditeur de texte pour afficher la clé publique.

    • Copiez l’intégralité du contenu du fichier.

    • Accédez à votre utilisateur Paramètres > clés publiques SSH.

      User Settings > SSH Public Keys

    • Ajoutez votre nouvelle clé en collant le contenu copié et nommez votre clé pour référence ultérieure.

      Add the Key

  3. Chargez votre clé SSH dans l’agent SSH.

    Vérifiez que votre clé SSH est disponible pour l’authentification :

    ssh-add /path/to/.ssh/id_rsa_ado
    
  4. Tester la connexion SSH

    Vérifiez la connectivité à Azure DevOps :

    ssh -T git@ssh.dev.azure.com
    

    Attendez-vous à un message indiquant une authentification réussie, mais notant que l’accès à l’interpréteur de commandes n’est pas pris en charge.

    ssh -T git@ssh.dev.azure.com
    remote: Shell access is not supported.
    shell request failed on channel 0
    

3 - Charger la bibliothèque dans le référentiel Azure DevOps

  1. Initialiser un dépôt git local

    Accédez au répertoire de code source de votre bibliothèque et initialisez un dépôt Git :

    git init
    
  2. Validez votre bibliothèque Ajouter et valider le code source de votre bibliothèque :

    git add .
    git commit -m "Initial commit of the sample library"
    
  3. Lien vers votre référentiel Azure DevOps

    Récupérez l’URL SSH de votre référentiel à partir d’Azure DevOps et ajoutez-la en tant que distante :

    SSH URL

    git remote add origin <Your-Repo-SSH-URL>
    
  4. Envoyer (push) votre bibliothèque

    Chargez votre bibliothèque dans le référentiel Azure DevOps :

    git push -u origin master:main
    

4 - Empaqueter votre bibliothèque dans un port de superposition

Les ports de superposition vous permettent d’utiliser des ports locaux avec vcpkg.

  1. Créer un répertoire de ports de superposition

    mkdir vcpkg-overlay-ports
    cd vcpkg-overlay-ports
    
  2. Configurer les fichiers de port

  • vcpkg.json: ce fichier manifeste définit les métadonnées et les dépendances de votre bibliothèque.

    Exclusion de responsabilité : les exemples suivants utilisent des espaces réservés. Remplacez-les par vos données réelles.

    {
        "name": "your-library-name",
        "version": "1.0.0",
        "description": "Description of your library.",
        "dependencies": []
    }
    

    Le vcpkg.json fichier sert de manifeste qui définit les métadonnées et les dépendances d’une bibliothèque C++, fournissant à vcpkg les informations nécessaires pour générer, installer et gérer le package.

    • name: spécifie le nom de la bibliothèque. Il s’agit de l’identificateur du package.
    • version: indique le numéro de version de la bibliothèque.
    • description: texte bref décrivant ce que fait la bibliothèque. Il s’agit de la documentation et des utilisateurs.
    • dependencies: tableau contenant la liste des dépendances dont la bibliothèque a besoin.

    Pour plus d’informations sur la configuration de votre vcpkg.json, case activée notre documentation de référence.

  • portfile.cmake : ce script indique à vcpkg comment générer votre bibliothèque.

    vcpkg_from_git(
        OUT_SOURCE_PATH SOURCE_PATH
        URL "git@ssh.dev.azure.com:v3/YourOrg/YourProject/YourRepo"
        REF "<commit-sha>"
    )
    
    vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
    vcpkg_cmake_install()
    vcpkg_cmake_config_fixup(PACKAGE_NAME your-library-name)
    file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/your-library-name")
    

    Ce fichier de port définit comment télécharger, générer, installer et empaqueter une bibliothèque C++ spécifique à partir de GitHub à l’aide de vcpkg.

    • vcpkg_from_git: démarre la fonction pour télécharger le code source à partir d’un dépôt Git.
    • OUT_SOURCE_PATH SOURCE_PATH: définit le répertoire dans lequel le code source sera extrait.
    • URL git@ssh.dev.azure.com:v3/YourOrg/YourProject/YourRepo: URL SSH du référentiel contenant le code source.
    • REF <commit-sha>: sha de validation du code de votre bibliothèque dans Azure DevOps.
    • vcpkg_cmake_configure: configure le projet à l’aide de CMake, en configurant la build.
      • SOURCE_PATH "${SOURCE_PATH}": chemin d’accès au code source téléchargé précédemment.
    • vcpkg_cmake_install(): génère et installe le package à l’aide de CMake.
    • vcpkg_cmake_config_fixup(PACKAGE_NAME your-library-name): corrige les fichiers de configuration du package CMake pour qu’ils soient compatibles avec Vcpkg.
    • file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION ...): installe le fichier LICENSE dans le répertoire de partage du package et le renomme en droits d’auteur.

    Pour obtenir le sha de validation :

    mkdir temp && cd temp
    git init
    git fetch <Your-Repo-SSH-URL> main --depth 1 -n
    git rev-parse FETCH_HEAD
    

    Pour plus d’informations sur la configuration de votre portfile.cmake, case activée outez les articles suivants :

  1. Installer votre port

    De retour dans votre répertoire vcpkg principal, installez votre bibliothèque en spécifiant le répertoire des ports de superposition :

    vcpkg install your-library-name --overlay-ports=/path/to/vcpkg-overlay-ports
    

Étapes suivantes

Vous avez empaqueté un dépôt Azure DevOps privé en tant que port vcpkg. Ce tutoriel est destiné à être conçu comme une directive ; adaptez les instructions pour qu’elles correspondent à votre environnement de développement et de bibliothèque spécifique.