Maven interferindo no script post build do Jenkins

1

Eu tenho um trabalho Jenkins Maven que tem um script post build escrito em BASH. Periodicamente, enquanto o post script está sendo executado, parece que algum tipo de operação do Maven está interferindo no script BASH, fazendo com que a construção falhe.

Aqui está um exemplo de saída do console do Jenkins

+ version_override='Downloading: http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml
Downloading: http://clojars.org/repo/org/codehaus/mojo/maven-metadata.xml
Downloading: http://oss.sonatype.org/content/repositories/releases/org/apache/maven/plugins/maven-metadata.xml
Downloading: http://oss.sonatype.org/content/repositories/releases/org/codehaus/mojo/maven-metadata.xml

Veja como minha variável BASH parece estar recebendo um valor do download do Maven? Agora eu não vou dizer com certeza o que está acontecendo. Talvez haja apenas dois fluxos de saída indo para o console simultaneamente, um do Maven atualizando o repositório, outro do meu script BASH post build. De qualquer forma, o download do Maven parece estar interferindo no meu script BASH, uma vez que ele eventualmente trava a compilação.

+ read config_path
+ '[' '!' -z http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml ']'
+ http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml
/usr/share/build-utils/lib/java.sh: line 115: http://clojars.org/repo/org/apache/maven/plugins/maven-metadata.xml: No such file or directory

Isso definitivamente parece que a saída do Maven está entrando no meu script BASH!

Estou quase certo de que este é o Maven procurando por atualizações. O estranho é por que isso seria executado em paralelo com um script post build. E mesmo assim, como é possível que isso interfira no tempo de execução do dito roteiro? Verdadeiramente bizarro!

Outra razão pela qual tenho certeza de que não há nada errado com o meu script de criação de postagens. Toda vez que esse erro aparece, executo a compilação novamente e funciona. É somente quando o Maven está atualizando que a construção falha.

Eu não me importo se o Maven quer procurar por atualizações, mas existe alguma maneira de configurá-lo para que as atualizações do repo aconteçam antes do meu script de compilação post?

    
por quickshiftin 05.10.2013 / 00:53

1 resposta

2

Finalmente descobri! Eu estou usando um plugin Maven para extrair a versão do módulo através de um plugin Maven, baseado em este artigo SO .

O comando produz saída como esta

[INFO] --- maven-help-plugin:2.1.1:evaluate (default-cli) @ master-parent ---
[INFO] No artifact parameter specified, using 'com.myorg:master-parent:pom:0.3.02' as project.
[INFO] 
0.3.02
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 

Minha chamada BASH inicial para extrair o número da versão

version_override=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '[INFO]')

No entanto, de vez em quando (e ainda não tem certeza de onde controlar isso), o Maven tentará atualizar os módulos (eu acho). É daí que vem a falsa saída Downloading , que mucks com minha tarefa de cima.

Eu agora revisei o comando da seguinte forma

version_override=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | egrep -v '[INFO]|Downloading:' | tr -d ' \n')

Provavelmente, ainda que não seja à prova de balas, quem sabe que outras saídas podem vir desse comando, por exemplo, em algum dia, em vez de liderar [INFO] linhas, talvez exista [ERROR] ou algo assim ...

De qualquer forma, está apertado por enquanto. Eu realmente acho que isso foi um problema de Jenkins / Maven no começo, mas acontece que foi apenas uma questão de script BASH!

    
por 08.10.2013 / 22:28

Tags