Team Build TF10122 грешка при използване на $(BuildAgentId)

Опитвам се да използвам тази папка на компилационен агент за моята дефиниция на компилация...

$(SystemDrive)\Builds\$(BuildAgentId)\VPB

... но получавам следната грешка.

TF10122: Пътят „c:\Builds\$(BuildAgentId)\VPB“ съдържа „$“ в началото на компонент на пътя. Премахнете „$“ и опитайте отново.

Трябва да включа нещо за обозначаване на агента, защото имам два агента за изграждане на сървъра за изграждане.

Опитвам се да запазя пътя кратък, защото InstallShield има неоправдано дълги имена на пътища за модули за сливане (твърде много подпапки и добавя GUIDS към краищата на всичко).

Някаква идея защо това не работи?


person StingyJack    schedule 06.07.2012    source източник
comment
Опитвате ли се да използвате това от TFS-Build или с MSbuild? В случай, че го правите от TFS, можете просто да използвате променливата BuildDirectory, която се разрешава по време на изграждането във вашия C:\Builds\123\VPB   -  person pantelif    schedule 06.07.2012
comment
AFAIK, това все още причинява сблъсък на работното пространство с множество агенти за изграждане.   -  person StingyJack    schedule 06.07.2012
comment
Не, не би трябвало - тъй като $(BuildAgentId) се разрешава в действителния идентификатор по време на изпълнение и TFSBuild го държи в рамките на BuildDirectory.   -  person pantelif    schedule 07.07.2012


Отговори (1)


Уверете се, че вашата дефиниция на компилация и работната директория на агента за компилация са настроени правилно.

Настройване на работна директория на агент за изграждане и работни директории за дефиниране на изграждане

person SoftwareCarpenter    schedule 06.07.2012
comment
Мога да променя пътя в агентите, за да използвам ID на дефиницията, но повече се интересувам защо тази променлива не работи. - person StingyJack; 06.07.2012
comment
Като настроите вашия агент да използва път като $(SystemDrive)\$(BuildAgentId)\$(BuildDefinitionPath), той гарантира, че няма да има проблеми с картографирането на работното пространство или други компилации, които картографират същото местоположение. Ето защо е важно да използвате $(sourcedir) също и в работното си пространство за дефиниции на компилация. Надявам се това да помогне. - person SoftwareCarpenter; 06.07.2012
comment
Предполагам, че опитът да се използва променливата ID на агента за изграждане е валиден само за агента за изграждане? Не мога да намеря ясна документация коя променлива къде е разрешена. - person StingyJack; 06.07.2012
comment
Можете да използвате два типа токени директория Токени или променливи на средата. Променливите на средата се основават на потребителския акаунт, в който сте влезли. Например, вие сте конфигурирали Team Foundation Build Service да работи под акаунт, който се нарича BuildSvcAcct. Посочвате $(HomeDrive)\Builds като работна директория за агент за компилиране на машина за компилиране, работеща под Windows Server 2008. В резултат на това агентът за компилиране обикновено ще използва като своя работна директория физическа директория, която се доближава до следното местоположение: C:\Builds. msdn.microsoft.com/en-us/library/bb399135.aspx - person SoftwareCarpenter; 07.07.2012
comment
Смисълът на проблема е, че очаквам да използвам променлива (посочена на страницата, която току-що свързахте, от раздела, започващ променливи на Team Foundation Build: Можете да използвате следните променливи в работна директория на агент за изграждане...) в Build Определение--› Работно пространство --› Създайте стойност на папката на агент и не работи. Очевидно тези променливи не са достъпни за други модули на агент за изграждане извън диалоговия прозорец със свойства на агента за изграждане. - person StingyJack; 09.07.2012
comment
Тези променливи са променливи на средата, задавани всеки път, когато се изпълнява компилация. Използването на специфични за средата променливи, които се задават по време на изпълнението на компилацията, няма ефект за други компилации. Това ви дава предимството да можете да стартирате компилация и да зададете променливата на средата за изпълнение на компилацията и да не влияете на други дефиниции на компилация, изпълнявани на други машини. По принцип обхватът е ограничен до времето и точната компилация, която изпълнявате. - person SoftwareCarpenter; 15.07.2012
comment
Не мисля, че разбирате смисъла ми. Нямам въпрос какво представляват променливите на средата или за какво са добри. Имам въпрос защо този работи на едно място, а не на друго привидно равно място (компилацията използва и двете почти по едно и също време). Ако се дължи на грешка или дизайнерско решение, това е добре. Но ако не е и съм тъпоглав за някаква концепция, просто искам да знам какво пропускам. - person StingyJack; 16.07.2012