다음을 통해 공유


빌드-배포-테스트 워크플로에 대한 배포 스크립트 만들기

빌드-배포-테스트 워크플로 사용하여 응용 프로그램을 배포하려면 배포 스크립트를 만들고 빌드에 추가합니다. 배포 스크립트는 빌드를 랩 환경의 컴퓨터로 복사하는 BAT 또는 CMD 파일입니다. 빌드에 설치 패키지가 포함된 경우 배포 스크립트를 사용하여 설치 패키지를 실행할 수도 있습니다. 빌드-배포-테스트 워크플로 만들 때 배포 스크립트를 실행하는 명령을 워크플로에 추가합니다. 워크플로를 실행하면 빌드 컨트롤러에서 사용자 랩 환경의 지정된 컴퓨터에 있는 작업 디렉터리에서 해당 명령을 실행합니다.

SCVMM 환경에 대한 빌드-배포-테스트 워크플로 만들기 또는 표준 환경에 대한 빌드-배포-테스트 워크플로 만들기을 참조하십시오. 이 단원에서는 빌드-배포-테스트 워크플로를 사용하여 배포 스크립트를 만들고 사용하는 방법에 대해 설명합니다.

  • 배포용 빌드 파일 준비

  • 배포 스크립트 작성

  • 배포 스크립트 빌드

  • 작업 디렉터리 설정

  • 워크플로에 배포 스크립트 추가

추가 예에 대해서는 시스템 테스트 자동화를 참조하세요.

요구 사항

  • Visual Studio Ultimate, Visual Studio Premium, Visual Studio Test Professional

배포용 빌드 파일 준비

응용 프로그램을 설치하기 위해 선택하는 방법에 따라 배포 스크립트가 완료해야 하는 기본 작업이 결정됩니다. 응용 프로그램을 설치할 때 EXE를 클라이언트 컴퓨터에 복사하는 경우도 있고 여러 컴퓨터에 파일을 설치하는 배포 패키지를 실행하는 경우도 있습니다. 다음 표에 각 배포 유형의 작업에 대한 설명이 나와 있습니다.

중요

응용 프로그램의 필수 구성 요소 소프트웨어가 설치되어 있지 않고 응용 프로그램이 응용 프로그램을 배포하기 전 배포 스크립트에서 구성하는 필수 구성 요소 소프트웨어에 의존하는 경우 랩 환경에서 컴퓨터를 준비할 때 해당 소프트웨어를 직접 설치해야 합니다.환경 스냅숏을 배포하는 SCVMM 환경을 사용하는 경우 스냅숏에 필수 구성 요소 소프트웨어가 설치되어 있는지 확인해야 합니다.

설치 유형

설명

웹 서비스 배포 패키지

주의 정보주의

IIS를 사용하는 응용 프로그램을 배포하는 경우 응용 프로그램을 배포하기 전 랩 환경의 IIS 서버에 웹 배포 에이전트 서비스가 구성되어 있어야 합니다.

배포 스크립트에서 빌드 파일과 배포 패키지를 랩 환경의 대상 컴퓨터로 복사한 다음 배포 패키지를 실행해야 합니다. 이렇게 하려면 배포 스크립트에 도메인 이름, 서비스 계정 이름 및 TFS 서버 이름을 매개 변수로 전달해야 합니다. 이 유형의 설치에서는 일반적으로 응용 프로그램을 배포하기 전 웹 서버, 데이터베이스 서버와 같이 필수 구성 요소 소프트웨어를 수동으로 설치 및 구성해야 합니다. 필수 구성 요소 소프트웨어를 구성하려면 대상 컴퓨터에서 응용 프로그램을 배포할 수 있도록 하는 특정 작업이 필요할 수 있습니다. 예를 들어, IIS를 사용하는 응용 프로그램의 경우 응용 프로그램을 배포하기 전 랩 환경의 IIS 서버에 웹 배포 에이전트 서비스가 구성되어 있어야 합니다.

설치 패키지가 없는 빌드 파일

배포 스크립트는 응용 프로그램 및 빌드 파일을 랩 환경의 대상 컴퓨터로 복사해야 합니다.

설치 패키지

주의 정보주의

빌드-배포-테스트 워크플로를 사용하여 설치 패키지를 배포할 경우 배포 스크립트는 설치 패키지를 실행할 때 생성되는 사용자 입력을 처리해야 합니다. 그렇지 않으면 응용 프로그램 배포가 실패합니다.

배포 스크립트는 설치 패키지를 랩 환경의 대상 컴퓨터로 복사한 다음 설치 패키지를 실행해야 합니다. 배포 스크립트에서 설치 패키지를 실행하면 자동 설치인지 확인해야 합니다. 설치에서 요청된 사용자 입력은 배포 스크립트에서 처리해야 합니다. 여기에는 자격 증명이 포함됩니다. 배포 스크립트에서 설치 패키지를 실행할 때 모든 사용자 입력을 처리하지 않을 경우 응용 프로그램 배포가 실패합니다. 웹 응용 프로그램을 배포하지 않고 배포에 설치 패키지가 필요할 경우 InstallShield 설치 패키지를 사용하는 것이 좋습니다. InstallShield에 대한 자세한 내용은 Windows Installer Deployment를 참조하십시오.

배포 스크립트 작성

다음은 배포 스크립트로 수행하는 가장 일반적인 작업입니다.

  • 빌드 컨트롤러에서 빌드 경로를 가져옵니다. 이 경로를 배포 스크립트에 명령 인수로 보낼 수 있습니다.

  • 배포 경로를 지정합니다.

  • 배포 디렉터리를 만듭니다. 또한 배포 스크립트에 작성하지 않고 수동으로 할 수 있습니다. 워크플로를 사용하여 배포 전 환경 스냅숏을 사용할 경우 스냅숏의 가상 환경에 디렉터리를 만들기만 하면 됩니다.

  • 빌드 경로에서 배포 경로로 배포 패키지를 복사합니다.

  • 배포 디렉터리에 배포 패키지를 실행합니다.

다음 명령은 배포 스크립트로 수행하는 몇 가지 일반적인 작업을 보여 줍니다.

REM set build path
set buildlocation=%1

REM set deployment path
set targetdir="C:\deploy"

REM create deployment directory
if not exist %targetdir% (cmd /c mkdir %targetdir%)

REM copy build to the deployment directory
xcopy /c /y /e %buildlocation%\*.* %targetdir%

REM if you are using a deployment package you can run it here, after you copy it to your deployment directory

배포 스크립트 빌드

배포 스크립트를 만든 후에는 버전 제어에 체크인한 다음 빌드 출력으로 복사되도록 구성해야 합니다. 배포 스크립트를 빌드하려면 우선 솔루션뿐만 아니라 Visual Studio 프로젝트에도 저장되었는지 확인하십시오. 이렇게 하려면 Visual Studio에서 배포 스크립트를 선택한 다음 솔루션 탐색기속성 아래에서 출력 디렉터리로 복사항상 복사로 변경합니다.

작업 디렉터리 설정

빌드-배포-테스트 워크플로에 추가하는 각 명령 집합에 대해 작업 디렉터리를 지정할 수 있습니다. 작업 디렉터리를 지정하면 빌드 컨트롤러가 해당 역할에 할당된 각 컴퓨터의 작업 디렉터리에서 지정된 명령을 실행합니다. 빌드-배포-테스트 워크플로에 명령을 추가할 때 작업 디렉터리를 지정하지 않으면 빌드 컨트롤러가 기본 디렉터리인 C:\Windows\System32에서 명령을 실행합니다.

중요

빌드-배포-테스트 워크플로에 추가하는 명령을 사용하여 작업 디렉터리를 만들지 마십시오. 이 경우 배포 스크립트가 파일을 이 디렉터리로 복사하기 전에 디렉터리가 만들어지지 않습니다.

작업 디렉터리를 지정하는 경우 배포 스크립트가 디렉터리로 파일을 복사하기 전에 해당 디렉터리가 만들어졌는지 확인해야 합니다. 빌드-배포-테스트 워크플로에 배포 스크립트를 추가하는 데 사용하는 명령으로 작업 디렉터리를 만들지 마십시오. 그럴 경우 배포 스크립트가 디렉터리로 파일을 복사하기 전에 디렉터리가 만들어지지 않습니다. 배포 스크립트가 작업 디렉터리로 파일을 복사하기 전에 작업 디렉터리가 만들어지도록 하려면 랩 환경의 대상 컴퓨터에 디렉터리를 수동으로 만들거나 어떤 명령이 디렉터리로 파일을 복사하기 전에 배포 스크립트에 의해 디렉터리가 만들어져야 합니다.

워크플로에 배포 스크립트 추가

랩 환경에 응용 프로그램을 배포하려면 빌드-배포-테스트 워크플로에 Windows 셸 명령을 추가합니다. 배포 스크립트를 사용하는 경우 명령이 빌드 컨트롤러에서 대상 컴퓨터의 작업 디렉터리로 배포 스크립트를 복사한 다음 배포 스크립트를 실행해야 합니다. 하지만 몇 개의 파일만 작업 디렉터리로 복사하는 간단한 응용 프로그램 설치에서는 외부 배포 스크립트를 지정하지 않고 워크플로에 셸 명령을 사용할 수 있습니다.

mkdir과 같이 Windows 프롬프트에서 실행되거나 배치 파일을 실행하는 명령을 추가하려면 cmd /c를 사용하여 명령을 시작해야 합니다. 예를 들면 cmd /c $(BuildLocation)\copyexe $(BuildLocation) 명령과 같습니다. 여기서 copyexe는 실행 파일을 가상 컴퓨터의 로컬 디렉터리에 복사하는 일괄 처리 파일 copyexe.bat입니다.

기본 제공 변수: 이 명령을 빌드-배포-테스트 워크플로에 추가하면 기본 제공된 변수를 사용하여 특정 경로와 컴퓨터를 식별할 수 있습니다. 또한 배포 스크립트에 이러한 변수를 전달할 수 있습니다.

  • $(BuildLocation)
    빌드 파일이 있는 전체 경로 또는 저장 위치(빌드-배포-테스트 워크플로에 구성되어 있는 경우) 이 변수를 사용하여 빌드 파일에 액세스합니다.

  • $(InternalComputerName_<VM 이름>)
    SCVMM 환경의 가상 컴퓨터의 컴퓨터 이름입니다. 호스트의 컴퓨터 이름을 모르는 경우 이 변수를 사용하여 가상 컴퓨터 호스트에 액세스합니다. 이와 같은 경우 컴퓨터 이름이 필요한 웹 서버 설정용 배포 스크립트가 있으면 이 변수를 스크립트에 인수로 전달할 수 있습니다. 예를 들어, 웹 서버의 가상 컴퓨터 이름이 VM1이고 컴퓨터 이름이 MyWebServer인 경우 스크립트 인수로 $(InternalComputerName_VM1)을 입력하면 MyWebServer 값이 스크립트에 전달됩니다.

  • $(ComputerName_<VM 이름>)

    참고

    SCVMM 환경의 네트워크 격리: SCVMM 환경에 대해 네트워크 격리를 사용 중인 경우 $(InternalComputerName_<VM Name>) 값은 이 환경의 각 복사본에서 가상 컴퓨터의 인스턴스에 대해 동일하지만 $(ComputerName_<VM Name>) 값은 다릅니다.

    가상 컴퓨터의 정규화된 도메인 이름입니다. 이 변수를 사용하여 SCVMM 환경 외부에서 컴퓨터에 액세스합니다. 이 변수를 인수로 전달하여 웹 서버를 설정할 수 있습니다. 예를 들어 웹 서버의 가상 컴퓨터 이름이 VM1인 경우 $(ComputerName_VM1) 인수를 배포 스크립트로 전달하여 가상 컴퓨터의 정규화된 도메인 이름에 액세스할 수 있습니다.

참고 항목

개념

자동화된 빌드-배포-테스트 워크플로

기타 리소스

시스템 테스트 자동화