首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在测试失败时从TFS构建进行开发

防止在测试失败时从TFS构建进行开发
EN

Stack Overflow用户
提问于 2016-06-30 16:24:55
回答 2查看 378关注 0票数 0

我正在使用现有的TFS构建和发布管理设置,对它使用的XAML构建系统(现已弃用)知之甚少。

在下面的构建模板中的这个代码片段中,我的项目被构建,运行测试,然后启动一个序列,将编译后的项目移交给TFS Release Management进行部署。

代码语言:javascript
复制
<Sequence DisplayName="Overall build process">
<mtbac:SetBuildNumber DisplayName="Update build number" BuildNumberFormat="[BuildNumberFormat]" />
<mtbwa:AgentScope DisplayName="Run on agent" MaxExecutionTime="[AgentSettings.GetValue(Of TimeSpan)(&quot;MaxExecutionTime&quot;, new System.TimeSpan(0,0,0))]" MaxWaitTime="[AgentSettings.GetValue(Of TimeSpan)(&quot;MaxWaitTime&quot;, new System.TimeSpan(4,0,0))]" ReservationSpec="[AgentSettings.CreateAgentReservationSpec()]">
  <mtbac:InitializeEnvironment DisplayName="Initialize environment" />
  <mtbat:TfGetSources DisplayName="Get sources from Team Foundation Version Control" CleanWorkspace="[CleanWorkspace]" CreateLabel="[CreateLabel]" VersionOverride="[GetVersion]" />
  <mtba:AssociateChanges DisplayName="Associate the changesets that occurred since the last good build" UpdateWorkItems="[UpdateAssociatedWorkItems]" />
  <TryCatch DisplayName="Try" mtbwt:BuildTrackingParticipant.Importance="Low">
    <TryCatch.Try>
      <Sequence DisplayName="Compile, Test and Publish">
        <mtba:RunScript DisplayName="Run optional script before MSBuild" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" />
        <mtba:RunMSBuild DisplayName="Run MSBuild" OutputLocation="[OutputLocation]" CleanBuild="[CleanBuild]" CommandLineArguments="[String.Format(&quot;/p:SkipInvalidConfigurations=true {0}&quot;, AdvancedBuildSettings.GetValue(Of String)(&quot;MSBuildArguments&quot;, String.Empty))]" ConfigurationsToBuild="[ConfigurationsToBuild]" ProjectsToBuild="[ProjectsToBuild]" ToolPlatform="[AdvancedBuildSettings.GetValue(Of String)(&quot;MSBuildPlatform&quot;, &quot;Auto&quot;)]" RunCodeAnalysis="[AdvancedBuildSettings.GetValue(Of String)(&quot;RunCodeAnalysis&quot;, &quot;AsConfigured&quot;)]" />
        <mtba:RunScript DisplayName="Run optional script after MSBuild" FilePath="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" Arguments="[AdvancedBuildSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" />
        <mtba:RunScript DisplayName="Run optional script before Test Runner" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptPath&quot;, String.Empty)]" Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PreActionScriptArguments&quot;, String.Empty)]" />
        <mtba:RunAgileTestRunner DisplayName="Run VS Test Runner" Enabled="[Not AdvancedTestSettings.GetValue(Of Boolean)(&quot;DisableTests&quot;, false)]" TestSpecs="[AutomatedTests]" ConfigurationsToTest="[ConfigurationsToBuild]" />
        <mtba:RunScript DisplayName="Run optional script after Test Runner" FilePath="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptPath&quot;, String.Empty)]" Arguments="[AdvancedTestSettings.GetValue(Of String)(&quot;PostActionScriptArguments&quot;, String.Empty)]" />
        <mtba:RunTestImpact DisplayName="Get Impacted Tests" Enabled="[AdvancedTestSettings.GetValue(Of Boolean)(&quot;AnalyzeTestImpact&quot;, true)]" />
        <Sequence DisplayName="Process the release">
          <Sequence.Variables>
            <Variable x:TypeArguments="x:String" Name="buildDirectory" />
          </Sequence.Variables>
          <mtbwa:GetBuildDirectory DisplayName="Get the Build Directory" Result="[buildDirectory]" />
          <If Condition="[ProcessReleaseTokens]" DisplayName="If ProcessReleaseTokens is set">
            <If.Then>
              <Sequence DisplayName="Initialize tokens">

目前,在测试失败的情况下,序列步骤仍然执行,并且部署损坏的构建。我启用了“在测试失败时失败构建”选项。

当测试失败时,我需要阻止部署,要么停止运行发布步骤,要么修改发布管理中的流程(我倾向于在构建失败的情况下根本不接触发布管理)。

EN

回答 2

Stack Overflow用户

发布于 2016-07-01 18:06:15

您可以让您的构建简单地输出WebDeploy包(例如DeployTarget=Package),然后在工作流结束时使用InvokeProcess来运行powershell脚本来执行实际部署。

票数 0
EN

Stack Overflow用户

发布于 2016-07-06 17:38:30

您可以通过更新XAML定义模板来实现这一点。有关详细信息,请参阅此问题中的答案:Release management releasing failed builds also - Triggering release from failed builds

在这里引用它,以防链接不起作用:

将"If ReleaseBuild is Set“和"If ReleaseBuild is Set”的条件If Not移动到: ReleaseBuild

  • (treatTestFailureAsBuildFailure = False Or (treatTestFailureAsBuildFailure BuildDetail.TestStatus <> BuildDetail.CompilationStatus <> ReleaseBuild "If ReleaseBuild is Set“)活动的Else部分,将WriteBuildMessage的消息更改为:“跳过执行,因为未设置ReleaseBuild,或者某些测试失败,或者编译具有failed"

  • Finally签入模板,仅此而已,将无法部署失败的生成。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38117694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档