2012-05-15 3 views
4

예를 들어, 시간에 따라 일별 집계를 사용하는 날짜 종속적 인 데이터 인을 처리하는 많은 jenkins 작업이 있습니다. Jenkins 트리거 시간 매개 변수 플러그인

그들 모두

주기적 를 실행하도록 구성하지만 기본 젠킨스는 동적 매개 변수와 함께보기 자동 정기 작업을 트리거 할 수없는, 우리는 bash는 스크립트에서, 실행 시간에 예를 스크립트 내부에 필요한 매개 변수를 계산해야된다 코드 :

PREVHOUR=$(date --date="-1 hour" "+%Y-%m-%d %H") 

우리는 또한 시작 시간을 구축 얻을 $ BUILD_ID 환경 변수를 사용할 수 있습니다.

문제는 : 슬롯 (노동자) 모두가 바쁜 경우 는 젠킨스는 에이 작업을 넣습니다. 트리거 후 다음 시간에 이 실행될 때 매개 변수 계산이 잘못됩니다.

그래서 우리는 시간을 시작 만들지, 트리거 시간을 얻을 수있는 방법을 찾을 수 없습니다. 물론

, 몇 가지 불편한 솔루션이 있습니다 같은 : PARAMS과 URL에 의해 스크립트 의 마지막 실행 시간을 추적

  • 파일을 다른 작업을 트리거 예약 시스템에 간단한주기적인 작업

    • 실행

    우리의 요구에 맞는 플러그인을 찾으려고 시도했지만 this plugin을 찾았지만 수동 (UI "빌드하기"클릭) 모드에서만 작동합니다.

    Jenkins가주기적인 트리거 시간에 다이나믹 파라미터를 계산하기위한 플러그인이 있습니까?

    감사합니다.

  • 답변

    4

    ScriptTrigger 플러그인을 사용할 수 있습니다. Groovy 스크립트를 주기적으로 평가하고 매개 변수화 된 빌드를 지원합니다.

    1. 프로젝트에매개 변수를 추가하십시오.
    2. 사용 그루비 스크립트 : 그것은 속성 트리거 시간을 기록합니다

      now = new Date(); 
      param = new File("trigger.time"); 
      param.write("TRIGGER_TIME="+now.toString()); 
      return true; 
      

      모든 폴링 "trigger.time"파일과 새로운 빌드를 트리거합니다.

    3. Properties File Path (고급 설정)을 "trigger.time"으로 설정하면 모든 예약 된 빌드에는 지정된 시간에 TRIGGER_TIME 매개 변수가 설정됩니다.
    +1

    대단히 고마워요! 좋지만 동시 빌드에 대해 걱정합니다. 이해할 수있는 것처럼 몇 개의 빈 슬롯이 표시되면 새 빌드에서 하나의 속성 파일을 읽지 않습니까? 내 생각에, 그들은 아마 그런 종류의 빌드의 마지막 트리거 시간에 대한 계산을 할 것입니다. 그러나 나는 그것을 방지하는 방법을 보았습니다 : 모든 트리거에 파일에 시간 값을 추가하고 스크립트에 의해 첫 번째 값을 읽고 제거하십시오. 아마도 스크립트 내에서 쓰기 잠금/잠금 해제 대기 파일에주의해야합니다. –

    +0

    답이 마음에 들면, 위의 화살표를 클릭하여 표시하십시오. – inger

    +0

    SCM을 폴링하는 데 'TRIGGER_TIME'을 어떻게 사용할 수 있습니까? 대답은'TRIGGER_TIME'을 만드는 법을 알려주는 것 같습니다. – Heinz

    2

    두 가지 제안 :

    1. 트리거 작업, 이럴는, 완벽하게 합리적인 솔루션입니다. 그래도 작업을 트리거하는 훨씬 더 편리한 방법을 사용할 수 있습니다 (Parameterized Trigger Plugin).

    2. 또 다른 접근법은 EnvInject Plugin을 사용하는 것입니다. 예를 들어 스크립트에서 매개 변수를 계산하고 속성 파일에 저장 한 다음 플러그인에서 파일의 환경 변수를 주입 할 수 있습니다. See this answer.

    +1

    감사합니다. 나는 두 번째 제안이 내가 다른 (그러나 실제로는 아주 비슷한) 대답에 주석을 달았을 때 더욱 편리하다고 생각한다. –

    +0

    예, 이것도 부딪쳐보세요 :) – inger

    관련 문제