2012-03-28 2 views
28

큰 GitHub 레포를 가지고 있으며 독립적으로 빌드 가능한 비트가 여러 개 있습니다. Jenkins를 각각 하나씩 (또는 2 개) 구성하면 데이터 기가 바이트를 여러 번 가져와야합니다 (각 작업마다 하나의 복제본).하나의 로컬 git repo에서 여러 Jenkins 빌드가 작동하도록하려면 어떻게해야합니까?

이것은 디스크 공간과 대역폭을 모두 차지합니다.

내가 뭘하고 싶은지 "복제 로컬 리포"작업을 한 번 github 복제, 다음 각 repro에서 자신을 복제 작업을 구성하고 빌드하고 싶습니다. 그런 다음 하위 작업을 종속 빌드로 설정하여 "Refresh local repo"를 실행하여 GitHub에서 최신 항목을 모두 가져온 다음 각 빌드를 실행하게 할 수 있습니다.

지금까지 "Refresh local repo"작업이 성공했습니다. 성공적으로 복제되고 작업 공간에 가면 HEAD에 원본/마스터 커밋이 있음을 알 수 있습니다.

문제는 다른 작업입니다. 이러한 것들이 업데이트를 픽업하지 않는 것 같습니다. 다음은 그 중 하나를 구성한 방법입니다.

Git 
Repository URL file:////Users/malcolmbox/.jenkins/jobs/Refresh Local repo/workspace 
Branches to build master 

최신 커밋으로 업데이트하는 대신 며칠 걸렸습니다.

팁을 가져 와서 올바른 작업을 수행하려면 어떻게해야합니까?

가 명확히하기 위해 : /를 ... 지역 REPO 새로 고침/작업 공간은 6b20268389064590147d5c73d2b6aceb6ba5fe70가 체크 아웃, 빌드를 실행 한 후 (그래서 아마도 자식 클론을하고/단계를 당겨) 28/3

종속 빌드를 제출 커밋이 ~ 79a25992cc192376522bcb634ee0f7eb3033fc7e가 26/3을 제출 했으므로 며칠 뒤였습니다.

답변

28

작업 구성을 열고 git SCM 구성의 고급 단추를 누르면 "복제 중에 사용할 레퍼런스 레포지토리의 경로 (선택 사항)"를 지정할 수있는 곳이 나타납니다.

저장소의 로컬 복제본이있는 경우 참조 저장소 필드에 경로를 추가하십시오.

그러면 Git은 로컬 복제본을 사용하여 디스크에있는 대부분의 git 객체를 공유하고 로컬 복제본에서 누락 된 부분 만 github에서 가져와 번개 복제 및 디스크 공간을 절약합니다.

또는 정확하게 작업을 구성한 방법이며 최신 커밋을 가져 오지 않았습니까? 그렇다면 자세한 내용을 제공해주십시오. 작업 구성 게시를 고려하십시오.

+0

고마워 -이게 내가 뭘 찾고있는 것처럼 보여! 나는 시험에 갈 것이다 ... –

+8

그냥 해명하고 싶었 : 최신 git plugin이 이제 고급 옵션의 팝업 메뉴를 가지고 있고 참조 레포가 "고급 클론 동작"에있는 것 같다. – sti

+0

이것은 훌륭합니다! 잘 작동하는 것 같습니다. – AlexeiOst

2

Clone Workspace plugin을 살펴보십시오. 이 작업을 사용하거나 작업을 구성하여 Github에서 로컬 저장소를 업데이트 한 다음 다른 모든 작업을 해당 로컬 저장소에서 가져올 수 있습니다.

작업 공간에 여전히 디스크 공간이 필요하지만이 문제에 대한 간단한 해결책은 없습니다. 빌드 단계를 작업 영역 외부의 공유 디렉토리로 변경할 수도 있지만, 이는 해킹이며 다른 것들을 손상시킬 수 있습니다. 또는 중복 제거를 제공하는 파일 시스템을 사용할 수도 있습니다.

+0

나는 디스크 공간에 대해 걱정하지 않으며, 어쨌든 나는 자식이 똑똑하고 로컬 저장소를 복제 할 때 가능하면 링크를 사용한다고 믿는다. 다른 모든 작업을 로컬 저장소에서 가져 오는 작업은 내가하고 싶은 작업입니다. 그러나 방법을 파악할 수는 없습니다. 지역 repo를 통해 새로운 커밋을하지 않는 것 같습니다. –

+0

어떻게 빌드를 트리거합니까? 로컬 저장소를 폴링하고 폴 로그를 검사 해 보셨습니까? –

+0

보조 빌드에서 "빌드 후"트리거를 사용합니다. –

0

나는 동일한 경험을했습니다.

저는 실제 원격 저장소 인 github을 가져 오는 작업이 하나 있습니다.

file:///C:/Program Files (x86)/Jenkins/jobs/webtest-local-repo/workspace/.git 

그것은 잘 클론하지만, 이후의 인출이 변경 사항을 통지하지 않습니다

다른 작업 (많은이있다)의 각

이 같은 "저장소 URL"을 가지고있다.

동일한 문제가 gitbash에서 표시되므로 gen 문제가 아닌 jenkins 문제입니다.

끔찍한 해결 방법은 모든 종속 작업이 "복제본"이되도록 종속 작업이 빌드를 마쳤을 때 작업 영역을 삭제하도록하는 것이 었습니다. 우스꽝 스럽지만 어리석은 일은 같은 github repo에서 멀리 치는 것보다 덜 우스운 이야기 일 것입니다.

ZOMG! git이 repo를 성공적으로 복제 할 수 있었기 때문에 jenkins가 이전 개정판을 기억하고 다시 동일한 빌드를 작성하기 때문에 그 중 하나도 작동하지 않았습니다. 아마도 그것은 this issue과 관련이 있습니다. 모르겠어. 우리는 포기했고, 이제는 모든 일자리가 github을 다시 투표합니다. 어쩌면 그 대신에 일하는 훅을 얻을 것이다.

관련 문제