2012-10-16 6 views
5

I 필요한 4 작업 위에서젠킨스 병렬 트리거 기다린다

가 가
  • A가 B를 실행한다 & C가 평행 및 C는 어떤 inturn D. 트리거
      의 다음 순서

      JOB A 
      |------> JOB B 
      |------> JOB C 
            |------> JOB D 
      

      에서 실행될 필요

    1. A는 3 명이 모두 완료 될 때까지 계속 실행 중이어야합니다.

  • 나는 다음과 같은 플러그인을 시도하고 내가 플러그인
  • Multijob 플러그인
  • 다중 구성 프로젝트
  • Paramterized 트리거 플러그인
  • 에 참여

    • 을 찾고 무엇을 달성 할 수

      내가 어떤 플러그인이 있습니까? 시도하지 않은이 해결에 나를 도울 것입니다. 아니면 다른 방식으로 달성 될 수 있습니다. 제발 조언.

    답변

    1

    Locks and Latches plugin을 사용해보십시오.

    +0

    [그 즉시 사용되지되는 (https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation). 어쨌든 나는 그것이 작동하도록하는 방법에 관한 문서를 찾을 수 없었다. 있니? – raksja

    +0

    Saw [this] (http://stackoverflow.com/a/6279210/150371) 심지어 자물쇠를 풀 수있는 방법을 알아 내지 못했습니다. – raksja

    1

    이것은 최적의 방법은 아니지만 작동해야합니다. Parameterized Trigger Plugin을 사용하십시오. 작업 A에 빌드 단계를 추가 (빌드 후 작업 아님)하여 작업 B와 C를 동일한 빌드 단계에서 시작하고 완료 될 때까지 블록하십시오. 작업 C에서 작업 D를 시작하고 완료 될 때까지 차단하는 빌드 단계 (게시 빌드 작업 아님)를 추가합니다. 그러면 Job A가 전체 실행 시간을 유지해야합니다.

    이것은 실제로 최적이 아닙니다. 작업 A는 B와 C가 끝나기를 기다리면서 열려 있습니다. D가 끝날 때까지 C를 열어 둡니다.

    작업 A가 해당 기간 동안 계속 실행해야하는 몇 가지 이유가 있습니까? 또 다른 가능성은 B와 C가 시작된 후에 Job A를 종결 시키되, B, C, D 작업이 성공한 후 최종 행동을 수행 할 Job A에 대한 승격이 있어야합니다.

    +0

    제안 해 주신 것에 대해 감사드립니다. @Jason. 나는 이미이 접근법을 시도했다고 생각한다. 하지만 여기서 문제는 B & C에 2 개의 다른 매개 변수 집합을 전달해야한다는 것입니다. B의 경우 NodeLabel 플러그인을 사용하여 실행할 Node와 속성의 C 집합에 대한 것입니다. _ Parameterized Trigger Plugin에서 두 개의 다른 매개 변수 세트로 동시에 두 작업을 트리거하는 옵션이 없습니다. ( – raksja

    1

    동일한 시스템을 구축하려고합니다. 나는 packager/build/deploy 작업과 해당 테스트 작업을 실행해야하는 인증 파이프 라인을 구축 중입니다. 모든 작업이 성공적으로 완료되면 테스트 결과를 집계하고 자동화 된 Maven 릴리스를 수행 할 수있는 릴리스 작업을 트리거하려고합니다.

    시스템 시각화를 위해 파이프 라인 빌드 빌드를 선택했습니다. 처음에는 블로킹 빌드가있는 매개 변수화 된 트리거 플러그인으로 시도했습니다. 포스트 빌드에서만 아티팩트를 보관하므로이 아티팩트/핑거 프린팅 및 다운 스트림 빌드 관계를이 방법으로 보관할 수 없습니다. 그런 다음 Post 빌드 활동에 매개 변수화 된 트리거를 넣습니다.이 방법은 내가 다운 스트림, 지문, 집계 시험 결과 만 빌드 오류가 작업 체인을 상류 버블 링되지 않은 상류 작업이 마침내이이 plugins-

    을 사용하여 달성 할 수 있었다

    을 차단하는 비했다 빌드 설정을 할 수 있었다플러그인에 참여
  • 플러그인
    • 빌드 파이프 라인
    • MultiJob 플러그인
    • 지문 플러그인
    • 복사 유물

    내가 젠킨스 1.514

    시스템을 사용하고이

    트리거 작업처럼 보인다 -> 구축 (및 배포) 작업 (1..N) ---> 테스트 작업 (1 .. N)

    트리거 작업 -

    • 는 MultiJob로 만들고 쉘 간부에 지문 파일을 생성

      트릭은 그이

      ARCHIVEDIR=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive 
      mkdir $ARCHIVEDIR 
      cp fingerprint.txt $ARCHIVEDIR 
      
      • 이 MultiJob 단계가 구성된 만들기는 스크립트 실행해야 할, 파일이 빌드 동안 보관해야한다는 것입니다 date +%s>

      fingerprint.txt

      는 에코 빌드/배포 작업.

    • 빌드/배포 작업 자체는 멀티 롭입니다.
    • 위의 빌드/배포 작업을 생성하기위한 동일한 단계에 따라 지문을 사용하여 지문을 만듭니다.
    • 복사 상류 작업에서 fingerprint.txt 유물
    • 새로운 지문 파일을 생성하고 힘이 위의 단계 유사한에서
    • 수집 된 JUnit 결과를 보관 테스트 작업을 트리거 배포 작업에
    • 설정 MultiJob 단계 최종 테스트 작업. 트리거 작업에서


  • 은, 만 트리거 작업의 안정적인 빌드의 분리 프로젝트를 실행 '을 실행 후 가입에서 작업을 빌드'를 선택하여 릴리스 작업을 실행하는 플러그인을 가입 사용합니다. 이렇게하면 모든 단계가 빌드 파이프 라인보기에 나타나고 트리거 작업이 모든 다운 스트림 빌드가 완료 될 때까지 차단되고 가장 나쁜 다운 스트림 빌드로 상태가 설정되어 릴리스 작업의 결정 포인트가됩니다. Multijob 플러그인

    당신이 다운 스트림/업스트림 작업 체인 정의와 혼란을 중지하려는 경우

    +0

    Continuous Delivery 파이프 라인에 대한 흥미로운 솔루션처럼 들리지만 간단한 방법이 없다면 궁금합니다 – vezenkov

    1

    . 또는 순서대로 또는 병렬로 실행될 Jenkins 작업의 전체 계층을 추가하려고 할 때. MultiJob에서 모든 Phases 및 Job으로 매개 변수 상속을 구현하는 컨텍스트를 빌드 플로우에 추가하십시오. 단계는 순차적이며 각 단계 내부의 작업은 평행합니다.

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

    +0

    이 플러그인 또한 병렬/직렬 작업을 관리하는 데 유용 할 수 있습니다 : [https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin] –

    +0

    이것은 또한 약간의 아이디어를 줄 수 있습니다 : [http : // stackoverflow .com/questions/4510640/명령 줄 - 목적 - 오브 - 목적] –

    2

    사용 DSL 스크립트와 흐름 플러그인을 구축 할 수 있습니다.

    는 실행이 예를 시도 :

    build("job A") 
    
        parallel 
        (
         {build("job B")} 
         {build("job C")} 
        ) 
    
        build("job D") 
    
    관련 문제