Sources en amont d’Azure Artifacts

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

À l’aide de amont sources, 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é amont sources, tout package installé à partir de ces sources amont, une copie est automatiquement enregistrée dans votre flux.

Remarque

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

Avantages

L’activation de amont sources 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 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 amont sources est automatiquement enregistré dans votre flux. Cela signifie que même si la source amont est désactivée, supprimée ou en cours de maintenance, vous pouvez continuer à développer et à construire en toute confiance, car vous avez 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 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 de amont :

Si vous utilisez exclusivement des registres publics comme nuget.org ou npmjs.com, l’ordre de vos sources de 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 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 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 amont s construisez 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 amont sources.

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 amont dans l’ordre suivant :

  1. Packages publiés directement dans le flux.

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

  3. Packages disponibles à partir de sources amont. Chaque source 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 amont sources à 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 amont sources pour votre flux et installez un package à partir d’une source 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 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

Lors de l’activation de amont sources, il est important de noter que la publication d’une version de package qui existe déjà dans une source amont n’est pas possible. Par exemple, si vous activez le NuGet.org 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 amont, vous devez suivre les étapes suivantes :

  1. Désactivez la source amont appropriée.
  2. Publiez votre package.
  3. Réactivez la source 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 échoue amont source, les métadonnées des packages du même protocole ne peuvent plus être actualisées. Pour case activée l’état d’intégrité de vos sources 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 le dernier état de synchronisation des sources amont.

  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 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 le amont source 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.

Foire aux questions

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 de amont sources deviennent disponibles en aval dès qu’ils sont publiés. Toutefois, le package apparaît uniquement dans l’interface utilisateur de votre flux une fois qu’il a été ingéré. L’ingestion est déclenchée lorsqu’un lecteur de flux et en amont (collaborateur) ou version ultérieure installe la version du package à partir de amont.

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 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 à partir de 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 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.