2010-08-06 7 views
3

나는 처음으로 Hudson + Git 프로젝트 (이전에는 Hudson + SVN에서 많은 작업을 수행)를 설정하고 있습니다. 저장소가 상당히 크기 때문에 클론 단계가 느릴 것으로 예상했지만 후속 + 병합이 사용되는 후속 빌드도 마찬가지입니다. 다음과 같은 옵션을 사용할 수 있습니다 :Hudson + Windows + GitHub + Git Plugin = 정말 느린 가져 오기 단계

  • 병합 이전에 체크 아웃

  • 청소를 구축 나는 "닦아 작업 공간을"일을하지을입니다.

     
    ... 
    Fetching changes from the remote Git repository 
    Fetching upstream changes from [email protected]:username/ProjectFoo.git 
    [Foo] $ git fetch -t [email protected]:username/ProjectFoo.git +refs/heads/*:refs/remotes/origin/* 
    

    이 시점에서 매우 오랫동안 작동하지 않습니다. 마침내 완료되면, 예상대로 진행 나타납니다 : 나는 힘내 Bash는 명령 행에서 같은 fetch 명령을 실행하면 거의 즉시 실행

     
    [Foo] $ git ls-tree HEAD 
    [Foo] $ git rev-parse origin/mybranch 
    Commencing build of Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch) 
    GitAPI created 
    Checking out Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch) 
    [Foo] $ git checkout -f c883d59dd5a506a0b586f679a256f539712bfccc 
    [Foo] $ git tag -a -f -m "Hudson Build #2" hudson-Foo-2 
    Recording changes in branch origin/mybranch 
    [Foo] $ git whatchanged --no-abbrev -M --pretty=raw c883d59dd5a506a0b586f679a256f539712bfccc..c883d59dd5a506a0b586f679a256f539712bfccc 
    Cleaning workspace 
    [Foo] $ git clean -fdx 
    ... 
    

    .

    어떤 일이 벌어 질지 궁금하십니까? 또는 물건을 빠르게하는 암시? 복제 된 저장소는 210MB입니다. (약 10 년 동안의 코드 히스토리)

  • 답변

    8

    이 문제도 해결하여 해결 방법을 찾았습니다. 허드슨 (Hudson)이 서비스로 실행될 때 정상적인 데스크톱 환경이 갖고있는 것이 빠져있어서 네트워크와 관련하여 각 프로세스마다 다시로드해야합니다. msys-1.0.dll은 너무 오래 걸리는 netapi32.dll에서 무언가를로드하려고 시도합니다. 그래서 방금 PuTTY에서 plink.exe를 다운로드하고 대신 내 GIT_SSH env를 사용하도록 설정했습니다. 문제가 회피되었습니다.

    +0

    Brilliant! 솔루션을 게시 해 주셔서 감사합니다! – metasim

    +0

    당신의 생각 과정은 단순히 훌륭합니다. – Niranjan

    +0

    우리는 두 개의 다른 Jenkins 서버에서이 문제를 해결했습니다. 고마워요! – fschmitt

    1

    가져 오기를 위해 인증 된 것 대신 익명 액세스를 시도해 주시겠습니까?

    $ git config remote.origin.url git://github.com/username/ProjectFoo.git # read-only 
    $ git config remote.origin.pushurl [email protected]:username/ProjectFoo.git # authenticated 
    

    허드슨 작업에서 페치가 여전히 느린 지 확인하십시오.

    그림의 "Using Github with MsysGit"을 참조하십시오.

    +0

    클라이언트가 repo 설정 (소유권 있음)을받는 방식을 감안할 때 우리는 각 방향으로 인증을 받아야합니다 (AFAIK). 즉, 다른 푸시/풀 URL을 사용할 수 있는지 알지 못했습니다. 멋지다. cmd에서 수동으로 실행하면이 모든 작업이 완벽하게 작동한다는 것을 분명히해야합니다.exe 환경 ....이 시점에서 Hudson git-plugin을 의심하고 있는데, 정확하게 이해한다면 MsysGit 설치를 사용하지 않습니다. – metasim

    2

    이것은 늦은 대답 일 수 있습니다. Jenkins/Hudson이 내 환경에서 Windows 서비스로 실행될 때 극단적 인 느린 문제를 해결합니다.
    중요한 점은 git가 Windows 서비스 계정에서 rsa 키를 가져 오도록 만드는 것입니다! 나는 아래와 같이 작동하게했다 :

    1. 열린 제어판 -> 관리 도구 -> 서비스, 그리고 "젠킨스"를 찾으십시오.
    2. 마우스 오른쪽 단추로 눌러 등록 정보 -> 로그온을 선택하고 Jenkins 로그온을 관리자 액세스 권한이있는 사용자로 지정하십시오.
    3. Jenkins를 다시 시작하고 리눅스 에서처럼 "git fetch"가 번개를 맞 춥니 다.

    plink가 미화에서 rsa 키를 가져올 수 없기 때문에 ccutrer가 제공 한 솔루션이 원래 평가판에서 작동하지 않았습니다 (미팅은 다른 사용자 세션에 있음)! 내 단계가 전개되면 openssh와 plink가 그때까지 잘 작동 할 수 있습니다.

    관련 문제