2015-04-24 35 views
1

編輯TeamCity中構建配置的設置時,是否有解析XML文件的方法來生成稍後將在構建步驟中使用的環境變量? XML文件我想分析(假設version.xml)中包含的是要在以後使用的版本號:TeamCity構建配置從XML填充環境變量

<Version> 
    <Major>2015</Major> 
    <Minor>2</Minor> 
</Version> 

而且我希望能夠用%env.VersionNumber%後得到"2015.2"

+0

你在做什麼? Linux呢?視窗?此外,它是否必須是一個環境變量?如果有其他方式傳遞版本號,它可以工作嗎? – zck

回答

1

是的你可以。您可以解析您想要的xml,並在第1個構建步驟中設置屬性。你可以閱讀Teamcity's confluence page瞭解更多詳情。

您可以使用您在任何後續構建步驟中設置的屬性。您甚至可以將它傳遞給後續構建。

,只要你想在bash腳本

echo "##teamcity[setParameter name='env.build.version.major' value='$xml.parsed.value.major']" 
echo "##teamcity[setParameter name='env.build.version.minor' value='$xml.parsed.value.minor']" 
echo "##teamcity[setParameter name='env.build.version' value='${xml.parsed.value.major}.${$xml.parsed.value.minor}']" 
2

最後我用一個PowerShell腳本解析您可以設置儘可能多的屬性,例如:

$Source = @" 
using System; 
using System.Xml.Linq; 

namespace VersionTools 
{ 
    public static class XmlVersionParser 
    { 
     public static string GetVersion(string xml) 
     { 
      var doc = XDocument.Load(xml); 
      var major = doc.Root.Element("Major").Value; 
      var minor = doc.Root.Element("Minor").Value; 
      return string.Format("{0}.{1}", major, minor); 
     } 
    } 
} 
"@ 

Add-Type -ReferencedAssemblies ("System.Xml", "System.Xml.Linq") -TypeDefinition $Source -Language CSharpVersion3 

$xmlVersion = [VersionTools.XmlVersionParser]::GetVersion(".\version.xml") 
Write-Host "##teamcity[setParameter name='env.XmlVersion' value='$xmlVersion']" 

然後,在最後一行,我用Biswajit_86的推薦使用##teamcity

相關問題