MsBuild - CreateProperty bug
Snažím se automatizovat provádění buildů na našem dev serveru. Pro CI používáme free verzi TeamCity.
Pro řízení buildu jsem nakonec vybral MsBuild. Zatím jsem jen na začátku a funkcionalita skriptu je dost omezená. Skripty momentálně umí provést release build, deployment a případnou kopii do cílového adresáře. Taky jsem zprovoznil twitter notifikaci o výsledku buildu.
Ještě potřebuji změnit některé hodnoty v config souboru a případně udělat backup do podadresáře pojmenovaném podle file version.
Ale to není to hlavní na co jsem chtěl dnes poukázat. Trochu jsem měl trable s globalní Property. V jednom Target jsem potřeboval měnit text pro tweet, tak jsem použil toto:
<PropertyGroup>
<TweetMessage>Cubic.WebServices.API build is OK!</TweetMessage>
</PropertyGroup>
<Target Name="OnError">
<Message Text="TARGET: ONERROR"/>
<CreateProperty Value="Cubic.WebServices.API build Error!">
<Output TaskParameter="Value" PropertyName="TweetMessage"/>
</CreateProperty>
<CallTarget Targets="Twitter" />
</Target>
ale tohle nefunguje a hodnota zůstala nazměněná. Po googlování jsem narazil na tento odkaz , který objasňuje tento problém a nabízí taktéž jednoduché řešení. Dané řešení vypadá takto:
<PropertyGroup>
<TweetMessage>OK: ***.WebServices.API</TweetMessage>
<TweetMessageError>ERROR: ***.WebServices.API</TweetMessageError>
</PropertyGroup>
<Target Name="OnError-SetTweet">
<CreateProperty Value="$(TweetMessageError)">
<Output TaskParameter="Value" PropertyName="TweetMessage"/>
</CreateProperty>
</Target>
<Target Name="OnError">
<Message Text="TARGET: ONERROR"/>
<CallTarget Targets="OnError-SetTweet" />
<CallTarget Targets="Twitter" />
</Target>