我正在研究一个 TFS 构建定义,该定义通过使用此处发布的代码启动另一个构建:当一个团队构建成功时将另一个团队构建排队
我对帖子底部的前几条评论感兴趣。基本上,我只想将第一个版本号传递给下一个版本。
将 XAML 模板更改为传递 anIBuildRequest
而不是IBuildDefinition
...
<Sequence.Variables>
<Variable x:TypeArguments="mtbc:IBuildDefinition" Default="[BuildServer.GetBuildDefinition(BuildDetail.TeamProject, buildChainItem)]" Name="ChainedBuildDefinition" />
<Variable x:TypeArguments="mtbc:IBuildRequest" Default="[BuildServer.CreateBuildRequest(ChainedBuildDefinition.Uri)]" Name="ChainedBuildRequest" />
<Variable x:TypeArguments="mtbc:IQueuedBuild" Default="[BuildServer.QueueBuild(ChainedBuildRequest)]" Name="QueuedChainedBuild" />
</Sequence.Variables>
更棘手的是将当前内部版本号添加到ProcessParameters
新的IBuildRequest
.
我可以看到如何使用上面类似的Default
属性添加代码行<Variable>
,但似乎每一行都必须返回一些东西。但是我想运行的一些行只是调用一个没有返回值的方法,例如在将新元素添加到ProcessParameters
字典中时。这是我尝试过的...
<Sequence.Variables>
<Variable x:TypeArguments="mtbc:IBuildDefinition" Default="[BuildServer.GetBuildDefinition(BuildDetail.TeamProject, buildChainItem)]" Name="ChainedBuildDefinition" />
<Variable x:TypeArguments="mtbc:IBuildRequest" Default="[BuildServer.CreateBuildRequest(ChainedBuildDefinition.Uri)]" Name="ChainedBuildRequest" />
<Variable x:TypeArguments="x:String" Default="[ChainedBuildRequest.ProcessParameters]" Name="NextProcessParameters" />
<!-- deserialize processparameters string into dictionary -->
<Variable x:TypeArguments="scg:IDictionary(x:String, x:Object)" Default="[WorkflowHelpers.DeserializeProcessParameters(NextProcessParameters)]" Name="DeserializedProcessParameters" />
<!-- *** add new parameter, but no return value, so will not work *** -->
<Variable x:TypeArguments="x:String" Default="[DeserializedProcessParameters.Add("PreviousBuildNumber", "1.1.1.1")]" Name="AddNewParameter" />
<!-- serialize back into a string -->
<Variable x:TypeArguments="x:String" Default="[WorkflowHelpers.SerializeProcessParameters(DeserializedProcessParameters)]" Name="SerializedProcessParameters" />
<!-- *** also no return value, so will not work *** -->
<Variable x:TypeArguments="x:String" Default="ChainedBuildRequest.ProcessParameters = SerializedProcessParameters" Name="UpdateProcessParameters" />
<Variable x:TypeArguments="mtbc:IQueuedBuild" Default="[BuildServer.QueueBuild(ChainedBuildRequest)]" Name="QueuedChainedBuild" />
</Sequence.Variables>
所以,我的第一个问题......是否可以在序列变量中运行没有返回值的代码行?
我对这些技术很陌生,所以可能错过了一些基本的东西。如果有人有不同的方法将以前的内部版本号传递给下一个版本,那也将不胜感激。
非常感谢,如果你能走到这一步:-)