Problema do Jenkins: o plugin SVN não é atualizado para o código mais recente

Jenkins usa o catálogo de séries relacionadas ao tutorial


índice

Analise as razões

solução


Analise as razões

Uma breve análise do plugin Jenkins SVN não é atualizada para o código mais recente

Ao usar o Jenkins para integração contínua, encontrei uma situação em que o plug-in SVN do Jenkins não foi atualizado para o código mais recente.

Por exemplo, use Jenkins para atualizar o código imediatamente após o código ser enviado. Como resultado, o código que acabou de ser enviado não é atualizado e o código atualizado é a versão antiga.

Verifique o conteúdo relacionado online, há um ditado:

O horário do servidor Jenkins é inconsistente com o horário do servidor SVN. O plug-in SVN do Jenkins usa a tag de horário para fazer o download em vez de pegar o HEAD.

Portanto, se a hora do código de envio do servidor svn for posterior à hora atual do Jenkins, o código não será atualizado.

A solução para o problema é:

Basta definir a hora do servidor Jenkins e a hora do servidor SVN para serem iguais.

Sim, o procedimento acima resolve o problema, mas o plug-in SVN do Jenkins é uma revisão SVN relacionada ao carimbo de data / hora?

Verifique o registro de compilação de um Jenkins Job. Ao usar o plug-in SVN para atualizar o código, o registro é o seguinte:

Atualizando svn: // repository_path na revisão '2015-08-06T08: 48: 12.490 +0800'

Pode-se ver acima que a revisão correspondente a esta construção é de fato o carimbo de data / hora da construção.

 

Portanto, o plug-in Jenkins SVN pode atualizar o código e definir a revisão como HEAD?

A resposta é sim, basta adicionar o sufixo @HEAD ao URL do SVN. O plug-in SVN do Jenkins oferece suporte para isso.

Depois de adicionar o sufixo @HEAD ao URL SVN, a saída do log após a construção do Jenkins Job é a seguinte:

Atualizando svn: // repository_path @HEAD   na revisão HEAD

E isso garante que o código atualizado esteja atualizado e não seja afetado pela diferença de horário entre o servidor Jenkins e o servidor SVN.

Nota: HEAD é a palavra-chave de revisão do SVN, o que significa a versão mais recente no repositório.

 

Veja o documento de ajuda de svn checkout / update por meio de svn help. Em relação à opção de revisão, a captura de tela é a seguinte:

Como pode ser visto acima, as opções de revisão são: NUMBER (número de revisão), '{' DATE '}' (registro de data e hora) e palavras-chave de revisão (HEAD, BASSE, COMMITTED, PREV).

 

Ao visualizar o código-fonte do plug-in Jenkins SVN:

Uma captura de tela de parte do código-fonte de WorkspaceUpdater.java é a seguinte:

A partir dos comentários, você pode ver a estratégia para obter a revisão do SVN:

// para a revisão SVN, usaremos o primeiro: 
// - um    sufixo @NNN do url SVN 
// - um valor encontrado em RevisionParameterAction 
// - a revisão correspondente ao timestamp de compilação

 

Pode-se observar que para a revisão do SVN, ela é obtida de acordo com a seguinte prioridade:

- sufixo @ NNN do url SVN (@NNN é revisão svn)

-O valor em RevisionParameterAction, RevisionParameterAction é usado principalmente para construção parametrizada para manter a consistência da revisão entre as duas construções

-Construa a revisão correspondente ao carimbo de data / hora

 

Antes, havia um pequeno erro no comentário e uma solicitação pull foi enviada para corrigi-lo:

https://github.com/jenkinsci/subversion-plugin/pull/130

 

referência:

http://blog.chinaunix.net/uid-26598889-id-3402223.html

http://www.tuicool.com/articles/B326v27

https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin

https://github.com/jenkinsci/subversion-plugin


solução

Em resumo, existem duas soluções:

1. Apenas defina a hora do servidor Jenkins e a hora do servidor SVN para serem iguais.

2. Ao construir jenkins, adicione @HEAD ao caminho SVN para forçar a versão de código mais recente

URL do repositório

http: // localhost: 9527 / svn / trunk / zhw @ HEAD

 

Acho que você gosta

Origin blog.csdn.net/shi_hong_fei_hei/article/details/112961900
Recomendado
Clasificación