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


85

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

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

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

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

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


4
또한 Jenkins 설정은 Vagrant 상자이므로 여러 플랫폼에서 많은 차이가 있으므로이 CI 환경을 여러 플랫폼에서 실행할 수 있습니다.
Stephan Eggermont 2011 년

1
그런 환경을 만들었습니까? Docker와 Jenkins의 결합은 이미 잘 알려져 있지만 유일하게 좋은 옵션 인 IMO가 Vagrant + Jenkins 인 Windows 환경에는 충분하지 않습니다. 고려해야 할 몇 가지 측면이 있습니다. 예를 들어 우리는 실제로 슬레이브가 필요한지, 어떤 상황에서 단일 서버를 사용하여 필요에 따라 프로젝트별로 방랑 빌드 환경을 만들 수 있습니까 (많은 회사에서 지속적으로 빌드하는 프로젝트는 거의없고 대부분은 거의 빌드하지 않음). 또는 디스크 공간을 줄이기 위해 중복 제거 시스템 위에 이것을 사용해야합니다.
majkinetor 2014

답변:


35

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

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

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

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


1
링크가 끊어졌습니다.
langlauf.io

2
누군가 끊어진 링크에 관심이있는 경우 Jenkins CI와 Vagrant를 사용하여 CI를 더 쉽게 만들기
Gilberto Treviño

12

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

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


7
이 플러그인은 1.490 이상의 Jenkins를 지원하지 않으므로 큰 제한이 있습니다
kenyee

:( 너무 노예에 방랑 실행을 지원하지 않습니다
크리스토프 Furmaniak에게

1
예,하지만 VM의 모든 수명주기를 직접 처리해야합니다 (작업이 끝날 때 생성, 삭제 여부, ...). 플러그인의 기본 아이디어는 플러그인이이를 수행 한 다음 주요 목적에 집중할 수 있다는 것입니다. VM을 격리 된 컨테이너로 사용합니다.
Christophe Furmaniak 2014

2
언급 된 플러그인에는 성가신 문제가 있지만 아직 해결되지 않았으며 ( issues.jenkins-ci.org/browse/JENKINS-26326 ) 1 년 전에 개발이 중단되었습니다. 권장하지 않습니다.
Ross Ivantsiv 2015-08-06

1
요청에 따라 vagrant 인스턴스를 실행하여 빌드를 수행하는 것은 올바른 작업처럼 들립니다. 이 플러그인이 여전히 작동하지 않는다면?
Atifm

1

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

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

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


내가 물어 보면, 젠킨스를 별도의 사용자로 실행 했나요? 그렇다면 어떻게 방랑자에 대한 액세스를 제공 할 수 있었습니까? 감사합니다
Jaswanth Manigundan 2017 년

vagrant가 정상적으로 설치되는 한 시스템 경로에 배치됩니다. 상자 자체는 일반적으로 현재 사용자의 홈 디렉토리에로드되지만 환경 변수로 방랑자 홈을 재정의 할 수 있습니다. 우리는이 모든 것을 결합하여 빌드 프로세스의 특정 버전 부분을 박스 풀로 만들어 한 번 캐시 한 다음 재사용했습니다.
dragon788
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.