Hudson + windows + github + plugin git = estágio realmente lento
-
26-09-2019 - |
Pergunta
Estou configurando meu primeiro projeto Hudson + Git (anteriormente feito muitos com o Hudson + SVN). Eu esperava que o estágio do clone fosse lento, pois nosso repositório é bastante grande, mas as construções subsequentes onde uma fetch + fusão está sendo usada são tão longas. As seguintes opções estão ativadas:
- Mesclar antes da construção
- Limpe após a finalização da compra
Eu sou não Fazendo um "Wipe Out Workspace".
... Fetching changes from the remote Git repository Fetching upstream changes from git@github.com:username/ProjectFoo.git [Foo] $ git fetch -t git@github.com:username/ProjectFoo.git +refs/heads/*:refs/remotes/origin/*
Neste ponto, ele parar por muito tempo. Uma vez finalmente termina, parece progredir conforme o esperado:
[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 ...
Quando eu corro o mesmo fetch
Comando da linha de comando Git Bash, ele é executado quase instantaneamente.
Alguma ideia do que está acontecendo? Ou sugere para acelerar as coisas? Observe que o repositório clonado é de 210 MB. (Cerca de uma década de histórico de código.)
Solução
Eu também encontrei esse problema e descobri uma solução alternativa. Quando o Hudson é executado como um serviço, algo está faltando que seu ambiente normal de desktop possui, o que faz com que algo a ver com a rede precise recarregar para cada processo. MSYS-1.0.dll tenta carregar algo no netapi32.dll, o que faz com que ele demore tanto. Então, acabei de baixar Plink.exe da Putty e defino meu Git_ssh Env para usar isso. Problema evitado.
Outras dicas
Esta pode ser uma resposta tardia. Mas ele resolve o problema extremo de llow quando Jenkins/Hudson é executado como um serviço do Windows, no meu ambiente.
O ponto principal é fazer com que o GIT obtenha as teclas RSA em uma conta de serviço do Windows! Eu fiz funcionar como abaixo:
- Painel de controle aberto-> Ferramentas administrativas-> Serviços e encontre "Jenkins".
- Clique com o botão direito do mouse para abrir as Propriedades-> Faça logon e atribua a Jenkins logo como usuário com acesso ao administrador.
- Reinicie Jenkins, e o "git busca" é um raio como está no Linux.
A solução fornecida pelo CCUTRER não funcionou para mim no teste original, porque o Plink não pode obter a chave RSA do concurso (o concurso está em outra sessão do usuário!). Quando minhas etapas implantadas, o OpenSsh e o Plink poderiam funcionar bem até então.
Você poderia tentar um acesso anônimo em vez de um autenticado para sua busca?
$ git config remote.origin.url git://github.com/username/ProjectFoo.git # read-only
$ git config remote.origin.pushurl git@github.com:username/ProjectFoo.git # authenticated
E veja se a busca ainda está lenta no trabalho de Hudson?
Veja a ilustração "Usando o github com o msysgit".