Example #1
0
def run_jenkins_job(phrase):
    job_name = JOBS_MAPPING.get(phrase, None)
    if job_name is None:
        return "任务不存在"

    try:
        server = Jenkins(JENKINS_URL,
                         username=JENKINS_USER,
                         password=JENKINS_PASS)
    except HTTPError as ex:
        return "jenkins连接出错: %s" % ex
    job = server[job_name]
    job_buildid = server.get_job(job_name).get_next_build_number()
    run_job = job.invoke()
    time.sleep(10)

    #  查看任务状态
    url = f'''{job.baseurl}/{job_buildid}/'''
    obj = Build(url, job_buildid, job)
    obj.block()
    # obj 只是获取当时的任务状态,所以需要等待任务执行完,再获取一次状态
    obj = Build(url, job_buildid, job)
    result = f'''{phrase}完成, 任务名称: {obj.name}, 执行结果:{obj.get_status()}, 耗时: {obj.get_duration().total_seconds()}秒'''
    return result