我有一个部署代码的自定义构建,我需要指定构建质量的部署过程。目前我必须输入质量,例如“准备部署”。我想添加一个自定义流程参数下拉列表,其中包含已为项目设置的所有构建质量。
最初,我开始创建自定义活动以获得构建质量。 TFS有一种方法可以使用:
buildServer.GetBuildQualities(teamProjectName)
但是,自定义活动需要传入TeamProjectName。这是我感到困惑的地方,我不明白如何传递这个参数。
我们有很多项目,我想对所有项目使用相同的构建定义,因此我无法对团队项目名称进行硬编码。
答案 0 :(得分:0)
工作流程中有一个BuildDetail
变量(类型为IBuildDetail
)。它有一个TeamProject
属性,其中包含正在运行的当前构建工作流的团队项目的名称。
您应该为活动添加String
输入参数,并将XAML设计器中的值设置为BuildDetail.TeamProject
,以便传入。
答案 1 :(得分:0)
作为使用自定义活动的替代方法,可以使用简单的分配来操作BuildDetail.Quality
。例如,您可以将以下序列放在Finally
元素的Try Compile and Test
子句中:
<Sequence DisplayName="Set Build Quality" >
<If Condition="[BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded]" DisplayName="BuildDetail.CompilationStatus = BuildPhaseStatus.Succeeded" >
<If.Then>
<Assign DisplayName="Assign Build Quality Ready">
<Assign.To>
<OutArgument x:TypeArguments="x:String">[BuildDetail.Quality]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:String">["Ready for Initial Test"]</InArgument>
</Assign.Value>
</Assign>
</If.Then>
<If.Else>
<Assign DisplayName="Assign Build Quality Under Investigation">
<Assign.To>
<OutArgument x:TypeArguments="x:String">[BuildDetail.Quality]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:String">Under Investigation</InArgument>
</Assign.Value>
</Assign>
</If.Else>
</If>
</Sequence>