Ejemplo n.º 1
0
def waitForBuild(job, branch=None):
    buildId = waitForBuildToExist(job, branch)
    if buildId is None:
        return None
    status = -1
    count = 900
    url = None
    if branch is not None:
        url = common.jenkinsUrl(
        ) + "job/" + job + "/job/" + branch + "/" + str(buildId) + "/api/json"
    else:
        url = common.jenkinsUrl() + "job/" + job + "/" + str(
            buildId) + "/api/json"
    while status != 200 and count >= 0:
        count = count - 1
        resp = requests.get(url)
        status = resp.status_code
        if status == 200:
            j = json.loads(resp.text)
            if j['building'] is False:
                return j
            else:
                status = -1
                time.sleep(1)
    return None
Ejemplo n.º 2
0
def getArtifact(job, branch, buildId, relativePath):
    print(common.jenkinsUrl() + "job/" + job + "/job/" + branch + "/" +
          str(buildId) + "/artifact/" + relativePath)
    resp = requests.get(common.jenkinsUrl() + "job/" + job + "/job/" + branch +
                        "/" + str(buildId) + "/artifact/" + relativePath)
    if resp.status_code != 200:
        raise Exception("Failed to retrieve artifact " + str(resp.status_code))
    return resp.text
Ejemplo n.º 3
0
def getConsole(job, branch, buildId):
    url = None
    if branch is not None:
        url = common.jenkinsUrl(
        ) + "job/" + job + "/job/" + branch + "/" + str(buildId) + "/console"
    else:
        url = common.jenkinsUrl() + "job/" + job + "/" + str(
            buildId) + "/console"
    resp = requests.get(url)
    if resp.status_code == 200:
        return resp.text
    else:
        raise Exception("Failed to retrieve console " + str(resp.status_code))
Ejemplo n.º 4
0
def getConsole(job, branch, buildId):

    result = prepareSession()
    session = result['session']
    headers = result['headers']
    url = None
    if branch is not None:
        url = common.jenkinsUrl() + "job/" + job + "/job/" + branch + "/" + str(buildId) + "/consoleText"
    else:
        url = common.jenkinsUrl() + "job/" + job + "/" + str(buildId) + "/consoleText"
    resp = session.get(url, headers=headers)
    if resp.status_code == 200:
        return resp.text
    else:
        raise Exception("Failed to retrieve console " + str(resp.status_code))
Ejemplo n.º 5
0
def runPipeline(job):
    result = prepareSession()
    session = result['session']
    headers = result['headers']
    r = session.post(common.jenkinsUrl() + "job/" + job + "/build?delay=0", headers=headers)
    if r.status_code != 201:
        raise Exception("Failed to run pipeline " + str(r.status_code))
Ejemplo n.º 6
0
def proceed(job, branch, buildId, inputId):
    url = common.jenkinsUrl() + "job/" + job + "/job/" + branch + "/" + str(
        buildId) + "/input/" + inputId + "/proceedEmpty"
    print(url)
    resp = requests.post(url)
    if resp.status_code != 200:
        raise Exception("Failed to proceed" + str(resp.status_code))
    return resp.text
Ejemplo n.º 7
0
def executeScript(script):
    result = prepareSession()
    session = result['session']
    headers = result['headers']
    headers.update({"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"})
    r = session.post(common.jenkinsUrl() + "scriptText", data={'script': script}, headers=headers)

    if r.status_code != 200:
        raise Exception("Failed to run script " + script)
Ejemplo n.º 8
0
def addPipelineJob(name, repoUrl, directory):
    result = prepareSession()
    session = result['session']
    headers = result['headers']
    thisDir = os.path.dirname(os.path.abspath(__file__))
    j2 = Environment(loader=FileSystemLoader(thisDir), trim_blocks=True)
    content = j2.get_template('templates/pipeline.xml').render(name=name, repo_url=repoUrl, directory=directory)
    headers.update({"Content-Type": "text/xml; charset=UTF-8"})
    r = session.post(common.jenkinsUrl() + "createItem?name=" + name, data=content, headers=headers)
    if r.status_code != 200:
        raise Exception("Failed to add job; status was " + str(r.status_code))
Ejemplo n.º 9
0
def waitForBuildToExist(job, branch=None):
    status = -1
    count = 60
    url = None
    if branch is not None:
        url = common.jenkinsUrl() + "job/" + job + "/job/" + branch + "/api/json"
    else:
        url = common.jenkinsUrl() + "job/" + job + "/api/json"
    while status != 200 and count >= 0:
        count = count - 1
        resp = requests.get(url)
        status = resp.status_code
        if status == 200:
            j = json.loads(resp.text)
            if len(j['builds']) == 0:
                status = -1
                time.sleep(1)
            else:
                return j['builds'][0]['number']
    return None
Ejemplo n.º 10
0
def prepareSession():
    # Build the Jenkins crumb issuer URL
    session = requests.session()
    parsed_url = urllib.parse.urlparse(common.jenkinsUrl())
    crumb_issuer_url = urllib.parse.urlunparse(
        (parsed_url.scheme, parsed_url.netloc, 'crumbIssuer/api/json', '', '',
         ''))

    # Get the Jenkins crumb
    auth = requests.auth.HTTPBasicAuth('admin', 'admin')
    r = session.get(crumb_issuer_url, auth=auth)
    json = r.json()
    crumb = {json['crumbRequestField']: json['crumb']}
    headers = {}
    headers.update(crumb)
    return {'session': session, 'headers': headers}
Ejemplo n.º 11
0
def runJob(job, branch):
    requests.post(common.jenkinsUrl() + "job/" + job + "/job/" + branch +
                  "/build?delay=0sec")
Ejemplo n.º 12
0
def abort(job, branch, buildId, inputId):
    url = common.jenkinsUrl() + "job/" + job + "/job/" + branch + "/" + str(buildId) + "/input/" + inputId + "/abort"
    resp = requests.post(url)
    if resp.status_code != 200:
        raise Exception("Failed to abort" + str(resp.status_code))
    return resp.text