2014-12-27 3 views
2

방화벽 뒤에 Jenkins 인스턴스가 실행 중이고 Jenkins UI를 인터넷에 노출하고 싶지 않습니다. (보안 기능이 켜져 있어도 옵션이 아닙니다.) 필자는 다른 포트를 열어서 빌드를 트리거 할 수는 있지만 UI는 노출하지 않을 것을 제안합니다. 플러그인 목록을 탐색했지만 적절한 플러그인을 찾지 못했습니다. 현재 나의 설정은 apache를 프록시로 실행하고 다른 포트의 regex-module을 통해 트리거를 허용하고 있습니다. (하지만 다른 URL은 없습니다). 아파치는 많은 추가로드 (및 메모리, 매우 작은 머신)를 수행하므로 실제로 제거하려고합니다. 열린 포트를 통해 트리거를 허용하는 방법을 제안했지만 해당 포트를 통해 Jenkins UI 또는 다른 Jenkins URL을 노출시키지 않는 방법이 있습니까?Github에서 Jenkins 빌드를 안전하게 트리거하는 방법

+0

@Andrew 폴링을 옵션으로 고려하지 않는 이유는 여러 가지가 있습니다. [이] (http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-hook/) 하나입니다. – Cfx

답변

0

문제를 해결하려면 github 저장소에서 변경 사항을 폴링 할 수 있습니다. CRONTAB 구문을 사용하여 폴링 일정을 구성 할 수 있습니다.

CRONTAB의 "5 asterixs"는 매일 매시간마다 분당 투표를 의미합니다. 매 커밋마다 모든 건물과 거의 동일합니다.

0

이제 리소스 요구량이 낮은 &이라는 내 요구 사항을 충족하는 설정을 갖게되었습니다. 나는 웹 서버를 에뮬레이션 할 순 고양이를 사용하여 작은 bash는 스크립트에 의해 아파치를 대체하지 :

#!/bin/bash 
while true ; do 
    echo -e "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r" | nc -l -v -p [outer port number] > /dev/null 
    wget -O /dev/null [jenkins base url]/git/notifyCommit?url=[repository url] &>/dev/null 
    sleep 5 
done 
  • (루프)에 첫 번째 줄 응답을 HTTP로 Github에서 트리거에 의해 지원되는 어떠한 내용의 상태를. 페이로드는/dev/null로 지정됩니다. 페이로드를보고 셸 스크립트에서 세부 사항을 추출하지 않는 것이 중요합니다. 왜냐하면 입력 된 내용을 배쉬에서 쉽게 (적어도 나를 위해) 잘못 수행하기 때문입니다.

  • 두 번째 줄은 Jenkins가 변경 사항 (변경 사항이있을 경우 빌드)을 찾도록 트리거합니다.

  • 마지막 줄의 수면은 수신 대기 포트가 자주 호출되는 경우 DOS 시나리오를 방지하는 것입니다.

  • 스크립트 자체는 @reboot 일정의 cron을 통해 시작됩니다.

관련 문제