문제

우리 팀은 현재 .Net 및 PHP 웹 애플리케이션 배포를 자동화하려고 노력하고 있습니다.우리는 배포를 간소화하고 수동으로 수행함으로써 발생하는 번거로움과 많은 골칫거리를 피하고 싶습니다.

우리는 다음을 수행할 수 있는 솔루션이 필요합니다.

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

우리의 모든 앱은 SVN을 사용하여 소스 제어되며 .Net 앱은 CruiseControl을 사용합니다.우리는 제한적인 성공을 거두면서 MSBuild 및 NAnt 배포 스크립트를 사용하려고 노력해 왔습니다.과거에도 Capistrano를 사용해 본 적이 있지만 가능하면 Ruby는 사용하지 않으려고 합니다.

우리에게 도움이 될 다른 배포 도구가 있습니까?

도움이 되었습니까?

해결책

여러분의 친절한 제안에 감사드립니다.우리는 그것들을 모두 확인했지만 신중한 고려 끝에 CruiseControl, NAnt, MSBuild 및 MSDeploy를 조합하여 자체적으로 출시하기로 결정했습니다.

이 기사에는 몇 가지 유용한 정보가 있습니다.CruiseControl.NET과 MSBuild 통합

우리 솔루션의 대략적인 작동 방식은 다음과 같습니다.

  • 개발자는 앱의 '디버그' 버전을 빌드하고 단위 테스트를 실행한 다음 SVN에 체크인합니다.
  • CruiseControl은 업데이트를 확인하고 빌드 스크립트를 호출합니다...
    • 빌드 데이터베이스에서 새로운 마이그레이션을 실행합니다.
    • 구성 파일을 빌드 서버 구성으로 대체합니다.
    • 앱의 '디버그' 구성을 빌드합니다.
    • 모든 단위 및 통합 테스트를 실행합니다.
    • 앱의 '배포' 구성을 빌드합니다.
      • 현재 주/부 버전 및 SVN 개정판으로 DLL 버전을 지정합니다.1.2.0.423
      • 이 새 빌드를 빌드 서버의 '릴리스' 폴더로 이동합니다.
      • 불필요한 파일을 제거합니다.
    • 필요한 경우 빌드 서버에서 IIS를 업데이트합니다.

그런 다음 모든 것이 라이브/스테이징에 들어갈 준비가 되었는지 확인하면 다음을 위해 또 다른 스크립트를 실행합니다.

  • 라이브/스테이징 서버에서 마이그레이션 실행
  • MS배포:현재 라이브/스테이징 사이트 보관
  • MS배포:빌드에서 라이브/스테이징으로 사이트 동기화

이 단계에 도달하는 것은 그리 좋지 않았지만 지금은 대부분 매력적으로 작동하고 있습니다. :D

현재 SA에 대해 몇 가지 유사한 질문이 있는 것 같으므로 프로세스를 변경하면서 이 답변을 업데이트하도록 노력하겠습니다.

다른 팁

나는 사용했다 비주얼 빌드 프로 수년 동안 매우 매끄럽고 사용하기 쉬우며 (당신이 언급한 것과 같은) 많은 표준 작업이 내장되어 있습니다.

나는 사용한다 인형, RPM을 빌드하기 위한 Makefile 및 대나무 나를 위해 이것을 하려고.내 시스템은 직접 적용되지 않으며 Windows 세계에 익숙하지 않지만 몇 가지 전송 가능한 패턴이 있습니다.

내 make 설정을 통해 내 앱을 구성하는 모든 것(php libs, php 웹사이트, perl 모듈, C 앱 등)에 대한 RPM을 구축할 수 있습니다.이는 수동으로 호출하거나 Bamboo를 통해 호출할 수 있습니다.이 RPM을 yum 저장소로 전송하고 꼭두각시가 최신(또는 올바른) 버전의 소프트웨어가 클러스터에 설치되어 있는지 확인합니다.

소프트웨어 패키지를 MSI로 자동화할 수 있습니까?Puppet은 Windows에서 소프트웨어 패키지 및 버전 설치를 관리할 수 있다고 생각합니다.

나는 이것을 위해 msdeploy를 사용합니다.완벽하게 작동합니다.

개미 소개;.NET 플랫폼의 경우 NAnt가 있으며 이를 MSDeploy와 함께 사용할 수 있습니다.Nant 스크립트에서 MSDeploy를 호출할 수 있습니다.

편집됨:상황을 명확하게 하기 위해;msdeploy로 모든 것을 할 수 있습니다.Nant를 반드시 사용해야 하는 것은 아닙니다.

xcopy를 사용하는 대신 msdeploy를 사용하여 서버에 대한 UNC 주소와 함께 -source:dirpath 명령을 사용할 수 있었습니다.핵심은ignoreAcls=true였으며 msdeploy 문자열에서 사용자 이름과 비밀번호에 대한 호출을 제거하는 것입니다.

msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true

이 예에서는 빌드 서버의 E 드라이브에서 라이브 서버의 D 드라이브로 사이트를 배포합니다.라이브 서버에서 공유 또는 이 수준의 디스크 액세스를 노출하는 데는 몇 가지 보안 고려 사항이 있습니다.현재 제한된 액세스 공유 폴더 사용을 조사하고 있습니다.

그런 다음 이 출력을 로그 파일로 파이프한 다음 참조를 위해 백업 아카이브로 이동합니다.로그 파일은 어떤 파일이 언제 이동되었는지 기록합니다. 출력 파이프 명령을 사용하여 위의 예를 계속합니다.

... > E:\archive\msdeploy.log

아무도 Final Builder를 언급하지 않았습니다. http://www.finalbuilder.com.Visual Build Pro와 동등합니다.자동화된 빌드 배포 하네스 생성을 위한 좋은 GUI

구조.작고 단순하며 절차적으로 보입니다.Ruby는 절대 아니기 때문에 Python으로 작성되었습니다(왜?).

Setup Factory(indigo rose에서)를 확인하세요.할 수 있는 일이 꽤 강력합니다.Windows 설치 프로그램 API를 사용합니다.아마도 필요한 것을 할 수 있을 것입니다.

Nant가 존재해야 하는 유일한 이유는 .NET 언어 세트를 사용하여 작업을 작성할 수 있는 Ant와 유사한 프레임워크를 갖기 위해서입니다.순수 .NET 개발자가 사용자 정의 작업을 작성하도록 하고 싶지 않다면 Ant를 사용할 수 없는 이유가 없습니다..NET 언어로 애플리케이션을 작성한다고 해서 반드시 .NET 빌드 도구를 사용해야 하는 것은 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top