Partage via


Sources en amont d’Azure Artifacts

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

À l’aide de sources en amont, vous pouvez stocker facilement des packages à partir de différentes sources dans un seul flux. Cela inclut les packages que vous publiez et ceux que vous utilisez à partir de flux externes et de registres publics tels que NuGet.org, npmjs.com, Maven Central et PyPI. Une fois que vous avez activé les sources en amont, tout package installé à partir de ces sources en amont, une copie est automatiquement enregistrée dans votre flux.

Remarque

Pour enregistrer des packages à partir d’amont, vous devez disposer du rôle Flux et Lecteur en amont (Collaborateur) ou supérieur. Pour plus d’informations, consultez Gérer les autorisations .

Avantages

L’activation de sources en amont offre plusieurs avantages pour gérer les dépendances de votre produit au sein d’un seul flux :

  • Simplicité : lorsque vous publiez tous vos packages dans un seul flux, il simplifie vos fichiers de configuration tels que NuGet.config, npmrc ou settings.xml. Avec un seul flux dans votre fichier de configuration, vous réduisez les risques d’erreurs et de bogues, en rationalisant votre configuration.

  • Déterminisme : votre flux résout les demandes de package dans l’ordre, ce qui entraîne une cohérence plus élevée lors de la reconstruction de votre code.

  • Provenance : votre flux conserve des informations sur les packages qu’il a enregistrés à partir de sources en amont. Cela vous permet de vérifier que vous utilisez le package d’origine et non une copie ou une version potentiellement malveillante.

  • Tranquillité d’esprit : chaque package installé à partir de sources en amont est automatiquement enregistré dans votre flux. Cela signifie que même si la source en amont est désactivée, supprimée ou en cours de maintenance, vous pouvez continuer à développer et à créer en toute confiance, car vous disposez d’une copie de ce package dans votre flux.

Bonnes pratiques : consommateurs de packages

Pour tirer pleinement parti des avantages des sources en amont en tant que consommateur de packages, suivez les meilleures pratiques suivantes :

Utilisez un seul flux dans votre fichier de configuration :

Pour que votre flux fournisse une restauration déterministe, assurez-vous que votre fichier de configuration tel que nuget.config ou .npmrc référence un seul flux avec les sources en amont activées. Consultez l'exemple ci-dessous :

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Remarque

NuGet compile plusieurs fichiers de configuration pour déterminer l’ensemble complet d’options à appliquer. En utilisant <clear />, vous pouvez ignorer efficacement toutes les autres sources de package spécifiées dans les fichiers de configuration de niveau supérieur.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Commandez intentionnellement vos sources en amont :

Si vous utilisez exclusivement des registres publics comme nuget.org ou npmjs.com, l’ordre de vos sources en amont n’est pas pertinent. Les demandes adressées au flux suivent la séquence détaillée dans la section ordre de recherche.

Toutefois, lorsque vous gérez plusieurs sources, qui peuvent inclure une combinaison de flux et de registres publics, chaque source en amont est recherchée dans l’ordre dans lequel elle est répertoriée dans les paramètres de configuration du flux. Dans ce cas, nous vous recommandons de placer les registres publics en premier dans la liste des sources en amont.

Dans certains scénarios uniques, certaines organisations choisissent de personnaliser des packages de logiciels open source (OSS). Cela peut impliquer de résoudre les problèmes de sécurité, d’améliorer les fonctionnalités ou de répondre à des exigences spécifiques qui nécessitent la reconstruction interne du package plutôt que de l’obtenir directement à partir d’un dépôt public. Si votre organisation suit cette pratique, il est conseillé de positionner la source en amont contenant ces packages OSS modifiés avant les gestionnaires de packages publics. Cette disposition garantit l’utilisation des versions personnalisées de votre organisation.

Utilisez la vue par défaut suggérée :

Lorsque vous ajoutez un flux distant en tant que source en amont, vous devez sélectionner la vue de son flux. Cela permet aux sources en amont de construire un ensemble de packages disponibles. Pour plus d’informations, consultez comment les amonts construisent l’ensemble de packages disponibles.

Bonnes pratiques : propriétaires de flux/éditeurs de packages

Pour vous assurer que votre flux est facilement configuré en tant que source en amont, envisagez d’appliquer les meilleures pratiques suivantes :

Utilisez la vue par défaut :

La vue par défaut de tous les flux nouvellement créés est la @Local vue, qui contient tous les packages publiés sur votre flux ou enregistrés à partir de sources en amont.

Si vous souhaitez utiliser d’autres vues telles qu’une vue pour les versions de package nouvellement publiées, vous pouvez promouvoir votre package vers l’affichage @Release , puis rendre cette vue disponible pour les consommateurs de votre package.

Construisez un graphe de package :

Pour construire un graphique de package, connectez-vous simplement à la vue par défaut du flux et installez le package que vous souhaitez partager. Lorsque le package est enregistré dans la vue par défaut, les utilisateurs qui souhaitent l’utiliser pourront résoudre le graphique du package et installer le package souhaité. Les packages provenant de sources en amont sont affichés en fonction de la vue configurée pour la source en amont correspondante.

Ordre de recherche

Pour les gestionnaires de packages publics qui prennent en charge plusieurs flux comme NuGet et Maven, l’ordre dans lequel les flux sont interrogés peut parfois être peu clair ou non déterministe. Par exemple, dans NuGet, les requêtes parallèles sont envoyées à tous les flux du fichier de configuration, et les réponses sont traitées de manière première et première sortie (FIFO).

Les sources en amont traitent ce comportement non déterministe en recherchant le flux et ses sources en amont dans l’ordre suivant :

  1. Packages publiés directement dans le flux.

  2. Packages enregistrés à partir d’une source en amont.

  3. Packages disponibles à partir de sources en amont. Chaque source en amont est recherchée dans l’ordre dans lequel elle est répertoriée dans la configuration du flux.

Pour tirer pleinement parti de la fonctionnalité de recherche rapide, nous vous recommandons d’inclure un seul flux dans votre fichier de configuration.

Remarque

La recherche de packages dans des sources en amont à l’aide de l’Explorateur de packages NuGet n’est pas prise en charge.

Enregistrer des packages à partir de sources en amont

Lorsque vous activez des sources en amont pour votre flux et installez un package à partir d’une source en amont, une copie automatique de ce package est enregistrée dans votre flux. Cette pratique améliore les performances de téléchargement et conserve la bande passante réseau.

Par exemple, vous pouvez installer des packages directement à partir de la source en amont à l’aide d’une commande telle que npm install express. Vous pouvez également installer des packages dans le cadre d’un processus de résolution de dépendances. Dans ce dernier scénario, l’installation d’express enregistrerait également ses dépendances, telles que les acceptations.

Remarque

Les sources en amont personnalisées sont uniquement prises en charge pour les packages npm.

Remplacer des packages à partir de sources en amont

Lorsque vous activez des sources en amont, il est important de noter que la publication d’une version de package qui existe déjà dans une source en amont n’est pas possible. Par exemple, si vous activez le NuGet.org en amont, vous ne pourrez pas publier le package Newtonsoft.Json 10.0.3 , car cette version exacte existe déjà dans NuGet.org.

Si vous devez publier une version de package déjà présente dans l’une de vos sources en amont, vous devez suivre les étapes suivantes :

  1. Désactivez la source en amont appropriée.
  2. Publiez votre package.
  3. Réactivez la source en amont.

Remarque

Les versions de package sont immuables. Les packages enregistrés restent dans le flux même si la source en amont est désactivée ou supprimée.

État d’intégrité des sources en amont

Si un flux a une source en amont défaillante, les métadonnées des packages du même protocole ne peuvent plus être actualisées. Pour vérifier l’état d’intégrité de vos sources en amont, procédez comme suit :

  1. Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.

  2. Sélectionnez Artefacts, puis sélectionnez votre flux dans le menu déroulant.

  3. Sélectionnez l’icône l’icône d’engrenage d’engrenage pour accéder à vos paramètres de flux, puis sélectionnez Sources en amont.

    Capture d’écran montrant les sources en amont dernier état de synchronisation.

  4. Si des échecs se produisent, un message d’avertissement s’affiche. En cliquant sur l’état Échec , vous trouverez des détails supplémentaires, notamment la cause de l’échec et des instructions sur la façon de le résoudre.

    Capture d’écran affichant les détails de l’échec de synchronisation.

Remarque

Dans le cas de registres publics comme NuGet.org, il existe un délai de 3 à 6 heures entre le moment où un package est envoyé au registre public et lorsqu’il est disponible en téléchargement. Ce délai dépend du minutage du travail et de la propagation des données. Toutefois, lorsque la source en amont est un flux Azure Artifacts, la latence n’est généralement pas supérieure à quelques minutes.

Sources en amont hors connexion

Les sources en amont servent de protection précieuse pour vos consommateurs et votre infrastructure, les protéger contre les pannes imprévues. Lorsque vous installez un package à partir d’une source en amont, une copie de ce package est enregistrée dans votre flux. Si la source en amont subit un temps d’arrêt, subit une maintenance ou devient temporairement indisponible, vous pouvez toujours récupérer les packages nécessaires à partir de votre flux et poursuivre votre développement.

FAQ

Q : Je ne trouve pas mon package même si je peux le voir dans l’un des amonts de mon flux ?

R : Les packages provenant de sources en amont deviennent disponibles dans le flux en aval peu après leur publication. Toutefois, le package ne sera visible que par les lecteurs une fois qu’il a été enregistré dans le flux. Un package est enregistré lorsqu’un utilisateur disposant d’un flux et d’un lecteur en amont (collaborateur) ou d’autorisations ultérieures installe la version dans le flux en aval. Cela déclenche l’enregistrement en aval d’une copie du package en amont, après quoi il est enregistré définitivement et disponible dans l’aval pour tous les lecteurs. Il s’agit du moment où la version du package devient visible dans la section versions du package de l’interface utilisateur web.

Q : Que sont les vues de flux ?

R : Les vues permettent aux développeurs de partager de manière sélective un sous-ensemble de versions de package qui ont été testées et validées, à l’exclusion des packages qui sont toujours en cours de développement ou qui ne répondent pas aux critères de qualité. Pour plus d’informations, consultez Affichages de flux.

Q : Je ne trouve pas le flux que je souhaite configurer en tant que source en amont ?

R : Vérifiez que le propriétaire du flux partage une vue en tant que source en amont.

Q : Un utilisateur disposant d’un rôle Lecteur de flux peut-il télécharger des packages à partir d’une source en amont ?

R : Non. Un utilisateur disposant d’un rôle Lecteur de flux dans un flux Azure Artifacts ne peut télécharger que les packages enregistrés dans le flux. Les packages sont enregistrés dans le flux lorsqu’un flux et un lecteur en amont (collaborateur), un éditeur de flux (contributeur) ou un propriétaire de flux installent ces packages en amont.

Q : Que se passe-t-il lorsqu’un utilisateur supprime ou annule la publication d’un package enregistré à partir d’une source en amont ?

R : Le package devient indisponible pour le téléchargement à partir du flux, et le numéro de version est réservé définitivement. En outre, le package ne sera plus enregistré à partir de la source en amont. Les versions antérieures et ultérieures du package restent inchangées.

Q : Que se passe-t-il lorsqu’un utilisateur déprécie un package enregistré à partir d’une source en amont ?

R : Lorsqu’un utilisateur déprécie un package, un message d’avertissement est ajouté aux métadonnées du package, qui s’affiche chaque fois que le package est affiché ou installé à partir du flux.