[continuous-integration] 완벽한 연속 통합 환경을 위해 Vagrant와 Jenkins를 결합하는 방법은 무엇입니까?

실행할 소프트웨어 요구 사항이있는 프로젝트가 있습니다 (예 : 특정 버전의 Apache, PHP 버전, MySQL 데이터베이스 인스턴스 및 몇 가지 다른 소프트웨어).

이미 Vagrant를 발견 했으므로 가상 환경이 모두 설정되었습니다. 구성 파일과 쿡북에서 상자를 만들 수 있습니다.

또한 Jenkins 와 같은 지속적 통합 시스템의 장점을 이해했습니다 .

이제이 두 세계 (Vagrant 및 Jenkins)를 결합하여 완벽한 연속 통합 환경을 얻으려고합니다. 좀 더 구체적으로 말하면 Jenkins를 실행하는 컴퓨터에 프로젝트에 필요한 SW를 설치하지 않고 Vagrant가 제공하는 가상 환경을 사용하여 주기적으로 프로젝트를 빌드하고 싶습니다. CI 소프트웨어 (Jenkins)는 Vagrant 상자를 빌드하고 그 위에 프로젝트를 빌드하고 테스트합니다.

이를 달성하기 위해 환경을 어떻게 설정 하시겠습니까?



답변

빌드 시스템에 대한 좋은 솔루션입니다. 내 제안 :

  1. 현재 젠킨스는 마스터 CI로 작동합니다 (아마도 젠킨스 사용자가 시작 함).
  2. 젠킨스 슬레이브 모드로 작동하도록 동일한 컴퓨터 또는 다른 컴퓨터에서 다른 사용자를 만듭니다.
    • jenkins slave는 jenkins master에서 호출 할 수 있으며 vagrant에 대한 권한 및 환경을 가진 vagrant와 같은 다른 사용자를 사용할 수 있으므로 원래 jenkins 마스터 서버를 방해하지 않습니다.
    • 기본 방랑 상자를 만든 다음 재사용하여 배포 속도를 높일 수 있습니다.
  3. 대부분의 설치 정보 (패키지)는 꼭두각시 (또는 셰프)가 관리하여 VM 상자에로드 할 수 있습니다.

아마도 당신은 veewee를 살펴볼 수 있는데 , 이는 즉시 방랑 상자를 만들 수 있습니다.

여기입니다 젠킨스 CI와 방랑로 만들기 CI 쉽게 이 제안을 내 가이드 라인에 대한.


답변

현재 Jenkins CD 1.532.3을 지원하는 Jenkins 용 Vagrant 플러그인을 사용해 볼 수 있습니다.

http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html 에서 실행중인이 플러그인의 데모를 볼 수 있습니다.


답변

개인적으로 Hashicorp Packer를 사용하여 개발자를위한 Vagrant 상자를 구축 한 다음이를 사용하여 CI 시스템에서 실행할 수있는 Docker 또는 AWS 또는 OpenStack 이미지를 출력하는 것이 좋습니다. Vagrant는 멋진 도구이지만 CI 시스템에서 VM의 오버 헤드가 약간 높을 수 있습니다. 특히 정말 빠른 피드백을 원하는 경우 CI 시스템이이를 지속적으로 위아래로 회전시킬 수 있습니다.

이전 클라이언트에서 우리는 기본적으로 시스템과 함께 Vagrant 머신을 한 번 부팅 한 다음 해당 VM 내부에서 Docker / virtualenv 빌드를 실행하고 주요 업그레이드가 있거나 환경이 올바르게 작동하지 않는 문제가있을 때 주기적으로 제거했습니다.

https://www.packer.io/docs/builders/openstack.html


답변