Reality Sucks

Aller au contenu | Aller au menu | Aller à la recherche

2013 mai 31

Api Jenkins Python

Je pensais que ce serait assez simple de parser le flux RSS de jenkins, un truc genre :

from feedparser import parse
import re

jenkinsFeed = parse('[address of the RSS flux for the jenkins view]')

pattern = re.compile(r"(?P<projectName>\S+)\s+#(?P<buildNumber>0-9+)\s+((?P<state>.*)\)\s*")

for entry in jenkinsFeed.entries :
match = pattern.match(entry.title)
print(entry.title)
if match :
print " Project Name : " + match.group("projectName")
print " Build Number : " + match.group("buildNumber")
print " State : " + match.group("state")
else :
print " " + "no match in " + entry.title

Il existe en fait une API Python pour Jenkins. C'est encore plus simple.

Pip étant deja installé, l'API Python s'instale en une ligne :

@@>sudo easy_install jenkinsapi

Et s'utilise à peu pret aussi simplement :

from jenkinsapi import jenkins

jenkins = jenkins.Jenkins('[address of the jenkins webapp]'/api/python)
job = jenkins.get_job('[the job name]')
build = job.get_last_build()

print build.get_status()

Si controller les leds sur la sortie SPI du RPi se fait aussi fluidement, ca aura été un peu trop simple.

2013 mai 30

Récupration du flux RSS de Jenkins en Python sur un Raspberry Pi

En attendant de pouvoir finir de me décider pour les leds (WS2801 ou WS2812B avec un driver custom ?), j'ai acheté un Raspberry Pi (merci snootlab qui était présent au THSF.

L'install de l'OS se passe sans surprise. Python avec IDLE est installé sur la distribution de base. Pour parser le flux RSS de Jenkins, feedparser semble ête une bonne solution.

Pour l'installer, il faut commencer par mettre à jour le listing des repositories :

sudo apt-get update

Ce qui permet de d'installer python 2.7, et pip (qui sera utilisé pour installer feedparser) :

sudo apt-get install python-pip python2.7-dev (which did a lot, including Python 2.6!)
sudo easy_install -U distribute
sudo pip install feedparser

Ensuite ca devient étonnement simple. Lancer IDLE et :

from feedparser import parse
jenkinsFeed = parse('{url du flux à monitorer}")
print(jenkinsFeed['feed']['title'])

Pourquoi les API java ne sont-elles pas toutes comme ca ?