배포 명령 파일 만들기 및 실행
작성자: Jason Lee
이 항목에서는 MSBuild(Microsoft Build Engine) 프로젝트 파일을 단일 단계 반복 가능한 프로세스로 사용하여 배포를 실행할 수 있는 명령 파일을 빌드하는 방법을 설명합니다.
이 항목은 Fabrikam, Inc.라는 가상 회사의 엔터프라이즈 배포 요구 사항을 기반으로 하는 일련의 자습서의 일부를 구성합니다. 이 자습서 시리즈에서는 샘플 솔루션인 Contact Manager 솔루션을 사용하여 ASP.NET MVC 3 애플리케이션, WCF(Windows Communication Foundation) 서비스 및 데이터베이스 프로젝트를 포함하여 현실적인 수준의 복잡성이 있는 웹 애플리케이션을 나타냅니다.
이러한 자습서의 핵심인 배포 방법은 빌드 프로세스 이해에 설명된 분할 프로젝트 파일 접근 방식을 기반으로 하며, 빌드 프로세스는 모든 대상 환경에 적용되는 빌드 지침과 환경별 빌드 및 배포 설정을 포함하는 두 개의 프로젝트 파일에 의해 제어됩니다. 빌드 시 환경별 프로젝트 파일은 환경에 구애받지 않은 프로젝트 파일로 병합되어 전체 빌드 지침 집합을 형성합니다.
프로세스 개요
이 항목에서는 이러한 프로젝트 파일을 사용하여 대상 환경에 반복 가능한 배포를 수행하는 명령 파일을 만들고 실행하는 방법을 알아봅니다. 기본적으로 명령 파일에는 다음과 같은 MSBuild 명령이 포함되어야 합니다.
- 환경에 구애받지 않은 Publish.proj 파일을 실행하도록 MSBuild에 지시합니다.
- Publish.proj 파일에 환경별 프로젝트 설정이 포함된 파일과 찾을 위치를 알려줍니다.
MSBuild 명령 만들기
빌드 프로세스 이해에 설명된 대로 환경별 프로젝트 파일(예: Env-Dev.proj)은 빌드 시 환경에 구애받지 않은 Publish.proj 파일로 가져오도록 설계되었습니다. 이 두 파일은 함께 MSBuild에 솔루션을 빌드하고 배포하는 방법을 알려주는 전체 지침 집합을 제공합니다.
Publish.proj 파일은 Import 요소를 사용하여 환경별 프로젝트 파일을 가져옵니다.
<Import Project="$(TargetEnvPropsFile)"/>
따라서 MSBuild.exe 사용하여 Contact Manager 솔루션을 빌드하고 배포하는 경우 다음을 수행해야 합니다.
- Publish.proj 파일에서 MSBuild.exe 실행합니다.
- TargetEnvPropsFile이라는 명령줄 매개 변수를 제공하여 환경별 프로젝트 파일의 위치를 지정합니다.
이렇게 하려면 MSBuild 명령이 다음과 유사해야 합니다.
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
여기서는 반복 가능한 단일 단계 배포로 이동하는 간단한 단계입니다. MSBuild 명령을 .cmd 파일에 추가하기만 하면 됩니다. Contact Manager 솔루션에서 Publish 폴더에는 이 작업을 정확하게 수행하는 Publish-Dev.cmd 라는 파일이 포함되어 있습니다.
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo
pause
참고
/fl 스위치는 msBuild가 MSBuild.exe 호출된 작업 디렉터리에 msbuild.log라는 로그 파일을 만들도록 지시합니다.
Contact Manager 솔루션을 배포하거나 다시 배포하려면 Publish-Dev.cmd 파일을 실행하기만 하면 됩니다. 파일을 실행하면 MSBuild는 다음을 수행합니다.
- 솔루션의 모든 프로젝트를 빌드합니다.
- 웹 애플리케이션 프로젝트에 대한 배포 가능한 웹 패키지를 생성합니다.
- 데이터베이스 프로젝트에 대한 .dbschema 및 .deploymanifest 파일을 생성합니다.
- 웹 서버에 웹 패키지를 배포합니다.
- 데이터베이스 서버에 데이터베이스를 배포합니다.
배포 실행
대상 환경에 대한 명령 파일을 만든 경우 파일을 실행하기만 하면 전체 배포를 완료할 수 있습니다.
테스트 환경에 Contact Manager 솔루션을 배포하려면
개발자 워크스테이션에서 Windows Explorer 연 다음 Publish-Dev.cmd 파일의 위치를 찾습니다.
파일을 두 번 클릭하여 실행합니다.
파일 열기 – 보안 경고 대화 상자가 나타나면 실행을 클릭합니다.
구성 설정 및 테스트 서버가 올바르게 설정된 경우 MSBuild가 프로젝트 파일 처리를 완료하면 명령 프롬프트 창에 빌드 성공 메시지가 표시됩니다.
이 환경에 솔루션을 처음 배포한 경우 테스트 웹 서버 컴퓨터 계정을 db_datawriter 추가하고 ContactManager 데이터베이스의 db_datareader 역할을 추가해야 합니다. 이 절차는 웹 배포 게시용 데이터베이스 서버 구성에 설명되어 있습니다.
참고
데이터베이스를 만들 때만 이러한 권한을 할당해야 합니다. 기본적으로 빌드 프로세스는 모든 배포에서 데이터베이스를 다시 만들지 않습니다. 대신 기존 데이터베이스를 최신 스키마와 비교하고 필요한 변경만 수행합니다. 따라서 솔루션을 처음 배포할 때만 이러한 데이터베이스 역할을 매핑해야 합니다.
인터넷 Explorer 열고 Contact Manager 애플리케이션의 URL(예:
http://testweb1:85/ContactManager/
)으로 이동합니다.애플리케이션이 예상대로 작동하고 연락처를 추가할 수 있는지 확인합니다.
결론
MSBuild 지침이 포함된 명령 파일을 만들면 특정 대상 환경에 다중 프로젝트 솔루션을 빠르고 쉽게 빌드하고 배포할 수 있습니다. 솔루션을 여러 대상 환경에 반복적으로 배포해야 하는 경우 여러 명령 파일을 만들 수 있습니다. 각 명령 파일에서 MSBuild 명령은 동일한 범용 프로젝트 파일을 빌드하지만 다른 환경별 프로젝트 파일을 지정합니다. 예를 들어 개발자 또는 테스트 환경에 게시할 명령 파일에는 다음 MSBuild 명령이 포함될 수 있습니다.
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
스테이징 환경에 게시할 명령 파일에는 다음 MSBuild 명령이 포함될 수 있습니다.
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj
참고
사용자 고유의 서버 환경에 대한 환경별 프로젝트 파일을 사용자 지정하는 방법에 대한 지침은 대상 환경에 대한 배포 속성 구성을 참조하세요.
속성을 재정의하거나 MSBuild 명령에서 다양한 다른 스위치를 설정하여 각 환경에 대한 빌드 프로세스를 사용자 지정할 수도 있습니다. 자세한 내용은 MSBuild 명령줄 참조를 참조하세요.