기존 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">
현재 테스트에 실패하면 시퀀스 단계가 계속 실행되고 깨진 빌드가 배포됩니다. "테스트 실패시 빌드 실패"옵션을 사용할 수 있습니다.
테스트 실패가있을 때 릴리스 단계를 중지하거나 릴리스 관리에서 프로세스를 수정하여 배포를 방지해야합니다 (빌드가 실패한 경우 릴리스 관리에 전혀 신경 쓰지 않는쪽으로 기울이고있었습니다).
TFS에 통합 된 릴리스 관리를 사용하고 있습니까? –
@ Eddie-MSFT 그것은 Visual Studio 2015 클라이언트가있는 이전 버전입니다. 우리는 앞으로 새로운 TFS Build vnext로 업그레이드 할 예정이지만 그 동안이 문제를 해결하기위한 희망을 갖고있었습니다. –