
Types of jobs:
pipelines:
- name: check
manager: IndependentPipelineManager
trigger:
- event: patchset-created
success:
verified: 1
failure:
verified: -1
pipelines:
- name: gate
manager: DependentPipelineManager
trigger:
- event: comment-added
approval:
- approved: 1
start:
verified: 0
success:
verified: 2
submit: true
failure:
verified: -2
pipelines:
- name: post
manager: IndependentPipelineManager
trigger:
- event: ref-updated
ref: ^(?!refs/).*$
pipelines:
- name: silent
manager: IndependentPipelineManager
trigger:
- event: patchset-created
- name: publish
manager: IndependentPipelineManager
trigger:
- event: ref-updated
ref: ^refs/tags/.*$
projects:
- name: openstack/nova
check:
- gate-nova-merge:
- gate-nova-pep8
- gate-nova-python26
- gate-nova-python27
- gate-tempest-devstack-vm
gate:
- gate-nova-merge:
- gate-nova-pep8
- gate-nova-python26
- gate-nova-python27
- gate-tempest-devstack-vm
post:
- nova-tarball
- nova-docs
Projects with shared jobs automatically get a shared queue:
projects:
- name: openstack/nova
gate:
- gate-nova-merge:
- gate-nova-python27
- gate-tempest-devstack-vm
- name: openstack/glance
gate:
- gate-glance-merge:
- gate-glance-python27
- gate-tempest-devstack-vm
The python library jenkins allows for easy interaction:
from jenkins import Jenkins
jenkins = Jenkins('servername', 'username', 'apikey')
jenkins.build_job(job.name, parameters=params)
Abstracts simple GET/POST transactions.
Notification plugin provides for HTTP endpoints.
class JenkinsCallback(threading.Thread):
def run(self):
httpserver.serve(self.app, host='0.0.0.0', port='8001')
def app(self, environ, start_response):
request = Request(environ)
start_response('200 OK', [('content-type', 'text/html')])
if request.path == '/jenkins_endpoint':
data = json.loads(request.body)
build = data.get('build')
phase = build.get('phase')
status = build.get('status')
url = build.get('full_url')
number = build.get('number')
params = build.get('parameters')
return ['OK']