2012-07-02 3 views
0

Jenkins 작업에서 로컬 및 원격 저장소라는 두 개의 저장소를 설정했습니다. 계획은 원격지를 주기적으로 점검하고 변경 사항을 감지하면 로컬로 푸시하기 위해 사용자 정의 분산 테스트 시스템이 테스트를 제어하고 결과를 Jenkins로 리턴합니다.Jenkins는 작업 영역의 .git/config를 계속 재설정합니다.

모든 것이 한 가지 문제로 효과적입니다. Jenkins를 다시 시작할 때마다 작업의 작업 공간 .git/config 파일에서 원격 (또는 로컬, 날씨에 달려 있음) 저장소를 제거하고 수동으로 편집해야합니다. 내가 그 일을 구성한 방법

:

  • 의 repo URL : /path/to/local
  • 이름 : localrepo
  • 의 repo URL : [email protected]:therepo
  • 이름 : origin

및 생성 된 .git/config 다음 내용 만 포함 :

[remote "localrepo"] 
    fetch = +refs/heads/*:refs/remotes/localrepo/* 
    url = /path/to/local 

내가 여기서 잘못하고있는 것에 대한 아이디어가 있습니까?

+0

더 이상 발생하지 않습니다. 닫아? – Kostas

답변

0

젠킨스 git 플러그인을 사용하고 있다고 가정합니다. 나는 git plugin이 local git repo를 제어하도록하고 Jenkins의 뒤에서 어떤 수동 구성도하지 말아야한다고 생각한다.

원격 git 저장소로 Jenkins 작업을 구성하면 Jenkins가 변경 사항을 폴링하도록하거나 Jenkins에 알림을 전달할 수 있습니다. git hook 스크립트에서.

젠킨스가 빌드하라는 지시를받은 모든 브랜치에서 변경 사항을 감지하면 젠킨스 작업 공간에서 git repo를 업데이트 한 다음 작업 구성의 빌드 단계를 실행할 준비가됩니다.

작업 영역의 git repo는 Jenkins git plugin에서 다소 비표준 방식으로 관리됩니다. git에있는 파일들이 커스텀 분산 테스트 시스템으로 보내지는 방법을 정확하게 지정하지 않았기 때문에 Jenkins 작업 공간이있는 그대로 사용할 수 있는지, 아니면 더 이상해야 할 일이 있는지 추측 할 수 없습니다.

실제로 "내가 뭘 잘못하고있는"질문에 대답하려면 : 젠킨스 작업 공간에서 로컬 자식 repo의 구성을 수동으로 변경하고 git 플러그인에서 관리하도록하십시오. 이것이 좋은 해결책이 아니라면 git plugin 사용을 중단해야 할 수도 있습니다.

손으로 repo 관리를 많이하는 것처럼 보이기 때문에 git 플러그인이 필요한 유일한 것은 원격 저장소를 폴링하는 것, 즉 변경 사항을 감지하는 것입니다.

예 : https://wiki.jenkins-ci.org/display/JENKINS/script-scm, 폴링 및 체크 아웃을 관리하는 사용자 정의 스크립트를 작성할 수 있습니다.

또 다른 대안은 폴링에 대해 잊어 버리고 단순히 원격 git repo의 post-commit-hook 스크립트에서 작업을 새로 빌드하는 것입니다. 이렇게하면 작업 구성에서 SCM에 "없음"을 지정하고 로컬 저장소 관리를 완전히 제어 할 수 있습니다.

나는 Jenkins git plugin과 공동 작업하고 로컬 git repo를 그대로 사용할 수 있는지 직접 확인하고 싶습니다. git plugin은 작업마다 SCM이없는 경우 가질 수없는 각 빌드의 변경 목록과 같은 좋은 점을 제공합니다.

+0

이것이 내가 한 것입니다 : (1) 젠킨스와 플러그인을 설치하십시오. (2) 새로운 일자리를 창출하십시오. (3) 새 작업의 자식 설정을 구성합니다. (4) 새 빌드를 시작합니다. 나는 내가 설정 한 두 개의 리모트 (젠킨스 구성을 통해) 하나만 존재한다는 것을 알게 될 때까지 작업 공간에 간섭하지 않았다. 다른 리모컨은 실제로 스펙을 분배하고 실행하는 스크립트에 의해 사용됩니다. – Kostas

관련 문제