def jenkins_pipeline_monitor()

in services/jenkins-pipeline-monitor/handler.py [0:0]


def jenkins_pipeline_monitor():
    # retrieve secret from secert manager
    secret = get_secret()
    logging.info(f'Secrets retrieved')
    # get jenkins object
    jenkinsObj = get_jenkins_obj(secret)
    logging.info(f'Jenkins obj created')
    # get relevant pipeline job
    job = get_pipeline_job(jenkinsObj)
    logging.info(f'Job fetch {job}')
    # get the latest build on the pipeline
    latest_build_number = get_latest_build_number(job)

    # get builds scheduled for the latest day
    latest_day_builds = get_latest_day_builds(job, latest_build_number)
    logging.info(f'latest builds {latest_day_builds}')

    # exit if no builds found
    if not latest_day_builds:
        logging.error('No builds for the latest day')
        return

    # filter latest day builds by desired build type a.k.a release job type
    filtered_builds = filter_by_release_job_type(latest_day_builds)
    logging.info(f'Builds filtered by desired release job type : {filtered_builds}')

    # exit if no builds of desired build type
    if not filtered_builds:
        logging.error('No builds of desired type')
        return

    desired_cause = 'hudson.model.Cause$UpstreamCause'
    filtered_builds = filter_by_upstream_cause(filtered_builds, desired_cause)

    # exit if builds not triggered by UpstreamCause
    if not filtered_builds:
        logging.error(f'Builds dont belong to desired cause:{desired_cause}')
    else:
        logging.info(f'Filtered builds by {desired_cause} : {filtered_builds}')
        status_check(filtered_builds)