지속적인 통합 서비스를위한 “클린 슬레이트 시스템”을 보장하는 효과적인 방법 nginx 사이트를

프로젝트를위한 CI (Continuous Integration) 서비스를 설정하려고합니다. 해당 CI 서비스는 배포를 포함하여 프로젝트 수명의 모든 측면을 제어해야합니다.

즉, 각 반복마다 CI 에이전트가 깨끗한 시스템 (특히 Ubuntu Server)을 가져 와서 프로젝트를 배치하고 테스트를 실행하기를 원합니다.

생태계가 다소 특이하기 때문에 CI 서비스를 처음부터 직접 작성할 것입니다. 문제는 각 CI 반복에 대해 클린 슬레이트 시스템을 효과적으로 제공하는 방법입니다.

프로젝트 배포는 데비안 패키지 몇 개를 설치하고 여러 nginx 사이트를 구성하며 시스템 전체의 구현 언어 별 패키지 관리자 (LuaRocks)에 일부 패키지를 설치합니다. 그보다 더 방해가되는 것은 없습니다 (믿습니다). 따라서 절대적인 격리와 청결을 보장하는 것보다 깨끗한 슬레이트를 빠른 속도로 (최신 하드웨어에서 1 분 이내에, 더 빠르면 더 좋게) 설정할 수있는 것이 더 중요합니다.

필요한 작업을 수행하는 방법에는 두 가지가 있습니다.

  • 어떤 종류의 감옥을 만들 수도 있습니다 (예 : lxc).
  • 또는 스냅 샷을 생성하고 사용할 수있는 가상 머신을 설치하십시오.

그러나이 시점에서 나는 결정할 정보가 충분하지 않습니다.

무엇을 조언 하시겠습니까? 다른 옵션이 있습니까? 특정 공구 이름이 있습니까?

참고 : CI 서비스는 Citrix XenServer 게스트 내에서 실행됩니다. 가격이 합리적이라면 유료 솔루션도 괜찮습니다. (일반적으로이 분야에서는 합리적이지 않습니다.) 원격 CI 솔루션이 양호하지 않습니다.



답변

Chef / Vagrant를 살펴보십시오 . 그것이 충분히 빠를 지 확실하지 않지만 조사해야 할 것이 있습니다.

Chef에 익숙하지 않은 경우를 위해 서버의 간단한 코드 기반 프로비저닝을 허용하도록 설계된 서버입니다. 웹 캐스트 중 하나를 살펴 보는 것이 좋습니다. 장고 쉐프 웹 캐스트

유랑, 비제, 요리사 솔로 및 나이프 솔로 물건 나는 이것이 당신이하고 싶은 대부분의 것을 덮고 있다고 생각합니다.

Vagrant Blog post Vagrant를 사용한 서버의 빠른 설정을 보여주는 블로그 게시물입니다.


답변

한 번 봐 가지고 젠킨스 . VMWare 또는 VirtualBox 또는 Amazon / a Eucalyptus 클라우드의 가상 머신에서 빌드를 실행할 수있는 플러그인이 있습니다 . 클라우드에서 실행되는 가상 머신의 경우 패키지 설치와 같은 단계를 수행 할 수있는 init 스크립트를 지정할 수 있습니다.


답변

VM 인프라를 사용하고 기본 템플릿을 만들거나 @LarsKotthoff가 제안한대로 클라우드를 사용합니다. 빠르게 회전시킬 수 있으며 시작 위치를 확실하게 확인할 수 있습니다.

그러나 궁극적으로 진행중인 작업을 조정하려면 머신 외부에 무언가가 필요합니다 (머신을 설정하고 머신에서 원하는 프로세스를 시작하십시오). 나중에 검사를 위해 스크립트 출력을 캡처하는 기능에 대해 Jenkins를 살펴 보겠습니다.

Jenkins는 CI 서버로 시작했지만 지금까지 함께 작업 한 많은 조직에서이 서버를 그 이상으로 사용하고 있지만 실제로는 수동으로 또는 일정에 따라 결과를 포착하고 결과를 캡처하고 예상 한 결과를 검증하는 도구입니다. 매우 유연합니다.


답변

프로젝트를위한 CI (Continuous Integration) 서비스를 설정하려고합니다. 해당 CI 서비스는 배포를 포함하여 프로젝트 수명의 모든 측면을 제어해야합니다.

Jenkins는 꽤 많이 언급되었습니다. 스크립트를 처음부터 다룰 수 있지만 Jenkins는 오버 헤드를 줄이면서 동일한 유연성을 모두 제공합니다.

즉, 각 반복마다 CI 에이전트가 깨끗한 시스템 (특히 Ubuntu Server)을 가져 와서 프로젝트를 배치하고 테스트를 실행하기를 원합니다.

프로젝트 배포는 데비안 패키지 몇 개를 설치하고 여러 nginx 사이트를 구성하며 시스템 전체의 구현 언어 별 패키지 관리자 (LuaRocks)에 일부 패키지를 설치합니다. 그보다 더 방해가되는 것은 없습니다 (믿습니다). 따라서 절대적인 격리와 청결을 보장하는 것보다 깨끗한 슬레이트를 빠른 속도로 (최신 하드웨어에서 1 분 이내에, 더 빠르면 더 좋게) 설정할 수있는 것이 더 중요합니다.

가상 머신 이미지가 유용한 곳입니다. 깨끗한 이미지를 설정하고 모든 머신에서 포크를 시작하도록 할 수 있습니다. 원본 이미지는 수정되지 않지만 테스트에서 차이를 알 수 없습니다. 1 분 안에 부트 스트랩 이미지를 얻을 수 있어야합니다.

가격이 합리적이라면 유료 솔루션도 괜찮습니다. (일반적으로이 분야에서는 합리적이지 않습니다.) 원격 CI 솔루션이 양호하지 않습니다.

한 번에 여러 대의 컴퓨터를 실행하려면 Nimbula를 확인하십시오 (나는 뻔뻔 스럽습니다. 나는 그들을 위해 일합니다). 소규모 배포의 경우 무료이며 테스트를 위해 또는 기타 다른 용도로 개인 클라우드를 통합 할 수 있습니다. Jenkins와 오케스트레이션 파일간에 호스트 서버, 테스트 클라이언트 및 기타 모든 항목을 스핀 업하여 상호 작용없이 전체 테스트 코드 영역을 자동으로 실행할 수 있습니다.


답변