다음을 통해 공유


배포를 지원하는 빌드 정의 만들기

작성자 : Jason Lee

TFS(Team Foundation Server) 2010에서 모든 종류의 빌드를 수행하려면 팀 프로젝트 내에서 빌드 정의를 만들어야 합니다. 이 항목에서는 TFS에서 새 빌드 정의를 만드는 방법과 팀 빌드에서 빌드 프로세스의 일부로 웹 배포를 제어하는 방법을 설명합니다.

이 항목은 Fabrikam, Inc.라는 가상 회사의 엔터프라이즈 배포 요구 사항을 기반으로 하는 일련의 자습서의 일부를 구성합니다. 이 자습서 시리즈에서는 샘플 솔루션인 Contact Manager 솔루션을 사용하여 ASP.NET MVC 3 애플리케이션, WCF(Windows Communication Foundation) 서비스 및 데이터베이스 프로젝트를 포함하여 현실적인 수준의 복잡성을 가진 웹 애플리케이션을 나타냅니다.

이 자습서의 핵심인 배포 방법은 프로젝트 파일 이해에 설명된 분할 프로젝트 파일 접근 방식을 기반으로 합니다. 이 방법은 빌드 및 배포 프로세스가 모든 대상 환경에 적용되는 빌드 지침이 포함된 프로젝트 파일과 환경별 빌드 및 배포 설정을 포함하는 두 개의 프로젝트 파일에 의해 제어됩니다. 빌드 시 환경별 프로젝트 파일이 환경에 구애받지 않은 프로젝트 파일로 병합되어 전체 빌드 지침 집합을 형성합니다.

작업 개요

빌드 정의는 TFS의 팀 프로젝트에 대해 빌드가 발생하는 방법과 시기를 제어하는 메커니즘입니다. 각 빌드 정의는 다음을 지정합니다.

  • Visual Studio 솔루션 파일 또는 MSBuild(사용자 지정 Microsoft Build Engine) 프로젝트 파일과 같이 빌드하려는 항목입니다.
  • 수동 트리거, CI(연속 통합) 또는 제어된 검사 인과 같이 빌드가 수행되어야 하는 시기를 결정하는 조건입니다.
  • 웹 패키지 및 데이터베이스 스크립트와 같은 배포 아티팩트 등 팀 빌드에서 빌드 출력을 보내야 하는 위치입니다.
  • 각 빌드를 보존해야 하는 시간입니다.
  • 빌드 프로세스의 다양한 다른 매개 변수입니다.

참고

빌드 정의에 대한 자세한 내용은 빌드 프로세스 정의를 참조하세요.

이 항목에서는 개발자가 새 콘텐츠를 확인할 때 빌드가 트리거되도록 CI를 사용하는 빌드 정의를 만드는 방법을 보여줍니다. 빌드가 성공하면 빌드 서비스는 사용자 지정 프로젝트 파일을 실행하여 솔루션을 테스트 환경에 배포합니다.

빌드를 트리거할 때 다음 작업이 수행되어야 합니다.

  • 먼저 팀 빌드에서 솔루션을 빌드해야 합니다. 이 프로세스의 일부로 팀 빌드는 WPP(웹 게시 파이프라인)를 호출하여 솔루션의 각 웹 애플리케이션 프로젝트에 대한 웹 배포 패키지를 생성합니다. 팀 빌드는 솔루션과 연결된 모든 단위 테스트도 실행합니다.
  • 솔루션 빌드가 실패하면 팀 빌드는 추가 작업을 수행하지 않아야 합니다. 단위 테스트 실패는 빌드 실패로 처리되어야 합니다.
  • 솔루션 빌드가 성공하면 팀 빌드는 솔루션 배포를 제어하는 사용자 지정 프로젝트 파일을 실행해야 합니다. 이 프로세스의 일부로 팀 빌드는 IIS(인터넷 정보 서비스) 웹 배포 도구(웹 배포)를 호출하여 대상 웹 서버에 패키지된 웹 애플리케이션을 설치하고, 대상 데이터베이스 서버에서 데이터베이스 만들기 스크립트를 실행하는 VSDBCMD.exe 유틸리티를 호출합니다.

이 프로세스는 다음을 보여 줍니다.

위의 프로세스를 보여 줍니다.

Contact Manager 샘플 솔루션에는 MSBuild 또는 팀 빌드에서 실행할 수 있는 사용자 지정 MSBuild 프로젝트 파일 Publish.proj가 포함되어 있습니다. 빌드 프로세스 이해에 설명된 대로 이 프로젝트 파일은 웹 패키지 및 데이터베이스를 대상 환경에 배포하는 논리를 정의합니다. 파일에는 팀 빌드에서 실행되는 경우 빌드 및 패키징 프로세스를 생략하고 배포 작업만 실행할 수 있는 논리가 포함됩니다. 이러한 방식으로 배포를 자동화하는 경우 일반적으로 배포 프로세스가 시작되기 전에 솔루션이 성공적으로 빌드되고 모든 단위 테스트를 통과하는지 확인해야 하기 때문입니다.

다음 섹션에서는 새 빌드 정의를 만들어 이 프로세스를 구현하는 방법을 설명합니다.

참고

단일 자동화된 프로세스가 솔루션을 빌드, 테스트 및 배포하는 이 절차는 테스트 환경에 배포하는 데 가장 적합할 수 있습니다. 스테이징 및 프로덕션 환경의 경우 테스트 환경에서 이미 확인하고 유효성을 검사한 이전 빌드의 콘텐츠를 배포할 가능성이 훨씬 높습니다. 이 방법은 다음 항목인 특정 빌드 배포에서 설명합니다.

누가 이 절차를 수행합니까?

일반적으로 TFS 관리자는 이 절차를 수행합니다. 경우에 따라 개발자 팀 리더가 TFS의 팀 프로젝트 컬렉션에 대한 책임을 져야 할 수 있습니다. 새 빌드 정의를 만들려면 솔루션이 포함된 팀 프로젝트 컬렉션에 대한 프로젝트 컬렉션 빌드 관리자 그룹의 구성원이어야 합니다.

CI 및 배포에 대한 빌드 정의 만들기

다음 절차에서는 CI가 트리거하는 빌드 정의를 만드는 방법을 설명합니다. 빌드에 성공하면 사용자 지정 MSBuild 프로젝트 파일의 논리를 사용하여 솔루션이 배포됩니다.

CI 및 배포에 대한 빌드 정의를 만들려면

  1. Visual Studio 2010의 팀 Explorer 창에서 팀 프로젝트 노드를 확장하고 빌드를 마우스 오른쪽 단추로 클릭한 다음 새 빌드 정의를 클릭합니다.

    Visual Studio 2010의 팀 Explorer 창에서 팀 프로젝트 노드를 확장하고 빌드를 마우스 오른쪽 단추로 클릭한 다음 새 빌드 정의를 클릭합니다.

  2. 일반 탭에서 빌드 정의에 이름(예: DeployToTest) 및 선택적 설명을 지정합니다.

  3. 트리거 탭에서 새 빌드를 트리거할 조건을 선택합니다. 예를 들어 개발자가 새 코드를 확인할 때마다 솔루션을 빌드하고 테스트 환경에 배포하려면 연속 통합을 선택합니다.

  4. 빌드 기본값 탭의 다음 드롭 폴더에 빌드 출력 복사 상자에서 드롭 폴더의 UNC(범용 명명 규칙) 경로(예: \TFSBUILD\Drops)를 입력합니다.

    빌드 기본값 탭의 다음 드롭 폴더에 빌드 출력 복사 상자에서 드롭 폴더의 UNC(범용 명명 규칙) 경로(예: \TFSBUILD\Drops)를 입력합니다.

    참고

    이 삭제 위치는 구성하는 보존 정책에 따라 여러 빌드를 저장합니다. 특정 빌드의 배포 아티팩트가 스테이징 또는 프로덕션 환경에 게시하려는 경우 여기에서 찾을 수 있습니다.

  5. 프로세스 탭의 빌드 프로세스 파일 드롭다운 목록에서 DefaultTemplate.xaml을 선택한 상태로 둡니다. 이 템플릿은 모든 새 팀 프로젝트에 추가되는 기본 빌드 프로세스 템플릿 중 하나입니다.

  6. 빌드 프로세스 매개 변수 테이블에서 빌드할 항목 행을 클릭한 다음 줄임표 단추를 클릭합니다.

    빌드 프로세스 매개 변수 테이블에서 빌드할 항목 행을 클릭한 다음 줄임표 단추를 클릭합니다.

  7. 빌드할 항목 대화 상자에서 추가를 클릭합니다.

  8. 솔루션 파일의 위치로 이동한 다음 확인을 클릭합니다.

    솔루션 파일의 위치로 이동한 다음 확인을 클릭합니다.

  9. 빌드할 항목 대화 상자에서 추가를 클릭합니다.

  10. 형식의 항목 드롭다운 목록에서 MSBuild 프로젝트 파일을 선택합니다.

  11. 배포 프로세스를 제어하는 사용자 지정 프로젝트 파일의 위치를 찾아 파일을 선택한 다음 확인을 클릭합니다.

    배포 프로세스를 제어하는 사용자 지정 프로젝트 파일의 위치를 찾아 파일을 선택한 다음 확인을 클릭합니다.

  12. 빌드 할 항목 대화 상자에 이제 두 개의 항목이 표시됩니다. 확인을 클릭합니다.

    빌드할 항목 대화 상자에 이제 두 개의 항목이 표시됩니다. 확인을 클릭합니다.

  13. 프로세스 탭의 빌드 프로세스 매개 변수 테이블에서 고급 섹션을 확장합니다.

  14. MSBuild 인수 행에서 빌드할 항목 중 하나에 필요한 MSBuild 명령줄 인수를 추가합니다. Contact Manager 솔루션 시나리오에서는 다음 인수가 필요합니다.

    /p:DeployOnBuild=true;DeployTarget=Package;
       TargetEnvPropsFile=EnvConfig\Env-Dev.proj
    

    MSBuild 인수 행에서 빌드할 항목 중 하나에 필요한 MSBuild 명령줄 인수를 추가합니다.

  15. 이 예제에서는 다음이 적용됩니다.

    1. Contact Manager 솔루션을 빌드할 때 DeployOnBuild=trueDeployTarget=package 인수가 필요합니다. 이렇게 하면 웹 애플리케이션 프로젝트 빌드 및 패키징에 설명된 대로 각 웹 애플리케이션 프로젝트를 빌드한 후 웹 배포 패키지를 만들도록 MSBuild에 지시합니다.
    2. Publish.proj 파일을 빌드할 때 TargetEnvPropsFile 인수가 필요합니다. 이 속성은 빌드 프로세스 이해에 설명된 대로 환경별 구성 파일의 위치를 나타냅니다.
  16. 보존 정책 탭에서 필요에 따라 보존하려는 각 유형의 빌드 수를 구성합니다.

  17. 저장을 클릭합니다.

큐에 빌드 대기시키기

이 시점에서 하나 이상의 새 빌드 정의를 만들었습니다. 정의한 빌드 프로세스는 이제 빌드 정의에서 지정한 트리거에 따라 실행됩니다.

CI를 사용하도록 빌드 정의를 구성한 경우 다음 두 가지 방법으로 빌드 정의를 테스트할 수 있습니다.

  • 팀 프로젝트에 대한 일부 콘텐츠를 체크 인하여 자동 빌드를 트리거합니다.
  • 빌드를 수동으로 큐에 추가합니다.

빌드를 수동으로 큐에 대기하려면

  1. 팀 Explorer 창에서 빌드 정의를 마우스 오른쪽 단추로 클릭한 다음 새 빌드 큐를 클릭합니다.

    팀 Explorer 창에서 빌드 정의를 마우스 오른쪽 단추로 클릭한 다음 새 빌드 큐를 클릭합니다.

  2. 큐 빌드 대화 상자에서 빌드 속성을 검토한 다음 를 클릭합니다.

    큐 빌드 대화 상자에서 빌드 속성을 검토한 다음 큐를 클릭합니다.

수동으로 또는 자동으로 트리거되었는지 여부에 관계없이 빌드의 진행률 및 결과를 검토하려면 팀 Explorer 창에서 빌드 정의를 두 번 클릭합니다. 그러면 빌드 Explorer 탭이 열립니다.

수동으로 또는 자동으로 트리거되었는지 여부에 관계없이 빌드의 진행률 및 결과를 검토하려면 팀 Explorer 창에서 빌드 정의를 두 번 클릭합니다.

여기에서 실패한 빌드 문제를 해결할 수 있습니다. 개별 빌드를 두 번 클릭하면 요약 정보를 보고 자세한 로그 파일을 클릭할 수 있습니다.

개별 빌드를 두 번 클릭하면 요약 정보를 보고 자세한 로그 파일을 클릭할 수 있습니다.

이 정보를 사용하여 실패한 빌드 문제를 해결하고 다른 빌드를 시도하기 전에 문제를 해결할 수 있습니다.

참고

배포 논리를 실행하는 빌드는 대상 환경에 필요한 권한을 빌드 서버에 부여할 때까지 실패할 수 있습니다. 자세한 내용은 팀 빌드 배포에 대한 권한 구성을 참조하세요.

빌드 프로세스 모니터링

TFS는 빌드 프로세스를 모니터링하는 데 도움이 되는 광범위한 기능을 제공합니다. 예를 들어 TFS는 빌드가 완료되면 작업 표시줄 알림 영역에 전자 메일을 보내거나 경고를 표시할 수 있습니다. 자세한 내용은 빌드 실행 및 모니터링을 참조하세요.

결론

이 항목에서는 TFS에서 빌드 정의를 만드는 방법을 설명했습니다. 빌드 정의는 CI용으로 구성되므로 개발자가 팀 프로젝트에 대한 콘텐츠를 체크 인할 때마다 빌드 프로세스가 실행됩니다. 빌드 정의는 사용자 지정 MSBuild 프로젝트 파일을 실행하여 웹 패키지 및 데이터베이스 스크립트를 대상 서버 환경에 배포합니다.

자동화된 배포가 빌드 프로세스의 일부로 성공하려면 대상 웹 서버 및 대상 데이터베이스 서버의 빌드 서비스 계정에 적절한 권한을 부여해야 합니다. 이 자습서의 마지막 항목인 팀 빌드 배포에 대한 권한 구성에서는 팀 빌드 서버에서 자동화된 배포에 필요한 권한을 식별하고 구성하는 방법을 설명합니다.

추가 정보

빌드 정의를 만드는 방법에 대한 자세한 내용은 기본 빌드 정의 만들기빌드 프로세스 정의를 참조하세요. 빌드 큐에 대한 자세한 지침은 빌드 큐를 참조하세요.