J'utilise la fabuleuse gemme albacore avec rake pour créer un nouveau projet .NET. Mon organisation utilise toujours NAnt, et il y a beaucoup de gens qui s'attendent à voir un fichier journal lorsque le script de construction s'exécute. Comment puis-je sauvegarder la sortie de la tâche msbuild qui est sauvegardée dans STDOUT dans un fichier journal?Comment acheminer ma sortie msbuild vers un fichier journal à partir de rake
Répondre
J'ai trouvé une solution. Nous n'avons pas vraiment besoin d'un fichier journal de construction pour notre serveur CI (hudson), mais il serait quand même agréable d'avoir des fichiers physiques à vérifier quand la construction s'exécute localement, particulièrement quand nous faisons la danse de check-in et la construction échoue. Heureusement, les gars d'albacore étaient assez intelligents pour créer une option ".parameters", qui peut être utilisée avec n'importe quelle tâche de l'outil de ligne de commande pour ajouter des paramètres qui ne sont pas explicitement gérés par cette tâche. Par exemple, vous pouvez ajouter un paramètre à la tâche msbuild pour spécifier un fichier journal pour MSBuild. Et il va un petit quelque chose comme ceci:
BUILD_REPORTS = 'BuildReports'
MSBUILD_EXE = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"
directory BUILD_REPORTS
CLEAN.include BUILD_REPORTS
task :default => [:build]
desc "Build the solution"
msbuild :build => BUILD_REPORTS do |msb|
msb.properties :configuration => :Debug
msb.path_to_command = MSBUILD_EXE
msb.targets :Clean, :Build
msb.solution = "./mysolution.sln"
msb.parameters "/l:FileLogger,Microsoft.Build;logfile=" + log_file("build")
end
def log_file(log_file_name)
BUILD_REPORTS + log_file_name + ".log"
end
Notre rakefile est un peu plus complexe que cela, car il doit faire plus de choses, mais vous voyez l'idée.
Comment exécutez-vous vos tâches rake? à partir d'un serveur CI? à partir de la ligne de commande? ou ? –
Hi Derick - en ce moment, je cours depuis la ligne de commande, et très bientôt nous l'aurons branché à hudson. Nous avons convaincu les gens que hudson irait bien sans un fichier journal physique de l'exécution rake. Et je pense que j'ai rassasié l'envie de fichiers journaux en utilisant l'option ".parameters" sur mes tâches msbuild et nunit pour consigner la sortie. J'AIME le germon! Vous avez fait un excellent travail avec ça. – dalesmithtx
cool. oui, je ne trouve pas vraiment besoin d'un fichier journal de hudson, car hudson capture tous les STDOUT dans ses propres journaux. mais si vous en aviez besoin à partir d'une ligne de commande, vous pourriez juste rediriger STDOUT dans un fichier: rake >> build.log –