2014-12-08 3 views
2

나는 6 개가 넘는 빌드로 젠킨스 서버를 가지고 있습니다. 이 빌드 각각은 병렬로 실행되는 4 ~ 6 개의 작은 작업을 트리거하는 상위 작업으로 구성됩니다. EC2 플러그인을 사용하여 대기중인 빌드 수에 따라 활성 슬레이브 수를 유지합니다. 다른 말로하면, 노예들이 항상오고가는 것입니다. 각 슬레이브에는 7 명의 실행자 (상위 작업 + 최대 (4, 6))가 있습니다.빌드의 모든 작업을 동일한 노드에서 독점적으로 실행하는 방법은 무엇입니까?

빌드의 모든 작업이 동일한 시스템에서 실행되는 것은 절대적으로 중요합니다. 빌드 B의 작업이 실행중인 컴퓨터에서 실행되도록 빌드 A의 작업을 허용 할 수도 없습니다.

내가 찾고있는 것은 Jenkins가 이전 빌드의 작업이 계속 활성화되어있는 한 노드의 비활성 실행자를 사용하지 못하게하는 방법입니다.

Throttle Concurrent Builds Plugin과 NodeLabel Parameter Plugin의 조합으로 실험을 보냈습니다. 불행하게도, 스로틀 된 빌드가 슬레이브의로드 통계에 기여하지 못하게하는 버그가있는 것 같습니다. 이는 다시 스로틀 된 빌드가 젠킨스가 추가 노예를 일으키지 않게합니다. 분명히 이것은 받아 들일 수없는 것이다.

답변

1

당신이 시도 할 수 있으며 "이 빌드는 매개 변수화" 를 사용하여 빌드 사이에 매개 변수로 $ NODE_NAME을 통과 한 다음에 그것을 사용하는 "이 프로젝트를 실행할 수있는 제한"좋은 생각이다

+0

. 나는 오늘 이것을 더 일찍 시도했지만 다음과 같은 문제에 부딪 히고있다 : EC2 플러그인이 2 개의 새로운 슬레이브를 회전시키는 원인이되는 2 개의 상위 작업이 있다고 가정 해 봅시다. 불행히도 이러한 노예들 중 첫 노예가 회전을 마쳤을 때, 젠킨스는 현재 7 명의 무료 집행자가 있으며이 두 노예 집행자에게 부모의 일자리를 모두 즉시 옮깁니다. 나는 이것을 피할 필요가있다. – Reck

관련 문제