2012-05-21 3 views
4

Jenkins에서 다중 구성 프로젝트를 설정하고 명령 줄 스크립트를 통해 이러한 작업을 관리하려고합니다. 나는 이것을 위해 jenkinsapi Python 모듈을 사용하려고 노력하고있다. 지금까지 나는 일을하는 법을 발견했지만, 성공했는지 확인하기 위해 특정 빌드 구성을 얻는 방법을 알 수는 없다.Jenkins Python API 및 다중 구성 프로젝트

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 

어쨌든 이것을 수행 할 예정입니까? 다중 구성 프로젝트의 각 구성 요소가 별도의 "작업"입니까, 아니면 모두 동일한 작업으로 묶여 있습니까? 앞으로 이러한 유형의 프로젝트를 많이 관리해야 할 것이며 새로운 하드웨어 구성을 빌드에 쉽게 추가 할 수 있기를 원합니다.

+0

과 같이 작업 구성을 직접 가져올 수 있습니다. 가져올 정보와 다중 구성 프로젝트에 고유 한 내용이 명확하지 않습니다. –

답변

2

Python JenkinsAPI가 Matrix 작업에 적합하지 않다고 생각합니다. Groovy Plugin을 통해 Groovy 스크립트를 사용하여 Jenkins Java API에 접속하십시오.

매트릭스 클래스는 hudson.matrix 모듈에 있습니다.

+0

원격 API에서이 기능을 사용할 수 있습니까? 아니면 원격 API가 매트릭스 작업을 처리 할 수 ​​없습니까? –

+0

구성 실행에 대한 정보는 원격으로 액세스 할 수 있습니다 (브라우저에서'http : // [jenkins_server]/api/xml'를 통해 볼 수 있습니다. 개별 구성 실행은/hudson/job/build/run에 있습니다). AFAIK (물론, 직접 추가 할 수 있습니다.) 그러나 어떤 경우에도 그 정보는 빌드 이후에 'post-factum'입니다 .Groovy를 통해 Jenkins에 액세스하려면 실행되는 작업에서 완료해야합니다 그러나 **, ** 작업 (또는 작업)은 매개 변수를 통해 원격으로 관리 할 수 ​​있습니다. –

1

원하는 내용이 분명하지 않으므로 몇 가지 힌트를 제공하십시오.

당신이 API의 객체 job에서, 당신은

확인을 GitHub의에서를 소스 코드를 확인하는 방법을 아래에 사용할 수있는 수있는 정보가 명확하지 않은 경우, 그것은 또한 당신이 할 수있는, 당신의 사건에 대한 job.py입니다 당신이 직접 구성을 확인 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 

에 전화하여 foobar 작업의 하단에서 REST API를 클릭 할 수있는 볼 파이썬 dir() 방법을 사용, http://example.org/jenkins/job/foobar/api/json?pretty=true