다음을 통해 공유


LabDefaultTemplate 워크플로 작업

 

이 항목은 LabDefaultTemplate.11.xaml 파일의 Windows 워크플로 작업에 대해 설명합니다. LabDefaultTemplate은 랩 환경에서 응용 프로그램을 빌드, 배포 및 테스트할 수 있는 Lab Management 워크플로 프로세스를 정의합니다. Windows 워크플로에 대한 자세한 내용은 MSDN 웹 사이트에서 .NET 4의 Windows WF(Workflow Foundation)에 대한 개발자 소개(영문) 페이지를 참조하세요.

요구 사항

  • Visual Studio Enterprise, Visual Studio Test Professional

워크플로 초기화

프로세스 루트 작업

LabDefaultTemplate의 루트는 TfsBuild.Process 활동입니다. 이 ActivityBuilder는 빌드 정의 창 및 랩 워크플로 매개 변수 마법사에 제공된 입력에서 워크플로 빌드 정의에 대한 전역 인수를 초기화합니다.

인수

LabWorkflowParameters 인수에는 랩 워크플로 매개 변수 마법사에 제공된 데이터가 포함됩니다. 이 인수는 다음 개체가 포함된 LabWorkflowDetails 개체입니다.

BuildDetails

빌드, 배포 및 테스트 워크플로에 대한 빌드 세부 정보를 저장하는 BuildDetails 개체

DeploymentDetails

워크플로에서 빌드 배포에 필요한 정보를 저장하는 LabEnvironmentDetails 개체

EnvironmentDetails

빌드, 배포 및 테스트 시나리오에 사용할 환경을 식별하는 정보를 저장하는LabEnvironmentDetails 개체

TestParameters

자동화된 테스트 실행을 만드는 데 필요한 테스트 매개 변수 세부 정보를 저장하는 RunTestDetails 개체

다음 인수도 전역 범위에서 선언합니다.

인수

형식

Metadata

ProcessParameterMetadataCollection

Verbosity

로그에 기록되는 정보의 양을 지정하는 T:Microsoft.TeamFoundation.Build.Workflow.Verbosity 열거형 값

BuildNumberFormat

빌드 번호의 형식을 지정하는 String

SupportedReasons

빌드 이유를 지정하는 BuildReason 열거형 값

응용 프로그램 배포 워크플로 시퀀스

응용 프로그램 배포 워크플로

응용 프로그램 배포 워크플로 시퀀스는 전체 빌드, 배포 및 테스트 시나리오를 제어합니다.

응용 프로그램 배포 워크플로는 다음 변수를 선언합니다.

  • BuildDetail: IBuildDetail 개체

  • LabEnvironmnetUri: 빌드를 배포하는 환경의 uri를 지정하는 String

  • BuildLocation: 빌드 위치를 지정하는 String

  • SnapshotId: 가상 머신 스냅숏의 식별자를 지정하는 String

  • QueueBuildId: 큐의 빌드 식별자를 지정하는 Int32

빌드 실행

업데이트 빌드 번호

빌드 번호 업데이트는 BuildNumberFormat 인수의 빌드 번호를 확장 및 반환합니다. 빌드 번호 업데이트는 a7c92c11-6bbb-4b5e-ab35-af5edb7c6cf5#Activity_UpdateBuildNumber 활동입니다.

빌드 정보 가져오기

빌드 정보 가져오기는 워크플로 마법사에 지정된 빌드를 실행 또는 액세스하는 데 필요한 데이터를 반환합니다. IBuildDetail 개체는 BuildDetail 변수에 저장됩니다.

빌드 정보 가져오기는 a7c92c11-6bbb-4b5e-ab35-af5edb7c6cf5#Activity_GetBuildDetail 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • 결과는 IBuildDetail 개체를 BuildDetail 변수로 반환합니다.

If Build is Needed 작업

빌드가 필요한 경우는 팀 시스템 빌드 프로세스에 새 빌드가 필요한지 여부를 결정합니다. 조건이 충족될 경우 워크플로에서 빌드 수행 시퀀스를 실행합니다.

빌드 실행 작업

빌드 수행 시퀀스는 빌드를 시작하고 빌드가 완료될 때까지 기다린 다음 빌드 위치를 설정합니다.

빌드 워크플로 시작

빌드 워크플로 시작은 새 빌드를 지정된 빌드 컨트롤러에 대기시키고 큐에 대기 중인 빌드의 id를 QueueBuildId 변수에 반환합니다. 빌드 워크플로 시작RunWorkflow 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • BuildDefinition은 BuildDetails.BuildDefinitionName 인수의 LabWorkflowParameters 속성으로 설정됩니다.

  • ProjectName 인수는 TeamProject 변수의 BuildDetail 속성으로 설정됩니다.

빌드 완료 대기 중

빌드 완료 대기 중은 빌드가 완료되거나 시간 초과 간격이 경과될 때까지 일시 중지됩니다. 제한 시간에 도달하면 활동에서 예외를 throw합니다. 활동이 BuildStatus 변수에 빌드 상태를 반환하고 ChildBuildDetail 변수에 새 빌드에 대한 데이터를 반환합니다. 빌드 완료 대기 중WaitForWorkflow 활동입니다. 템플릿은 다음 속성 값을 설정합니다.

  • AllowPartiallySucceededBuild이 true로 설정됩니다.

  • BuildDetails가 새 빌드 데이터를 ChildBuildDetail 변수로 반환합니다.

  • MaxWaitTime은 무한대로 설정됩니다.

  • QueueBuildId에서 빌드 QueueBuildId 변수의 큐 ID를 반환합니다.

빌드 위치 설정

빌드 위치 설정은 ChildBuildDetail 변수의 빌드 위치를 BuildDetails.BuildUri 인수의 LabWorkflowParameters 속성으로 할당합니다.

응용 프로그램 배포

배포 요약 업데이트

배포 요약 업데이트는 빌드 페이지에 배포 대상 환경의 이름을 씁니다. 배포 요약 업데이트WriteDeploymentInformation 활동입니다.

GetBuildLocationAndBuildNumber

GetBuildLocationAndBuildNumber는 빌드 저장 위치를 BuildLocation 변수로 반환합니다. GetBuildLocationAndBuildNumberGetBuildLocationAndBuildNumber 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • BuildDetails는 BuildDetails 인수에 포함된 LabWorkflowParameters 개체로 설정됩니다.

  • BuildNumber는 BuildNumber 변수로 빌드 번호를 반환합니다.

  • 결과는 BuildLocation 변수로 빌드 위치를 반환합니다.

  • SelectedBuild는 빌드 서버에 빌드 데이터가 포함된 IBuildDetail 변수로 SelectedBuildDetail 개체를 반환합니다.

필요한 빌드 위치 계산 작업

필요한 빌드 위치 계산 조건이 충족되면 빌드 경로 계산이 플랫폼과 빌드 구성 하위 폴더를 저장 위치에 추가합니다.

사용자가 저장된 환경을 선택한 경우 작업

사용자가 저장된 환경을 선택한 경우에서 해당 환경이 배포되었는지 여부를 확인하고 해당 환경이 라이브러리에 저장되어 있을 경우 오류 표시에서 예외를 throw합니다.

랩 환경 가져오기

랩 환경 가져오기는 LabEnvironmentUri 변수에 환경의 URI를 반환합니다. 랩 환경 가져오기GetLabEnvironmentUri 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentName은 EnvironmentDetails.LabEnvironmentName 인수의 LabWorkflowParameters 속성 값으로 설정됩니다.

  • ProjectName은 TeamProject 변수의 BuildDetail 속성 값으로 설정됩니다.

  • 결과는 LabEnvironmentUri 변수에 랩 환경의 URI를 반환합니다.

  • TeamProjectLabLocationName은 EnvironmentDetails.HostGroupName 인수의 LabWorkflowParameters 속성 값으로 설정됩니다.

  • TfsServerUrl는 null로 설정됩니다.

If Restore Snapshot 작업

If Restore Snapshot은 사용자가 환경을 클린 스냅숏으로 복원하도록 요청했는지 여부를 확인합니다. 조건이 충족될 경우 스냅숏 복원 시퀀스가 실행되고, 그렇지 않으면 클린 스냅숏이 지정되지 않음에서 빌드 요약에 경고 메시지를 씁니다.

스냅숏 복원 작업

스냅숏 복원 시퀀스에서 스냅숏 정보 가져오기는 스냅숏 ID를 계산하고 랩 환경을 스냅숏으로 복원은 복원을 수행합니다.

스냅숏 정보 가져오기

스냅샷 정보 가져오기GetLabEnvironmentSnapshotId 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • 결과는 SnapshotId 변수에 스냅샷 ID를 반환합니다.

  • SnapshotName은 EnvironmentDetails.SnapshotName 인수의 LabWorkflowParameters 속성으로 설정됩니다.

랩 환경을 스냅숏으로 복원

랩 환경을 스냅숏으로 복원RestoreLabEnvironment 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • SnapshotId는 SnapshotId 변수 값으로 설정됩니다.

If Deployment needed 작업

배포가 필요한 경우는 사용자가 배포를 요청했는지 여부를 결정합니다.

배포 실행 작업

조건이 충족되면 배포 수행 시퀀스가 실행됩니다.

준비될 때까지 워크플로 기능 대기

워크플로 기능 준비 대기는 환경의 워크플로 기능이 준비되었거나 시간 제한 간격이 도달할 때까지 실행을 일시 중단합니다. 시간 제한 간격을 초과하면 예외가 throw됩니다. 워크플로 기능 준비 대기WaitForWorkflowCapabilityServices 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentUriLabEnvironmentUri 변수 값으로 설정됩니다.

  • MaxWaitTime은 20분으로 설정됩니다.

  • RepairCapabilityBeforeWaitBegins는 false로 설정됩니다.

배포 스크립트 실행 작업

배포 실행 스크립트는 DeploymentDetails.Scripts 인수의 LabWorkflowParameters 속성 목록에 포함된 각 배포 스크립트에서 랩 시스템에서 스크립트 실행 시퀀스를 실행합니다.

랩 시스템에서 스크립트 실행 작업

랩 시스템에서 스크립트 실행은 환경의 가상 컴퓨터에 지정된 스크립트를 실행하는 시퀀스입니다. 랩 시스템에서 스크립트 실행은 다음 변수를 선언합니다.

에이전트 태그 및 배포 스크립트 초기화

에이전트 태그 및 배포 스크립트 초기화는 스크립트의 매크로 및 태그를 확장하고 ScriptDetails 개체에 결과를 반환합니다. 에이전트 태그 및 배포 스크립트 초기화InitializeAgentSpecAndEnvironmentVariables 활동입니다. 템플릿은 다음 값을 설정합니다.

  • BuildLocation은 BuildLocation 변수 값으로 설정됩니다.

  • DeploymentScriptDetails는 반복된 DeploymentDetails.Scripts 문자열 값으로 설정됩니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • 결과는 scriptDetails 변수에 확장된 스크립트를 반환합니다.

랩 에이전트 범위

랩 에이전트 범위는 랩 에이전트가 설치되었는지 및 대상 가상 컴퓨터에서 실행 중인지 여부를 확인한 다음 배포 실행 중 스크립트를 호출하여 스크립트를 실행합니다. 컴퓨터에서 스크립트가 하나라도 실패할 경우 예외가 throw됩니다. 랩 에이전트 범위는 a7c92c11-6bbb-4b5e-ab35-af5edb7c6cf5#Activity_AgentScope 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • MaxExecutionTime은 무한대로 설정됩니다.

  • MaxWaitTime은 5분으로 설정됩니다.

  • ReservationSpec은 AgentSpec 변수의 scriptDetails 속성인 Microsoft.Te:amFoundation.Build.Client.BuildAgentSpec 개체로 설정됩니다.

배포 스크립트 실행

배포 실행 중 스크립트는 대상 가상 컴퓨터에 배포 스크립트를 실행합니다. 배포 실행 중 스크립트RunDeploymentScript 활동입니다. 템플릿은 다음 값을 설정합니다.

  • ScriptDetails는 scriptDetails 변수 값으로 설정됩니다.

  • ThrowOnError는 true로 설정됩니다.

  • SharedLocationForNetUse는 BuildLocation 변수 값으로 설정됩니다.

응용 프로그램 배포 성공

응용 프로그램 배포 성공은 정보를 빌드 요약에 씁니다. 응용 프로그램 배포 성공WriteDeploymentInformation 활동입니다.

배포 후 스냅숏

배포 게시 스냅숏은 사용자가 배포 후 환경의 스냅숏을 저장하도록 요청했는지 여부를 확인합니다. 이 조건이 만족되는 경우 배포 후 스냅숏 만들기 시퀀스를 실행합니다. 그렇지 않으면 배포 후 스냅숏이 지정되지 않음에서 로그에 경고 메시지를 씁니다.

배포 후 스냅숏 만들기 작업

배포 후 스냅숏 만들기 시퀀스

배포 후 스냅숏 만들기는 다음 변수를 선언합니다.

  • PostDeploymentSnapshotChainId: Int64

  • PostDeploymentSnapshotName: String 템플릿은 BuildNumber 변수의 BuildDetails 속성 값에 기본값을 설정합니다.

스냅숏 이름 선택 작업

스냅숏 이름 확인은 스냅숏 이름이 지정되어 있는지 여부를 결정합니다. 조건이 충족될 경우 지정된 이름이 사용되고, 그렇지 않으면 기본값이 사용됩니다.

배포 후 스냅숏을 만드는 중

배포 후 스냅숏 만들기는 스냅숏을 만드는 SnapshotLabEnvironment 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • SnapshotChainId는 PostDeploymentSnapshotChainId 변수에 스냅샷 ID를 반환합니다.

  • SnapshotName은 PostDeploymentSnapshotName 변수 값으로 설정됩니다.

스냅숏 만들기 성공

스냅숏 만들기 성공은 빌드 요약에 스냅샷 이름을 씁니다. 스냅숏 만들기 성공WriteDeploymentInformation 활동입니다.

스냅숏에 연결 링크를 추가함

스냅숏에 연결 링크를 추가함은 빌드 요약에 스냅숏 URL을 씁니다. 스냅숏에 연결 링크를 추가함WriteDeploymentInformation 활동입니다.

테스트 실행 중

Run Tests On Environment 작업

환경에서 테스트 실행은 자동화된 테스트가 요청되었는지 여부를 결정합니다. 조건이 충족되면 테스트 실행 시퀀스가 실행됩니다.

테스트 실행 작업

테스트 실행

테스트 실행은 다음 변수를 선언합니다.

  • TestCapabilityInfo: Microsoft.TeamFoundation.Lab.Client.TestingCapabilityInformation.

  • TestResults: Microsoft.TeamFoundation.Lab.Workflow.Activities.TestRunStatistics. 템플릿에서 기본값을 새 TestRunStatistics 개체로 설정합니다.

준비될 때까지 테스트 기능 대기

테스트 기능 준비 대기는 환경의 테스트 기능이 준비되었거나 시간 제한 간격이 도달할 때까지 실행을 일시 중단합니다. 시간 제한 간격을 초과하면 예외가 throw됩니다.

테스트 기능 준비 대기WaitForTestCapabilityServices 활동입니다. 템플릿은 다음 속성을 설정합니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • MaxWaitTime은 20분으로 설정됩니다.

  • RepairCapabilityBeforeWaitBegins는 false로 설정됩니다.

테스트 실행 중

테스트 실행 중은 테스트를 실행하고 테스트 결과를 반환합니다. 테스트 실행 중ExecuteRemoteTestRun 활동입니다. 템플릿은 다음 값을 설정합니다.

  • MaxWaitTime은 무한대로 설정됩니다.

  • BuildNumber는 BuildNumber 변수 값으로 설정됩니다.

  • TestDirectory는 BuildLocation 변수 값으로 설정됩니다.

  • LabEnvironmentUri는 LabEnvironmentUri 변수 값으로 설정됩니다.

  • TestParameters는 TestParameters 개체에 포함된 LabWorkflowParameters 개체로 설정됩니다.

  • 결과는 테스트 결과가 포함된 Microsoft.TeamFoundation.Lab.Workflow.Activities.RunTestDetails 개체를 TestResults 변수로 반환합니다.

  • 제목은 테스트 실행의 이름을 BuildNumber 변수의 BuildDetail 속성 값으로 설정합니다.

If All Tests Have Not Passed 작업

모든 테스트에 통과하지 못한 경우는 불합격한 테스트가 있는지 여부를 확인하고 조건이 충족되면 빌드 상태 설정을 실행합니다.

빌드 상태 설정

빌드 상태 설정은 워크플로에 응용 프로그램의 빌드 또는 배포가 포함되었는지 여부를 결정합니다. 이 조건이 충족되면 부분 성공에서 워크플로 상태를 BuildStatus.PartiallySucceeded 값으로 설정합니다. 그렇지 않을 경우, 실패에서 BuildStatus 변수를 Failed로 설정합니다.

참고 항목

Lab Management 워크플로 작업