Aller au contenu principal

Checklist Nouveau Projet .NET

Liste de vérification complète pour démarrer un nouveau projet .NET avec notre stack technique.

📋 Phase 1 : Initialisation du projet

Configuration Git

  • Créer le repository sur Azure DevOps / GitHub
  • Cloner le repository localement
  • Copier le template .gitignore pour .NET
    cp /path/to/templates/gitignore-dotnet .gitignore

Structure du projet

  • Créer la solution .NET
    dotnet new sln -n VotreProjet
  • Créer les projets nécessaires
    dotnet new webapi -n VotreProjet.Api
    dotnet new classlib -n VotreProjet.Domain
    dotnet new classlib -n VotreProjet.Infrastructure
  • Ajouter les projets à la solution
    dotnet sln add **/*.csproj

📦 Phase 2 : Configuration NuGet

Fichier nuget.config

  • Copier le template nuget.config
    cp /path/to/templates/nuget.config nuget.config
  • Vérifier le contenu (doit contenir uniquement les sources, pas de credentials)
  • Committer le fichier
    git add nuget.config
    git commit -m "Add NuGet configuration"

Configuration locale des credentials

  • Sur votre poste de dev, configurer les credentials Nexus

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

    Ou manuellement :

    dotnet nuget add source https://nexus.homelab.j-it.be/repository/nuget-prerelease/index.json \
    --name nexus-prerelease \
    --username USERNAME \
    --password PASSWORD \
    --store-password-in-clear-text
  • Vérifier la configuration

    dotnet nuget list source
  • Tester le restore

    dotnet restore

🐳 Phase 3 : Docker

Dockerfiles

  • Créer un Dockerfile pour chaque projet à déployer

    FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443

    FROM base AS final
    WORKDIR /app
    COPY . .
    ENTRYPOINT ["dotnet", "VotreProjet.dll"]
  • Tester le build Docker localement

    dotnet publish -c Release -o ./publish
    docker build -t votreprojet:test ./publish
    docker run -p 8080:80 votreprojet:test

Docker Compose (optionnel pour dev)

  • Créer un docker-compose.yml pour le développement local
  • Tester le démarrage avec docker-compose
    docker-compose up

🔄 Phase 4 : Pipeline Azure DevOps

Service Connections

  • Vérifier que le service connection vers Azure Container Registry existe
    • Aller dans Project SettingsService connections
    • Chercher le connection pour votre ACR
    • Noter l'ID du service connection

Créer le pipeline

  • Copier le template de pipeline

    cp /path/to/templates/azure-pipelines-docker.yml azure-pipelines.yml
  • Adapter les variables dans azure-pipelines.yml :

    • dockerRegistryServiceConnection : ID du service connection
    • imageRepository : nom de votre application
    • containerRegistry : URL de votre ACR
  • Adapter les étapes de publish/docker pour vos projets

  • Committer le pipeline

    git add azure-pipelines.yml
    git commit -m "Add Azure DevOps pipeline"
    git push

Créer le pipeline dans Azure DevOps

  • Dans Azure DevOps, aller dans PipelinesNew pipeline
  • Sélectionner votre repository
  • Choisir "Existing Azure Pipelines YAML file"
  • Sélectionner azure-pipelines.yml
  • Sauvegarder (ne pas encore exécuter)

Configuration des agents (si nouveaux agents)

  • Vérifier que les agents sont en ligne dans le pool jit-azure-devops-agents
  • Si nouveaux agents : configurer NuGet avec Ansible
    ansible-playbook scripts/ansible/configure-nuget-agents.yml

🚀 Phase 5 : Premier déploiement

Créer la première version

  • Créer une branche de version

    git checkout -b docker/1.0.0
    git push origin docker/1.0.0
  • Vérifier que le pipeline se déclenche automatiquement

  • Surveiller l'exécution du pipeline dans Azure DevOps

  • Corriger les erreurs éventuelles

  • Vérifier que les images Docker sont bien poussées vers ACR

    az acr repository list --name votreregistry
    az acr repository show-tags --name votreregistry --repository votre-app/votre-projet

📚 Phase 6 : Documentation

README du projet

  • Créer un README.md avec :
    • Description du projet
    • Prérequis
    • Instructions de build local
    • Instructions de déploiement
    • Architecture technique

Documentation de déploiement

  • Documenter les variables d'environnement nécessaires
  • Documenter la configuration Docker/Kubernetes
  • Créer un guide de déploiement pour la production

🧪 Phase 7 : Tests et qualité

Tests unitaires

  • Créer des projets de tests

    dotnet new xunit -n VotreProjet.Tests
    dotnet sln add VotreProjet.Tests/VotreProjet.Tests.csproj
  • Ajouter des étapes de test dans le pipeline

    - task: DotNetCoreCLI@2
    displayName: 'Run tests'
    inputs:
    command: 'test'
    projects: '**/*Tests.csproj'
    arguments: '--configuration Release --collect:"XPlat Code Coverage"'

Analyse de code (optionnel)

  • Configurer SonarQube/SonarCloud
  • Ajouter l'analyse au pipeline

🔒 Phase 8 : Sécurité

Secrets et configuration

  • Vérifier qu'aucun secret n'est dans le code source
  • Configurer Azure Key Vault (si nécessaire)
  • Utiliser des variables de pipeline pour les secrets

Scan de vulnérabilités

  • Configurer le scan des dépendances NuGet
  • Vérifier les CVE dans les packages
    dotnet list package --vulnerable

✅ Phase 9 : Validation finale

Checklist de validation

  • Le code build sans erreur en local
  • Le code build sans erreur dans le pipeline
  • Les images Docker sont créées correctement
  • Les images sont poussées vers ACR
  • La documentation est à jour
  • Les tests passent
  • Aucun secret dans le code source
  • Le .gitignore est correct
  • Les credentials NuGet ne sont pas committés

Review

  • Faire une review du code avec l'équipe
  • Valider l'architecture technique
  • Valider les choix de déploiement

📝 Templates et ressources

Fichiers à copier

TemplateEmplacementDestination
nuget.config/static/templates/nuget.configRacine du projet
.gitignore/static/templates/gitignore-dotnetRacine du projet
azure-pipelines.yml/static/templates/azure-pipelines-docker.ymlRacine du projet
DockerfileÀ créer manuellementChaque projet à déployer

Scripts utiles

  • Setup NuGet : ./scripts/dotnet/setup-nuget-credentials.sh
  • Setup nouveau projet : ./scripts/dotnet/setup-new-dotnet-project.sh
  • Config agents Ansible : ansible-playbook scripts/ansible/configure-nuget-agents.yml

🔗 Liens utiles

💡 Tips

Automatisation

Utilisez le script setup-new-dotnet-project.sh pour automatiser les étapes 1 et 2 :

./scripts/dotnet/setup-new-dotnet-project.sh mon-projet
Attention aux credentials

Ne JAMAIS committer :

  • Les credentials Nexus
  • Les connection strings de production
  • Les clés d'API
  • Les certificats

Utilisez toujours Azure Key Vault ou des variables de pipeline sécurisées.

Convention de nommage

Branches de version : docker/X.Y.Z

  • Exemple : docker/1.0.0, docker/1.2.3
  • Déclenche automatiquement le pipeline
  • Crée les tags Docker : X.Y.Z.BUILD et latest