Existem várias maneiras de recuperar dados da API do Jenkins, dependendo da formatação, detalhes etc.
Neste exemplo, usarei um serviço Jenkins voltado para o público a partir do pipeline de desenvolvimento do Ubuntu .
-
Use
curl
,jq
esort
na linha de comandocurl -s https://jenkins.qa.ubuntu.com/view/Precise/view/All%20Precise/api/json | jq -r '.jobs[] | [.color, .name] | @csv' | sort
A saída desse subdiretório de pipeline (Precise / All Precise) é analisada em que
blue
= passing,red
= failure.Aqui está uma amostra da saída:
... "blue","precise-server-i386_raid1" "blue","precise-server-i386_samba-server" "blue","precise-server-i386_tomcat-server" "blue","precise-server-i386_virtual-host" "red","precise-adt-apport" "red","precise-adt-apport-armhf" "red","precise-adt-chromium-browser" "red","precise-adt-chromium-browser-armhf" "red","precise-adt-chromium-browser-ppc64el" ...
-
Use um idioma de nível mais alto para analisar a saída. XML, Python, Ruby são todas opções viáveis, todas dependendo do seu caso de uso e de como você deseja apresentar os dados ainda mais.
Nenhum exemplo dado aqui, pois os termos ainda são muito amplos sobre quais dados você deseja recuperar e como deseja enviá-los.
** EDIT **
Nos comentários, @shabunc explica que o desejo é de informação (ainda não está claro a respeito de quais informações ou dados estão sendo pesquisados, então vou usar um exemplo) sobre as últimas compilações concluídas.
O uso do modificador de solicitação da API de depth
para a chamada original abre outro nível de detalhes contra o ponto final da consulta original.
Neste exemplo, expandimos o mesmo pipeline (view) com mais um nível, usando o parâmetro de consulta depth=1
, e recuperamos o último número de build concluído para cada job.
curl -s 'https://jenkins.qa.ubuntu.com/view/Precise/view/All%20Precise/api/json?depth=1' | jq -r '.jobs[] | [.color, .name, .lastCompletedBuild.number] | @csv' | sort
Os resultados agora incluem o número de compilação de cada trabalho:
...
"blue","precise-server-i386_raid1",910
"blue","precise-server-i386_samba-server",909
"blue","precise-server-i386_tomcat-server",901
"blue","precise-server-i386_virtual-host",905
"red","precise-adt-apport",2
"red","precise-adt-apport-armhf",1
"red","precise-adt-chromium-browser",2
"red","precise-adt-chromium-browser-armhf",1
"red","precise-adt-chromium-browser-ppc64el",2
...
Você pode explorar todos os campos retornados com o seguinte comando:
curl -s 'https://jenkins.qa.ubuntu.com/view/Precise/view/All%20Precise/api/json?depth=1' | jq '.jobs[0]'
Isso retornará o primeiro trabalho na lista com todos os campos retornados do modificador de nível depth
.
Você pode então usar os acessadores jq para selecionar os campos desejados, como pode ser visto nos exemplos anteriores.