2013-04-17 2 views

답변

3

내가 직접 시도하지 않은,하지만 FSTrigger 플러그인은 당신이 원하는 것을 할 것 같다 :

FSTrigger는 파일 시스템과 트리거 빌드 경우를 모니터링하는 폴링 메커니즘을 제공하는 파일 또는 파일의 집합 변경되었습니다.

당신은 스크립트로 디렉토리를 모니터링 할 수 있다면, 당신은 HTTP와 빌드가 wget 또는 curl로, 예를 들어, GET 트리거 할 수 있습니다 .. 약간 관련이 있지만

wget -O- $JENKINS_URL/job/JOBNAME/build 
1

는이 문제처럼 보인다 시스템에 정적 파일을 모니터링하는 것이 었습니다. 그러나이 목적을위한 많은 버전 제어 시스템이 있습니다. 당신은 파일 자체의 변경 추적 git를 사용하는 경우

나는 another post이 대답 : 당신이 직접 작업의 간부 인 쉘의 상단에 수표를 추가 할 수 있습니다

#!/bin/bash 

set -e 

job_name="whatever" 
JOB_URL="http://myserver:8080/job/${job_name}/" 
FILTER_PATH="path/to/folder/to/monitor" 

python_func="import json, sys 
obj = json.loads(sys.stdin.read()) 
ch_list = obj['changeSet']['items'] 
_list = [ j['affectedPaths'] for j in ch_list ] 
for outer in _list: 
    for inner in outer: 
    print inner 
" 

_affected_files=`curl --silent ${JOB_URL}${BUILD_NUMBER}'/api/json' | python -c "$python_func"` 

if [ -z "`echo \"$_affected_files\" | grep \"${FILTER_PATH}\"`" ]; then 
    echo "[INFO] no changes detected in ${FILTER_PATH}" 
    exit 0 
else 
    echo "[INFO] changed files detected: " 
    for a_file in `echo "$_affected_files" | grep "${FILTER_PATH}"`; do 
    echo " $a_file" 
    done; 
fi; 

를, 그리고 exit 0 경우를 것이다 변경 사항은 감지되지 않습니다. 따라서 체크인을 위해 항상 repo의 최상위 레벨을 폴링하여 빌드를 트리거 할 수 있습니다. 그리고 문제가되는 파일이 변경된 경우에만 빌드를 완료하십시오.