Como esconder o git clone de forma transparente?

2

Eu gostaria de oferecer um serviço de integração contínua (estou planejando usar hudson , mas a solução deve funcionar para outros também) com uma interface web onde um usuário definirá uma URL SCM (por exemplo, um git URL) e a área de trabalho / raiz de origem que é usada para construção deve ser limpa (pelo menos opcionalmente) antes da construção. Isso requer muitos check-outs repetidos que gostaria de armazenar em cache (ou seja, fazê-los serem lidos no armazenamento local, em vez de serem buscados em um recurso remoto).

Diferentes SCMs ( git , svn e mercurial / hg ) usam protocolos diferentes (HTTP, HTTPS, git , etc.), alguns deles podem ser armazenados em cache (HTTP), outros geralmente não ( HTTPS sem usar um man-in-the-middle que é inaceitável para um serviço confiável imo - o qual eu quero fornecer) ou especificamente não (eu não encontrei nenhum servidor de cache de protocolo git ).

O armazenamento em cache do HTTP não é um problema, mas poucos git hoster o suportam ou redirecionam para HTTPS. Gostaria de oferecer suporte a um protocolo que armazena check-outs de forma confiável e sugere que o usuário o use.

O redirecionamento por meio de um proxy SOCKS pode ser obtido para o protocolo HTTP e git , mas isso não permite o armazenamento em cache. Outros protocolos como o IGD não podem ser usados para armazenar nenhum deles.

    
por Karl Richter 27.06.2015 / 19:34

1 resposta

0

Na verdade, o problema de que você fala existe e compensa muitas questões, como "por quanto tempo devo armazenar uma resposta em cache? E se eu tiver dois projetos cujas taxas de commits sejam muito diferentes?". Existem algumas soluções proprietárias que fazem o que você está procurando, ou seja, se você usa o Atlassian Stash, ele tem um plugin embutido que gerencia o cache de respostas de checkout para diminuir a carga no servidor.

A melhor solução é diferente do que você quer fazer. A melhor e recomendada solução é usar ganchos pós-commit, eles existem no git, svn e eu acho em outros vcs também. Basta ter seu repositório acionando a compilação em seu sistema de CI, em vez de os trabalhos de CI pesquisarem continuamente. Como você mencionou Jenkins (Hudson), o plugin Git, por exemplo, já fornece urls para realizar esse tipo de atividade.

    
por 27.06.2015 / 21:44