Skip to content

Configuration NuGet avec Nexus

Guide complet pour configurer NuGet avec notre serveur Nexus privé.

📋 Vue d'ensemble

Notre stratégie de configuration NuGet suit une approche de sécurité par séparation :

  • Repository Git : Contient les sources NuGet sans credentials
  • Machines locales : Stockent les credentials dans ~/.nuget/NuGet/NuGet.Config
  • Dotnet CLI : Merge automatiquement les deux configurations

:::tip Principe clé Les credentials ne sont JAMAIS committés dans Git. Ils sont configurés localement sur chaque machine. :::

🏗️ Architecture Nexus

Nous utilisons deux repositories Nexus :

Repository URL Usage
nexus-prerelease https://nexus.homelab.j-it.be/repository/nuget-prerelease/ Packages en développement, versions beta
nexus-releases https://nexus.homelab.j-it.be/repository/nuget-releases/ Packages de production, versions stables

🚀 Configuration initiale

Étape 1 : Configuration du projet (à faire une fois par projet)

Créez un fichier nuget.config à la racine de votre repository :

```xml title="nuget.config"


:::warning Important
Ce fichier **NE DOIT PAS** contenir de credentials. Il sera commité dans Git.
:::

Committez ce fichier :

```bash
git add nuget.config
git commit -m "Add NuGet configuration"
git push

Étape 2 : Configuration des credentials (à faire une fois par machine)

Sur chaque poste de développement et chaque agent Azure DevOps, configurez vos credentials :

# Ajouter les credentials pour nexus-prerelease
dotnet nuget add source https://nexus.homelab.j-it.be/repository/nuget-prerelease/index.json \
  --name nexus-prerelease \
  --username VOTRE_USERNAME \
  --password VOTRE_PASSWORD \
  --store-password-in-clear-text

# Ajouter les credentials pour nexus-releases
dotnet nuget add source https://nexus.homelab.j-it.be/repository/nuget-releases/index.json \
  --name nexus-releases \
  --username VOTRE_USERNAME \
  --password VOTRE_PASSWORD \
  --store-password-in-clear-text

:::info Alternative Vous pouvez aussi utiliser notre script automatisé :

./scripts/dotnet/setup-nuget-credentials.sh

:::

Étape 3 : Vérification

Vérifiez que tout est correctement configuré :

dotnet nuget list source

Vous devriez voir :

Registered Sources:
  1.  nuget.org [Enabled]
      https://api.nuget.org/v3/index.json
  2.  nexus-prerelease [Enabled]
      https://nexus.homelab.j-it.be/repository/nuget-prerelease/index.json
  3.  nexus-releases [Enabled]
      https://nexus.homelab.j-it.be/repository/nuget-releases/index.json

🔧 Configuration des agents Azure DevOps

Méthode manuelle

Sur chaque agent, en SSH :

ssh azureuser@agent-ip
# Puis exécuter les commandes de l'étape 2

Méthode automatisée (Ansible)

Utilisez le playbook fourni pour configurer tous vos agents en une seule commande :

ansible-playbook scripts/ansible/configure-nuget-agents.yml

Le playbook vous demandera vos credentials Nexus et les configurera sur tous les agents.

📂 Emplacement des fichiers de configuration

Windows

  • Utilisateur : %APPDATA%\NuGet\NuGet.Config
  • Machine : %ProgramData%\NuGet\Config\

Linux / macOS

  • Utilisateur : ~/.nuget/NuGet/NuGet.Config
  • Machine : /etc/nuget/NuGet.Config

🐛 Troubleshooting

Erreur 401 (Unauthorized)

Symptôme :

Error NU1301: Unable to load the service index for source https://nexus.homelab.j-it.be/...
Response status code does not indicate success: 401 (Unauthorized).

Cause : Credentials manquants ou incorrects.

Solution : 1. Vérifiez que les credentials sont bien configurés : bash cat ~/.nuget/NuGet/NuGet.Config 2. Reconfigurez les credentials si nécessaire (voir Étape 2)

Erreur 404 (Not Found)

Symptôme :

Error NU1301: Unable to load the service index for source https://nexus.homelab.j-it.be/...
Response status code does not indicate success: 404 (Not Found).

Cause : URL incorrecte ou repository inexistant dans Nexus.

Solution : 1. Vérifiez l'URL dans votre nuget.config 2. Testez l'accès au repository : bash curl -I https://nexus.homelab.j-it.be/repository/nuget-prerelease/index.json

Le pipeline Azure DevOps utilise une mauvaise source

Cause : Ancien fichier nuget.config dans le repo ou configuration obsolète sur les agents.

Solution : 1. Recherchez les vieux fichiers de config : bash find . -name "nuget.config" -o -name "NuGet.Config" 2. Supprimez les doublons et gardez uniquement celui à la racine 3. Vérifiez la config sur les agents : bash ssh azureuser@agent-ip "dotnet nuget list source"

Packages non trouvés alors que la config semble correcte

Cause : Cache NuGet corrompu.

Solution :

# Nettoyer le cache
dotnet nuget locals all --clear

# Réessayer le restore
dotnet restore

📝 Checklist nouveau projet

Utilisez cette checklist à chaque nouveau projet .NET :

  • [ ] Copier le fichier nuget.config template (disponible dans /static/templates/nuget.config)
  • [ ] Ajouter **/NuGet.Config au .gitignore (pour éviter de committer les credentials)
  • [ ] Configurer les credentials sur votre poste de dev
  • [ ] Si vous avez des nouveaux agents : configurer les credentials avec Ansible
  • [ ] Tester dotnet restore en local
  • [ ] Créer le pipeline Azure DevOps (voir guide pipelines)
  • [ ] Lancer un premier build pour valider

🔗 Voir aussi