L'un de mes projets de build TeamCity v7.0 repose sur l'utilisation d'un diff entre la branche de développement actuelle et la branche principale pour déterminer ce qui doit être exécuté. J'ai écrit un petit script qui utilise quelque chose comme:
git diff Origin/master..Origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles
Malheureusement, le journal de génération indique que git diff
ne fonctionne pas. Quand je vais dans le répertoire buildAgent/work de ce projet, je vois qu'il n'y a pas de .git
dossier, il ne peut donc pas effectuer les opérations git requises.
J'ai mis teamcity.git.use.local.mirrors=true
dans le buildAgent.properties
fichier comme mentionné à TW-1587 , mais cela ne semble d'aucune façon aider.
Puis-je faire quelque chose pour changer la liste des fichiers entre deux branches dans un script pour mon étape de construction?
Essayez de changer le mode d'extraction VCS en "Toujours extraire les fichiers sur l'agent" comme indiqué ici . Cela devrait donner au script de build un accès au dossier .git.
La réponse de @Mike Two est correcte, il faut configurer la racine VCS pour utiliser le mode Checkout automatiquement sur l'agent -pas- sur le serveur. Les documents TC ne mentionnent pas que ce paramètre requis est masqué par défaut comme "avancé". Voici donc une image de ce qu'il faut rechercher.
Pour info, mon erreur d'étape spécifique de la solution VS2013 provenait de MSBuild, comme ci-dessous. J'utilise le dernier TeamCity Enterprise 9.0 EAP (build 31963). [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]
//Éditer; Je ne savais pas comment ajouter cela à un commentaire.