2016-07-13 2 views
0

누군가 나를 도울 수 있습니다. 대기열에 빌드가 더 있더라도 일부 프로젝트의 경우 Jenkins에서 한 번에 하나씩 빌드를 실행하고 싶습니다. 저는 집행자의 수를 제한 할 수는 있지만 모든 프로젝트에 영향을 미칠 것이며이 솔루션이 저에게 맞지 않는다는 것을 알고 있습니다. 이 상황에서 권장하는대로 Throttle Concurrent Builds 플러그인을 사용하려고 시도하지만 작동하지 않으며 이유가 없습니다.Jenkins에서 일자리를 순차적으로 실행

이 플러그인을 설치하기 전에 모든 빌드가 올바르게 실행됩니다. 설치 (방금 설치 한 후, 구성을 변경하지 않음) 빌드가 대기열로 이동하고 절대로 시작하지 않습니다 (2 개의 실행 프로그램을 사용하며 둘 다 유휴 상태에 있음). 나는 모든 것이 나의 노드에서 괜찮다는 것을 확인했다. 그것은 온라인이고, executor의 숫자는 2와 같으며 가능한 많이 활용하도록 설정되어있다. 여유 공간에는 문제가 없습니다. 유언 집행 인의 수가 증가해도 도움이되지 않습니다.

그런 다음 실험과 마찬가지로 동시 실행 스로틀을 구성하려고했습니다. 나는 'Configure System'에 가서 'Maximum Total Concurrent Builds'와 'Maximum Concurrent Builds per Node'가 1로 설정된 'Multi-Project Throttle Category'를 추가했습니다. 프로젝트 중 하나를 선택하여 'Throttle Concurrent Builds'옵션을 선택했습니다. . 다음으로, '이 프로젝트를 하나 이상의 범주로 조정'을 선택하고 방금 작성한 '다중 프로젝트 스로틀 범주'의 확인란을 선택했습니다. 결과적으로 내 프로젝트에서 '지금 빌드'를 클릭해도 아무런 변화가 없었습니다. 심지어 빌드 대기열에 가지 않았습니다.

Throttle Concurrent Builds 플러그인을 사용 중지하면 프로젝트가 다시 작성됩니다.

나는이 개 질문이 : 나는 스로틀 동시 활성화 플러그인 (대기열로 이동을 시작하지 않거나 전혀 나타나지 않는 빌드)를 구축있을 때 내가 어떤 프로젝트를 빌드 할 수없는 이유를

  1. ?

  2. 순차적으로 실행중인 일부 작업 (실행 프로그램의 수를 변경하는 것 이외의 다른 작업)이 있습니까? Windows 배치 명령을 실행하는 일부 프로젝트가 있습니다. 프로젝트를 계획 할 몇 개의 프로젝트 (프로젝트 수와 그 조합이 가변적이든)는 항상 개별적으로 실행해야합니다.

사전에 안나

PS 감사합니다. 방금 젠킨스와 함께 모험을 시작했습니다. 이해해주세요.

+0

여기에 좋은 토론이 있습니다. http://stackoverflow.com/questions/11158382/jenkins-to-not-allow-the-same-job-to-run-concurrently-on-the-same-node – Amit

+0

한 번에 각 작업의 단일 인스턴스 만 원하십니까? 또는 JobA, JobB, JobC 등 "순차적으로"실행하려는 작업 목록이 있습니까? – BitwiseMan

+0

하나의 플러그인 만 기억하면됩니다. 빌드 플로우를 사용하면 작업 시퀀스의 워크 플로우를 순차적으로 또는 병렬로 정의 할 수 있습니다. https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin –

답변

2

젠킨스가 어떤 작업의 인스턴스 하나만 실행하게하려면 특별한 플러그인이 필요하지 않습니다. 해당 작업에 대해 "필요한 경우 동시 빌드 실행"확인란의 선택을 취소하십시오. 해당 옵션 상태에 대한 도움말로

는 :

이 옵션을 선택

, 여러 병렬로 실행될 수있는이 프로젝트의 빌드.

기본적으로 한 번에 하나의 프로젝트 빌드 만 실행됩니다. 첫 번째 빌드가 완료 될 때까지 해당 프로젝트 빌드를 시작하라는 다른 요청은 빌드 대기열에 남아 있습니다. 프로젝트는 종종 데이터베이스 나 하드웨어와 같은 특정 리소스에 독점적으로 액세스해야하기 때문에 안전한 기본값입니다.

이 옵션을 사용하면이 프로젝트를 처리 할 수있는 빌드 실행 프로그램이 충분하면이 프로젝트의 여러 빌드가 병렬로 실행됩니다.언제든지 사용할 수있는 실행 프로그램이 충분하지 않으면 추가 빌드 요청이 정상적으로 빌드 큐에 보관됩니다.

이 단순한 "one-or-many"동시성 모델은 설명 된 것을 포함하여 다양한 용도로 사용하기에 충분합니다.

자세한 제어가 필요한 경우에만 Throttle Concurrent Builds Plugin으로 전환해야합니다. 예를 들어 "에이전트 당 최대 2 개의 인스턴스가있는 7 개의 동시 인스턴스 허용 (사용 가능한 실행 프로그램 수에 관계없이)"

+0

우선, 답변 해 주셔서 감사합니다 :) 아마 내 설명이 정확하지 않습니다. 모든 프로젝트에서 '필요한 경우 동시 빌드 실행'확인란이 선택 취소되어 있습니다. Windows 배치 명령을 실행하는 자유형 프로젝트가 있습니다. (projectA와 projectB로 이름을 짓고) 순차적으로 빌드하고 싶습니다. 예를 들어 예약 할 때 10 명의 프로젝트가 처음 2 번 실행됩니다 (실행자의 수는 2로 설정 됨). 다른 프로젝트는 괜찮지 만 다른 프로젝트가 빌드되지 않은 경우 projectA 또는 projectB는 별도로 빌드해야합니다. – Anna

0

왜 Throttle Concurrent Builds Plugin이 작동하지 않는지 알아 냈습니다. 내 젠킨스 버전은 정말 늙었습니다. 2.13 프로젝트로 업그레이드하면 예상되는 방식으로 빌드가 시작되고이 플러그인이 필요한 것입니다. 도와 줘서 고마워!

1

다음 플러그인 젠킨스위한 것이며, 당신이 찾고있는 무엇을 할 것인가 :

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

당신은 그것의 빌드 '단계'를 정의 할 수있는 'MultiJob'프로젝트를 만듭니다.

많은 '단계'는 MultiJob 프로젝트의 일부로 설정 될 수 있으며 각 단계에는 하나 이상의 "기타"Jenkins 작업이 "포함"됩니다. MultiJob 프로젝트가 실행되면 단계가 순차적으로 실행됩니다.

따라서 N 개의 작업을 순차적으로 실행하려면 N 개의 단계를 MultiJob 프로젝트에 추가 한 다음 각 단계에 하나의 작업을 추가하십시오.

참고 : 각 단계에는 '병렬 실행'또는 '순차적으로 실행'을 나타내는 설정이 있습니다. 이는 단계에 포함 된 작업을 순차적으로 또는 병렬로 실행한다는 의미입니다. 그러나 '순차적으로 실행'을 설정하면 해당 작업이 여전히 병렬로 실행되는 것으로 보입니다. (이 설정을 자세히 조사해야 함).

+0

일부 도구 또는 라이브러리를 답으로 게시하지 마십시오.답변 자체에서 적어도 어떻게 문제를 해결하는지 보여줍니다 (http://meta.stackoverflow.com/a/251605). –

+0

@BaummitAugen - 귀하의 의견을 듣고 플러그인 작동 방식에 대한 추가 정보를 제공했습니다. 저는 직장에서 플러그인을 내부적으로 사용했으며, OP가 요구하는 것을 제공한다는 것을 보증 할 수 있습니다. –

0

빌드 단계를 추가하여 MultiJob 플러그인을 사용했습니다.

나는, 트리거/호출이 다른 프로젝트을 기반으로 사용되는 트리거 프로젝트는 그들의를 구축 마칠 때까지 첫째, 다음 블록을 선택해야 할 프로젝트의 이름을 입력. 내가 순서대로 수행하고 싶은 각각의 프로젝트를위한 빌드 단계를 추가했다.

관련 문제