Nous avons dû déployer une nouvelle version d'un projet pour lequel aucun déploiement en production n'avait été réalisé depuis Avril et nous avons eu une mauvaise surprise : impossible de constituer les artifacts, le Release Pipeline était en erreur. En cause, l'échec de la restoration des paquets NuGet lors du build des différents projets. Deux erreurs étaient levées pour chacune des dépendances NuGet des différents projets :
error NU3028: Package '' from source 'https://api.nuget.org/v3/index.json': The repository primary signature's timestamp found a chain building issue: UntrustedRoot: self signed certificate in certificate chain
error NU3037: Package '' from source 'https://api.nuget.org/v3/index.json': The repository primary signature validity period has expired.
Nous avons creusé et nous sommes rendu compte que les certificats des paquets NuGet signés, qui permettent les contrôles de vérification de l’intégrité du contenu, ont expiré le 14 Avril ce qui a rendu leur restauration impossible.
Ce problème concerne les projets .NET 5.0 et .NET 6.0 sur la plupart des distributions Linux, notamment Alpine, Debian et Ubuntu.
La solution apportée par Microsoft et .NET a été de supprimer la validation par certificat des paquets NuGet signés pour les SDK .NET 5.0 et .NET 6.0, cette évolution n'ayant aucun impact sur l'expérience d'un dotnet restore
. Les deux releases correctives sont la version .NET 5.0.202 (nous étions en .NET 5.0.103) et .NET 6 Preview 3, si vous rencontrez le cas il faut donc upgrader la version du SDK utilisée et le dotnet restore
fonctionnera à nouveau, et de ce fait votre build.
Pour plus de détails, vous pouvez consulter le blog d'un de nos collaborateurs, What to do if your Azure DevOps pipeline doesn't publish your .NET project anymore because of errors NU3028 and NU3037? ou l'annonce de NuGet à ce sujet sur GitHub.