2012-05-21 4 views
4

J'ai mis en place un projet multi-configuration dans Jenkins et j'essaye de gérer ces travaux grâce à un script de ligne de commande. J'essaye d'utiliser le module de Python de jenkinsapi pour ceci. Jusqu'ici j'ai trouvé comment obtenir mon travail, mais je ne peux pas comprendre comment obtenir des configurations de construction spécifiques pour voir si elles ont réussi.Jenkins Python API et les projets multi-configuration

from jenkinsapi.jenkins import * 
jenkins = Jenkins('http://example.org/jenkins') 
job = jenkins.get_job('foobar') 

# I can get job info here, but I don't know how to access specific configurations 

Est-il possible de le faire? Est-ce que chacun des projets multi-configuration est un "travail" séparé ou sont-ils tous regroupés dans le même travail? Je vais devoir gérer beaucoup de ces types de projets dans le futur, et je veux pouvoir ajouter facilement une nouvelle configuration matérielle à la construction.

+0

ne pas effacer les informations que vous voulez récupérer et ce qui est unique pour vos projets multi-configuration –

Répondre

2

Je ne pense pas que Python JenkinsAPI est adapté pour travailler avec des tâches Matrix. Utilisez les scripts Groovy via Groovy Plugin pour entrer dans Jenkins Java API.

Les classes de matrice résident dans le module hudson.matrix.

+0

Est-ce capable de travailler avec l'API à distance? Ou l'API distante n'est-elle pas capable de gérer des tâches matricielles? –

+0

Les informations sur les exécutions de configuration sont accessibles à distance (vous pouvez le voir via 'http: // [serveur_jenkins]/api/xml' dans le navigateur (les configurations individuelles seront sous/hudson/job/build/run). ne vous en occupez pas (bien sûr, vous pouvez l'ajouter vous-même) En tout cas, cependant, cette information est "post-factum" - après la construction. Accéder à Jenkins via Groovy devra être fait à partir d'un travail qui fonctionne que Jenkins.Toutefois, ** que ** les travaux (ou les tâches) peuvent être gérés à distance via des paramètres, etc. –

1

Pas si clair que vous voulez, donner quelques conseils.

Si vous n'êtes pas clair quelles informations vous pouvez de l'objet job dans l'API, vous pouvez utiliser ci-dessous méthode pour vérifier

Vérifiez les codes sources dans github, il est job.py pour votre cas, vous pouvez également utiliser la méthode python dir() pour voir que vous pouvez appeler à job

>>> from jenkinsapi.jenkins import * 
>>> jenkins = Jenkins('http://localhost') 
>>> job = jenkins.get_job('foobar') 
>>> dir(job) 
['RETRY_ATTEMPTS', '__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__get 
item__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__s 
izeof__', '__str__', '__subclasshook__', '__weakref__', '_buildid_for_type', '_config', '_data', '_element_tree', '_get_ 
config_element_tree', '_mk_json_from_build_parameters', '_poll', '_revmap', '_scm_map', '_scmbranchmap', '_scmurlmap', ' 
baseurl', 'delete_from_queue', 'disable', 'enable', 'get_build', 'get_build_dict', 'get_build_ids', 'get_build_triggerur 
l', 'get_buildnumber_for_revision', 'get_config', 'get_config_xml_url', 'get_data', 'get_delete_url', 'get_description', 
'get_downstream_job_names', 'get_downstream_jobs', 'get_first_build', 'get_first_buildnumber', 'get_jenkins_obj', 'get_ 
last_build', 'get_last_build_or_none', 'get_last_buildnumber', 'get_last_completed_build', 'get_last_completed_buildnumb 
er', 'get_last_failed_buildnumber', 'get_last_good_build', 'get_last_good_buildnumber', 'get_next_build_number', 'get_pa 
rams', 'get_params_list', 'get_queue_item', 'get_rename_url', 'get_revision_dict', 'get_scm_branch', 'get_scm_type', 'ge 
t_scm_url', 'get_upstream_job_names', 'get_upstream_jobs', 'invoke', 'is_enabled', 'is_queued', 'is_queued_or_running', 
'is_running', 'jenkins', 'load_config', 'mk_json_from_build_parameters', 'modify_scm_branch', 'modify_scm_url', 'name', 
'poll', 'python_api_url', 'strip_trailing_slash', 'update_config'] 
>>> print job.get_last_build() 
foobar #5 

Vérifiez la configuration directement, cliquez sur API REST dans le fond de votre travail foobar, vous pouvez obtenir la configuration de travail directement comme http://example.org/jenkins/job/foobar/api/json?pretty=true

Questions connexes