【问题标题】:TeamCity Build Configuration to populate environment variable from XMLTeamCity 构建配置以从 XML 填充环境变量
【发布时间】:2015-05-01 23:43:47
【问题描述】:

在 TeamCity 中编辑构建配置的设置时,是否可以解析 XML 文件以生成稍后将在构建步骤中使用的环境变量?我要解析的 XML 文件(比如说 version.xml)包含稍后要使用的版本号:

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

而且我希望以后能够使用%env.VersionNumber% 来获取"2015.2"

【问题讨论】:

  • 你在做什么? Linux?视窗?另外,它必须是环境变量吗?如果有其他方法可以传递版本号,它可以工作吗?

标签: xml teamcity


【解决方案1】:

我最终使用 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

【讨论】:

    【解决方案2】:

    是的,你可以。您可以解析所需的 xml 并在第一个构建步骤中设置属性。你可以阅读Teamcity's confluence page了解更多详情。

    ##teamcity[setParameter name='env.build.version' value='xml.parsed.value']
    

    您可以使用在任何后续构建步骤中设置的属性。您甚至可以将其传递给后续构建。

    您可以根据需要设置任意数量的属性,例如在 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}']"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多