2017-02-10 1 views
2

프로젝트의 연속 통합 설정 작업을하고 있습니다. 모든 코드는 github repo에 있으며, 병합되면 특정 작업이 실행되는 젠킨스 서버로 웹 훅이 트리거됩니다. 여기서이 작업은 페이로드를보고 해당 분기를 기반으로 실행할 다운 스트림 작업을 결정합니다. 나머지 페이로드는 필요하지 않습니다. 줄일 수있는 방법이 있나요 :너무 큰 JSON 페이로드 오류가있는 Github webhook이 jenkins 작업을 트리거합니다.

Cloning the remote Git repository 
Cloning repository <git_repo> 
> git init <http://jenkins_instance/job> # timeout=10 
ERROR: Error cloning remote repo 'origin' 
hudson.plugins.git.GitException: Could not init <http://jenkins_instance/job> 
     ... 
Caused by: hudson.plugins.git.GitException: Error performing command: git init <http://jenkins_instance/job> 
     ... 
Caused by: java.io.IOException: Cannot run program "git" (in directory "<http://jenkins_instance/job>")>: error=7, Argument list too long 
     ... 
Caused by: java.io.IOException: error=7, Argument list too long 
     ... 
ERROR: null 

주요 질문 : 병합에서 커밋이 많이있다 인스턴스에서 JSON 페이로드는 다음과 같은 오류와 함께 중단됩니다 너무 많이, 매우 큰 것 이 페이로드 크기? 또는 오류를 피하기 위해 페이로드를 처리하는 방법에 대한 제안?

설정이 작업에 대한 How to process a github webhook payload in Jenkins?

현재 설정이 "매개 변수화"이고 "페이로드"에 대한 하나 개의 매개 변수 "문자열 있었던 파라미터"가이 게시물에 대한 유사하다. 이 변수는 다음 주 셸을 실행하는 동안 그래서 같은 파일로 저장됩니다

echo "Current payload is ${payload}" 
if [ -d ./payload.txt ] 
then 
    rm payload.txt; 
fi 
touch payload.txt 
echo $payload >> payload.txt 

답변

0

나에 대한 해결 방법은 페이로드가 리눅스 한도를 초과 할 때 문제를 처리하는 또 다른 프로젝트를 사용하는 것이 었습니다. 부모 프로젝트는 git checkout에서 ioexception으로 실패하고 하위 프로젝트를 트리거하고 빌드 번호를 전달하고 페이로드에 대한 나머지 api를 통해 하위 프로젝트 쿼리 부모를 전달합니다.

다른 해결 방법은 창 노드를 사용하는 것입니다.

참조 : https://serverfault.com/questions/533709/bulk-size-text-parameters-in-jenkins-report-error

관련 문제