Encontre trabalhos de Jenkins que foram interrompidos na reinicialização do sistema

Quando você precisa reiniciar um servidor que executa o Jenkins, é muito simples: prepare o Jenkins para um desligamento, aguarde a conclusão dos trabalhos em execução e reinicie-o.

Mas, se o servidor for reiniciado para uma emergência, você pode precisar reiniciar alguns trabalhos do Jenkins e se perguntar o que estava sendo executado.

Felizmente, os diretórios de “jobs” do Jenkins podem ajudá-lo a descobrir quais jobs foram iniciados e quais não foram concluídos corretamente. Se você tem um job my_example_job, então haverá uma pasta em $ JENKINS_HOME / jobs / my_example_job / que contém 1 diretório por build para quantos builds você mantiver. Quando uma construção é iniciada, ela cria um diretório $ BUILD_ID que contém alguns arquivos. Em seguida, a construção termina e cria mais alguns arquivos. E, esse diretório $ BUILD_ID é vinculado simbolicamente a partir de alguns diretórios úteis para facilitar a referência à construção, como um diretório de carimbo de data no formato AAAA-MM-DD_HH-MM-SS.

Portanto, para encontrar os diretórios de compilação dentro do diretório $ JENKINS_HOME / jobs / em vinte e poucos de novembro de 2015 que tenham um log e não tenham um build.xml:

cd /var/lib/jenkins/jobs/
find
*/builds/2015-11-2*/ -iname 'log' -printf '%hn' | sort -u > ~/haslog.txt
find
*/builds/2015-11-2*/ -iname 'build.xml' -printf '%hn' | sort -u > ~/hasbuild.xml.txt
grep
-v -f ~/hasbuild.xml.txt ~/haslog.txt