문제

빌드/배포를 자동화하는 방법이 너무 많아서 사람들이 웹 튜토리얼에서 지원하는 다양한 시나리오를 모두 분석하기가 어려워지는 것 같습니다.그래서 나는 stackoverflow 군중에게 질문을 제시하고 싶었습니다 ...다음 구성을 사용하여 자동화된 빌드 및 배포 시스템을 설정하는 가장 좋은 방법은 무엇입니까?

  • 비주얼 스튜디오 2008
  • 웹 애플리케이션 프로젝트
  • CruiseControl.NET

내가 시도한 첫 번째 작업 중 하나는 CCnet이 출력을 자동으로 압축하여 서버에 복사하도록 하는 것이었지만 대상에서 압축을 풀려면 수동 작업이 필요합니다.그러나 모든 파일을 개별적으로 복사하려고 하면 대규모 응용 프로그램인 경우 잠재적으로 시간이 오래 걸릴 수 있습니다(빌드 서버가 사무실 데이터 센터 외부에 위치).알아요).

또한 특히 흥미로운 점은 dev, qa, uat 및 prod가 있으므로 여러 환경을 지원하는 방법입니다.

MS배포 정말 흥미로워 보이지만 문헌을 잘못 해석하지 않는 한 빌드 서버의 출력에서 ​​배포하는 시나리오에는 도움이 되지 않습니다.오히려 빌드 팜 전체에 하나의 빌드를 배포하는 데 유용할 것 같습니다...그러나 한 환경에서 다른 환경으로 배포하는 경우에도 구성 설정과 웹 서비스 URL 등을 수동으로 변경해야 합니다.

도움이 되었습니까?

해결책

저는 최근 회사에서 배포 자동화 작업을 수행하는 데 며칠을 보냈습니다.

CruiseControl, NAnt, MSBuild의 조합을 사용하여 앱의 릴리스 버전을 생성합니다.그런 다음 별도의 스크립트가 MSDeploy 및 XCopy를 사용하여 라이브 사이트를 백업하고 새 파일을 전송합니다.

우리의 솔루션은 이 질문에 대한 답변에 간략하게 설명되어 있습니다. 웹 애플리케이션 배포를 자동화하시겠습니까?

다른 팁

당신은 관심이있을 수 있습니다 MS배포. 여기 이에 대한 Scott Hanselman의 게시물이 있습니다.현재(2008년 9월) 기술 미리 보기로만 제공되지만 요구 사항에 따라 평가해 볼 가치가 있습니다.

다음과 같은 또 다른 새로운 빌드 도구(매우 지능적인 래퍼)가 있습니다. NUBuild.가볍고 오픈 소스이며 설정이 매우 쉽고 거의 손대지 않는 유지 관리 기능을 제공합니다.저는 이 새로운 도구를 정말 좋아하며 우리 프로젝트의 지속적인 빌드 및 통합 프로세스를 위한 표준 도구로 만들었습니다(우리는 75명의 개발자와 약 400개의 프로젝트를 보유하고 있습니다).사용해 보세요.

http://nubuild.codeplex.com/

  • 사용하기 쉬운 명령줄 인터페이스
  • 모든 .NET 프레임 워크 버전을 타겟팅하는 기능 IE1.1, 2.0, 3.0 및 3.5
  • XML 기반 구성 지원
  • 프로젝트 및 파일 참조를 모두 지원합니다
  • 주어진 프로젝트에 대한 "완전한 순서 빌드 목록"을 자동으로 생성합니다 - 터치 유지 보수가 없습니다.
  • 원형 의존성을 감지하고 표시하는 기능
  • 병렬 빌드 수행 - 생성 된 빌드 목록의 프로젝트 중 어느 것을 독립적으로 구축 할 수 있는지 자동으로 결정합니다.
  • 프록시 어셈블리를 처리하는 능력
  • 빌드 프로세스에 대한 시각적 단서를 제공합니다"% 완료", "현재 상태"등을 보여줍니다.
  • XML과 텍스트 형식 모두에서 자세한 실행 로그를 생성합니다.
  • Cruise-Control.net Continuous Integration System과 쉽게 통합됩니다
  • 2.0 + 버전을 타겟팅 할 때 xmllogger와 같은 사용자 정의 로거를 사용할 수 있습니다.
  • 오류 로그를 구문 분석하는 기능
  • 구축 된 어셈블리를 사용자 지정된 위치에 배치하는 기능
  • 소스 코드를 소스 제어 시스템과 동기화하는 기능
  • 버전 관리 기능

원격으로 명령을 실행할 수 있나요?그만큼 PsExec 유틸리티 시스틴터널 원격 시스템에서 명령줄 압축 해제 프로그램을 실행할 수 있습니다.빌드를 .zip 파일로 원격 사이트에 복사하는 스크립트가 있는 경우 파일 압축을 풀기 위해 PsExec 호출에 한 줄만 더 있으면 됩니다.

나는 가지고 있었다 관련 질문 자동화된 빌드에서 배포 가능한 파일 세트를 가져오는 방법에 대해 설명합니다.웹 배포 프로젝트(이전 질문의 링크 및 모든 항목)가 내가 필요한 작업을 수행했다는 것을 알았습니다. 이는 VS 및 MSBuild 추가 기능입니다.

이는 ASP.NET뿐만 아니라 모든 개발에서 공통적으로 발생하는 문제입니다(더 빨리 읽었더라면 좋았을 텐데요).개발자 중 한 명으로서 우리 팀은 자연스럽게 다음을 사용합니다. 빌드마스터 전체 릴리스 프로세스에 대해 내부적으로는 대부분의 시나리오에서 무료입니다.도구 내에서 우리는 모든 표준 CI 빌드를 수행하여 아티팩트를 생성한 다음 특정 애플리케이션이나 환경에 따라 내부 또는 외부에서 호스팅하는 40개 이상의 서버 중 하나에 이러한 아티팩트를 배포하는 자동화 프로세스를 설정할 수 있습니다. .

다양한 테스트 환경에 대한 배포를 구체적으로 언급했으므로 이는 도구의 기본 측면입니다.아이디어는 환경 워크플로우를 모델링하는 것입니다(예:통합 -> QA -> 프로덕션)을 이미 갖추고 있으며 본질적으로 소스 제어에서 프로덕션까지 빌드를 전반적으로 승격시킵니다.대부분의 경우 아티팩트를 환경에 배포하는 배포 작업을 추가하는 것만큼 간단하지만 다른 경우에는 훨씬 더 복잡할 수 있습니다.

또한 구성 파일 변경이 BuildMaster에 내장된 또 다른 구성 요소인 배포의 일부라고 우연히 언급하셨습니다.우리가 가진 아이디어는 도구 자체를 모든 구성 파일 및 배포의 중앙 허브로 사용하여 배포 계획에서 간단한 "구성 파일 배포" 작업을 통해 최신 변경 사항이 자동으로 적용되도록 하는 것이었습니다.

이 프로세스와 관련하여 언급하지 않은 한 가지는 데이터베이스 배포 측면입니다.대부분의 ASP.NET 응용 프로그램에는 연결된 데이터베이스가 필요합니다. 그렇지 않으면 정적 HTML 파일일 수도 있습니다.배포할 때마다 데이터베이스 스키마가 적절한 데이터베이스 버전으로 업데이트되는 것이 중요합니다.놀랍게도 BuildMaster 내에 이 문제도 처리하는 모듈이 있습니다.아이디어는 도구 자체 내에 DDL-DML 스크립트를 저장하고 스크립트를 실행하는 것입니다. 한 번만 환경별로 빌드가 배포될 때 각 환경의 모든 데이터베이스가 최신 상태인지 확인합니다.기타 스크립트(예:저장 프로시저, 뷰, 트리거 등)은 본질적으로 코드 파일이므로 소스 제어에 속합니다.이러한 DROP-CREATE-CONFIGURE 유형 스크립트는 대부분의 경우 간단한 배포 작업을 통해 매번 실행할 수 있습니다.

대부분의 개발자가 생각하지 않는 배포 퍼즐의 또 다른 부분은 프로세스 자동화입니다.많은 개발자는 이러한 프로세스를 수동으로 수행하기 위해 승인을 수행하거나 변경 요청 양식을 작성해야 합니다.다시 말하지만, 이 모든 기능은 BuildMaster 내 자동화된 작업 흐름 설정의 일부로 제공됩니다.모든 단위 테스트를 통과하지 않은 경우 QA 환경으로의 승격을 허용하지 않거나 QA 팀의 누군가가 빌드를 승인하지 않고 문제 추적 도구의 모든 문제가 해결/종료되지 않는 한 스테이징 환경으로의 승격을 차단하는 차단기를 설정할 수 있습니다. 그 특별한 릴리스.

답변에서 CC.NET을 빠뜨렸다는 사실을 깨달았지만 우리 애플리케이션은 모두 BuildMaster를 통해 구축 및 배포되었으므로 더 이상 필요하지 않습니다. 하지만 드롭 위치에서 아티팩트를 쉽게 가져와 나중에 환경에 배포할 수는 있었습니다.

많은 사람들이 .NET 프로젝트에 CC를 사용하지만 Jenkins, Sonarqube를 사용하지 않는 이유는 무엇입니까?그들은 당신이 필요한 모든 것을 얻었습니다.이 모든 것을 3일 만에 설정했습니다.저는 Win 2008 서버 R2, MSSQL, Jenkins, VIsual SVN 및 Sonarqube를 보유하고 있습니다.

모든 것이 훌륭하게 작동하며 프로젝트에 대한 모든 측정항목을 얻을 수 있습니다.Sonarqube는 Gallio, Gendarme, FXcop, Stylecop, NDepths 및 PartCover를 사용하여 측정 항목을 가져오며 SonarQube는 많은 구성 없이 자동으로 이 작업을 수행하므로 이 모든 것이 매우 간단합니다.

나도 당신을 위해 사진을 올려서 느낌을 받아요.다음은 Jenkins 마녀가 빌드하고 Sonar 메트릭과 IIS에 자동으로 배포하기 위한 또 다른 작업을 가져오는 것입니다.

그리고 Sonarqube는 내 프로젝트의 모든 측정항목입니다.이것은 간단한 MVC4 앱이지만 훌륭하게 작동합니다!:

더 많은 정보를 원하시면 좀 더 구체적으로 말씀드릴 수 있지만 최소한 젠킨스를 고려해 보시는 것이 좋을 것 같습니다.CC 제품군이 더 나은 경우 적어도 선택하기 전에 좋은 대안을 살펴보았습니다.

이 전체 설정에서는 MSBuild를 사용하고 앱도 빌드하고 배포합니다.

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