私は既存のTFSビルドとリリース管理の設定で作業していますが、現在使用されているXAMLビルドシステムについてはほとんど分かりません。テストの失敗時にTFSビルドからの開発を防ぎます
私のプロジェクトの下にあるビルドテンプレートのスニペットでは、テストが実行され、コンパイルされたプロジェクトをTFSリリース管理に渡して展開するシーケンスが開始されます。
<Sequence DisplayName="Overall build process">
<mtbac:SetBuildNumber DisplayName="Update build number" BuildNumberFormat="[BuildNumberFormat]" />
<mtbwa:AgentScope DisplayName="Run on agent" MaxExecutionTime="[AgentSettings.GetValue(Of TimeSpan)("MaxExecutionTime", new System.TimeSpan(0,0,0))]" MaxWaitTime="[AgentSettings.GetValue(Of TimeSpan)("MaxWaitTime", 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)("PreActionScriptPath", String.Empty)]" Arguments="[AdvancedBuildSettings.GetValue(Of String)("PreActionScriptArguments", String.Empty)]" />
<mtba:RunMSBuild DisplayName="Run MSBuild" OutputLocation="[OutputLocation]" CleanBuild="[CleanBuild]" CommandLineArguments="[String.Format("/p:SkipInvalidConfigurations=true {0}", AdvancedBuildSettings.GetValue(Of String)("MSBuildArguments", String.Empty))]" ConfigurationsToBuild="[ConfigurationsToBuild]" ProjectsToBuild="[ProjectsToBuild]" ToolPlatform="[AdvancedBuildSettings.GetValue(Of String)("MSBuildPlatform", "Auto")]" RunCodeAnalysis="[AdvancedBuildSettings.GetValue(Of String)("RunCodeAnalysis", "AsConfigured")]" />
<mtba:RunScript DisplayName="Run optional script after MSBuild" FilePath="[AdvancedBuildSettings.GetValue(Of String)("PostActionScriptPath", String.Empty)]" Arguments="[AdvancedBuildSettings.GetValue(Of String)("PostActionScriptArguments", String.Empty)]" />
<mtba:RunScript DisplayName="Run optional script before Test Runner" FilePath="[AdvancedTestSettings.GetValue(Of String)("PreActionScriptPath", String.Empty)]" Arguments="[AdvancedTestSettings.GetValue(Of String)("PreActionScriptArguments", String.Empty)]" />
<mtba:RunAgileTestRunner DisplayName="Run VS Test Runner" Enabled="[Not AdvancedTestSettings.GetValue(Of Boolean)("DisableTests", false)]" TestSpecs="[AutomatedTests]" ConfigurationsToTest="[ConfigurationsToBuild]" />
<mtba:RunScript DisplayName="Run optional script after Test Runner" FilePath="[AdvancedTestSettings.GetValue(Of String)("PostActionScriptPath", String.Empty)]" Arguments="[AdvancedTestSettings.GetValue(Of String)("PostActionScriptArguments", String.Empty)]" />
<mtba:RunTestImpact DisplayName="Get Impacted Tests" Enabled="[AdvancedTestSettings.GetValue(Of Boolean)("AnalyzeTestImpact", 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">
現在、テストに失敗した場合、シーケンスステップが実行され、壊れたビルドが展開されます。私は、 "Fail build on test failure"オプションを有効にしました。
テストが失敗した場合、リリース手順を実行しないようにするか、リリース管理でプロセスを修正することによって、展開を防止する必要があります(ビルドに失敗した場合はリリース管理に全く触れないように傾いています)。
TFSに統合されたリリース管理を使用していますか? –
@ Eddie-MSFTこれは、Visual Studio 2015クライアントの以前のバージョンです。私たちは将来、新しいTFS Build vnextにアップグレードするつもりですが、その間の回避策を期待していました。 –