Pergunta

Estou configurando o trabalho do Jenkins para enviar arquivos do Subversion para SFTP. Publicar por SSH está indo muito bem, mas carregatodos os arquivos em cada compilação.

Para alguns projetos, temos milhares de arquivos e o upload custa mais de 1 hora, portanto, não é uma opção.

Alguém pode sugerir uma maneira de fazer upload apenas de arquivos alterados na última revisão?

Foi útil?

Solução

Você pode usar o Plug-in do Subversion para pesquisar as alterações do SVN e executar um trabalho que não faz nada em particular. Vamos chamá-lo de YourPollingJob . Em seguida, chame a API Jenkins via http, assim:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

onde BUILD_ID é o ID de compilação real do trabalho que você acabou de executar (o formato usual é algo como 2012-02-21_16-15-49). Examine o resultado. Observe que todas as informações sobre os arquivos que foram alterados desde a compilação anterior estão lá - você só precisa analisá-los.

Portanto, agora você pode fazer o seguinte: YourPollingJob chamará outro trabalho - vamos chamá-lo de CopyJob - e passar para ele seu BUILD_ID como um parâmetro (por meio do Plugin de acionador parametrizado ; certifique-se de chamar CopyJob como uma etapa de pós-construção, não como uma etapa de construção). CopyJob consultará Jenkins via http (como acima, a melhor maneira é fazê-lo via wget), analisará os resultados e fará a cópia.

Você pode fazer tudo em uma tarefa, mas é um pouco mais complicado e difícil de depurar.

Além disso, provavelmente é prudente copiar todo o repositório uma vez por dia (à noite).

Outras dicas

Você pode manter esses arquivos em um repositório separado.Parece que um VCS distribuído como mercurial ou git seria o melhor para isso no seu caso.Você pode configurá-lo no espaço de trabalho e adicionar uma etapa de construção para confirmar os arquivos alterados e enviar o commit para o servidor onde você deseja publicá-lo (o que deve funcionar, desde que você não limpe o espaço de trabalho ou crie em váriosmáquinas) ou adicionar etapas adicionais para clonar / extrair o repo com os artefatos do servidor em que você os mantém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top