2013-10-31 5 views
2

우리 프로젝트에는 원격 마스터 브랜치에서 실행중인 jenkins 작업이 있습니다. 개발자는 종종이 원격 마스터에서 리베이스하여 최신 변경 사항을 로컬 복사본으로 가져옵니다. 우리가 원하는 것은 젠킨스가 부러 졌을 때 (빨강 또는 노란 공)이 리베이스를 피하는 것입니다. 지침은 "젠킨스가 녹색 인 경우 rebase"이지만 ... 사람들은 게으르다 :-)git pulls/fetches를 차단할 수 있습니까?

그래서 실행이 실패 할 때 git repo를 차단하도록 jenkins 작업에서 무엇인가 할 수 있습니까?

감사합니다.

+0

Jenkins도 GIT 저장소를 관리합니까? 젠장이 젠킨스와 같은 기계에서 실행되고 있습니까? 아마도 Gerrit를 사용하여 공유 GIT 저장소를 관리하는 방법을 살펴보십시오. Jenkins 용 Gerrit 플러그인을 사용하여 각 코드 제출을 자동으로 확인할 수 있습니다. 원하는 워크 플로를 얻는 더 좋은 메커니즘이 될 것입니다. //code.google.com/p/gerrit/ –

+0

아니요, Jenkins는 Gerrit/Git과 같은 컴퓨터에 있지 않습니다. 나는 Gerrit를 그런 식으로 사용하는 것이 무엇을 의미하는지 알고 있지만 Jenkins의 작업은 약 2 시간이 걸리므로 (그리고 더 오래 걸릴 것입니다.) 매 푸시마다 그것을 시작할 수 없습니다. –

답변

0

git 저장소에 병합하기 전에 커밋을 확인하는 대신 빈번한 간격으로 git으로 병합 한 후 커밋을 확인하는 것 같습니다.

우리는 git pull을 git 저장소에서 모든 사용자의 ssh-keys를 제거하는 것 이외의 다른 방법으로 해제 할 수는 없다고 생각합니다. 이것은 실현 가능하지 않습니다. 우리는 git repo에 대한 액세스를 차단하기 위해 Git에서 authorized_keys 파일을 조작 할 수있는 Jenkins 빌드 빌드 단계를 가질 수 있습니다. (작동하는지 모르겠다.)

각 빌드 + 검증에 약 2 시간이 소요되는 동일한 시나리오가 있었으며 각 커밋에 대해이 테스트를 실제로 시행 할 수는 없다. 그러나 우리는이 상황을 관리 할 수있었습니다.

당신이 리트 사용하는 경우

을 대신 젠킨스 리트 트리거 플러그인을 사용하여, 우리는 통합과 검증을 실행할 준비가 모두 승인 및 변경 사항에 대한 전체 리트를 폴링 우리 자신의 스크립트를 가질 수 있습니다 . 확인이 완료되면 해당 작업의 모든 변경 사항이 자동으로 병합됩니다 (Gerrit에 제출 됨). 이렇게하면 병합되는 악의를 피할 수 있습니다.

당신은 리트 사용하지 않는 경우 : 우리는 두 개의 분리 된 지점

을 가질 수

  1. 개발 지점 개발자가 당길 수있는 곳에서 (
  2. 통합 분기 (모든 개발자는 변경 밀어 경우) 변경 사항)

모든 개발자는 변경 사항을 개발 분기점으로 푸시합니다. 빈번한 간격으로 우리는 개발 분기를 검증하고 검증이 성공할 경우에만 통합 분기로 변경 사항을 푸시 할 수 있습니다.

+0

예, 우리는 gerrit를 사용하고 있습니다. 우리는 당신의 제안 된 해결책을 생각할지도 모르지만 나는 질문이 있습니다. 작업이 성공하면 변경 사항이 GIT에 병합되지만 작업이 실행되는 동안 gerrit로 푸시 된 변경 사항은 Git에도 병합됩니까? –

+0

Git에 통합되면 Gerrit에 제출됩니다. 작업이 실행되는 동안 gerrit에 대한 변경 사항을 계속 푸시 할 수 있습니다. 작업이 성공하면 현재 작업의 변경 사항 만 병합됩니다. – Sridhar

+0

혼동을 피하기 위해 내 답변을 수정했습니다. – Sridhar

관련 문제