| #!/usr/bin/env python |
| # Copyright 2013 OpenStack Foundation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| |
| # This script can be used to manually trigger a job in the same way that |
| # Zuul does. At the moment, it only supports the post set of Zuul |
| # parameters. |
| |
| import argparse |
| import time |
| import json |
| from uuid import uuid4 |
| |
| import gear |
| |
| |
| def main(): |
| c = gear.Client() |
| |
| parser = argparse.ArgumentParser(description='Trigger a Zuul job.') |
| parser.add_argument('--job', dest='job', required=True, |
| help='Job Name') |
| parser.add_argument('--project', dest='project', required=True, |
| help='Project name') |
| parser.add_argument('--pipeline', dest='pipeline', default='release', |
| help='Zuul pipeline') |
| parser.add_argument('--refname', dest='refname', |
| help='Ref name') |
| parser.add_argument('--oldrev', dest='oldrev', |
| default='0000000000000000000000000000000000000000', |
| help='Old revision (SHA)') |
| parser.add_argument('--newrev', dest='newrev', |
| help='New revision (SHA)') |
| parser.add_argument('--url', dest='url', |
| default='http://zuul.openstack.org/p', help='Zuul URL') |
| parser.add_argument('--logpath', dest='logpath', required=True, |
| help='Path for log files.') |
| args = parser.parse_args() |
| |
| data = {'ZUUL_PIPELINE': args.pipeline, |
| 'ZUUL_PROJECT': args.project, |
| 'ZUUL_UUID': str(uuid4().hex), |
| 'ZUUL_REF': args.refname, |
| 'ZUUL_REFNAME': args.refname, |
| 'ZUUL_OLDREV': args.oldrev, |
| 'ZUUL_NEWREV': args.newrev, |
| 'ZUUL_SHORT_OLDREV': args.oldrev[:7], |
| 'ZUUL_SHORT_NEWREV': args.newrev[:7], |
| 'ZUUL_COMMIT': args.newrev, |
| 'ZUUL_URL': args.url, |
| 'LOG_PATH': args.logpath, |
| } |
| |
| c.addServer('127.0.0.1', 4730) |
| c.waitForServer() |
| |
| job = gear.Job("build:%s" % args.job, |
| json.dumps(data), |
| unique=data['ZUUL_UUID']) |
| c.submitJob(job, precedence=gear.PRECEDENCE_HIGH) |
| |
| while not job.complete: |
| time.sleep(1) |
| |
| |
| if __name__ == '__main__': |
| main() |