Jenkins - como posso buscar informações sobre as últimas compilações bem-sucedidas de todas as tarefas no pipeline?

3

Podemos obter a lista de todos os trabalhos com seu estado atual por meio desta chamada da API:

/view/<pipeline-name>/api/json

Além disso, podemos obter dados sobre a última versão completa de qualquer trabalho específico :

/job/<jobname>/lastCompletedBuild/api/json

Minha pergunta é: qual é a melhor maneira de buscar dados sobre todas as últimas compilações concluídas no pipeline? Atualmente estou solicitando esse tipo de informação em paralelo, mas espero que haja uma maneira mais fácil de fazer isso. Mesmo que "mais fácil" signifique ganhar algo em termos de simplicidade, mas perdendo no paralelismo.

    
por shabunc 08.04.2015 / 01:31

1 resposta

2

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 .

  1. Use curl , jq e sort na linha de comando

    curl -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" ...

  2. 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.

    
por 17.04.2015 / 18:13

Tags