Je reprends cette définition
Ant est un projet open source de la fondation Apache écrit en Java qui vise le développement d'un logiciel d'automatisation des opérations répétitives tout au long du cycle de développement logiciel.
make est à Unix ce que Ant est au Java,
NAnt (au même titre que MSBuild) est au .NET ce que Ant est au Java.
J'ai utilisé NAnt, car il est très proche de Ant et donc s'adresse à un publique
plus large que MSBuild.
Voici un cas concret que NAnt nous aidera à résoudre :
- J'ai un web service qui doit être déployé sur IIS, qui est dépendant d'une base de donnée.
- J'ai un client console qui accède a ce web service.
- J'ai fini de développer ma solution sur mon poste,
- Je crée 2 installeurs, un pour le web service, un pour le client.
- je vais copier tous les fichiers sur mon environnement de test.
- je configure la base de donnée sur l'environnement de test.
- J'installe les msi à la main sur l'environnement de test.
- Je lance les tests d'intégration (ou manuel)
Et là c'est le drame ! Ca ne marche pas comme prévu (et je vous l'assure ça ne marchera jamais comme prévu),
je corrige le problème sur mon environnement de développement et recommence à l'étape 5.
Les étapes 5 6 7 8, peuvent facilement faire perdre 2 jours de travail sur 5 !
En effet, le temps de transférer les msi, installer les msi, configurer la base... ajouter à cela les erreurs d'inatention... Pour une architecture pas forcément très complexe je perd près de 5 a 10 minutes à chaque fois.
Ajouter à ça un changement de contexte important pour le développeur (on le sort du nuage sur lequel il était pendant qu'il développait, pour faire une tâche mécanique).
Je pourrais facilement ajouter d'autres étapes à faire suivant l'ampleur du projet :
par exemple nous devons refaire ces 4 étapes s'il y a plusieurs environnements de test.
Pourquoi utiliser NAnt (ou Ant) plutot que make :
make est un outils orienté shell et plutôt rudimentaire.
Ant est beaucoup plus complet, il permet en particulier d'appeler des méthodes pour l'automatisation des tâches.
En quoi il va s'intégrer avec un Serveur d'intégration comme Cruise Control ?
Non seulement Ant automatisera le déploiement sur le serveur d'intégration, mais grâce au serveur d'intégration
le développeur n'aura même pas à s'occuper de transférer les sources, et les binaires sur le serveur.
Un simple commit sur son source code control suffira à déclencher tout le processus, et avoir des rapports détaillés sur ce qu'il s'est passé (sur une interface web).
De plus, les tâches à effectuer pourront être codées dans son langage de développement adoré (code qui pourra aussi être testé),
il ne sortira ainsi pas de son environnement de développement :)
Cruise Control sera traité dans un autre post.
Voyons en pratique comment ça marche !
DLL
Comme d'habitude n'hésitez à me signaler les erreurs d'orthographes... :p