def find_stale_builds()

in cdk-project/lambda/python-functions/github_webhook_receiver.py [0:0]


def find_stale_builds(project_name, source_version):
    stale_builds = []

    # only consider builds <= 1 day old
    search_after = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=1)

    next_token = None
    while True:
        # get build ids, most recent first
        response = list_builds(project_name, next_token)
        build_ids = response["ids"]
        next_token = response.get("nextToken")

        # no builds? stop looking
        if not build_ids:
            break

        builds = cb_client.batch_get_builds(ids=build_ids)["builds"]

        for b in builds:
            # if it's running, and for the same pr, add it to stale list
            if b["buildStatus"] == "IN_PROGRESS" and b["sourceVersion"] == source_version:
                stale_builds.append(b["id"])

            # if startTime < cutoff, stop looking
            if b["startTime"] < search_after:
                next_token = None
                break

        if not next_token:
            break

    logger.info("found %d stale builds for %s:%s", len(stale_builds), project_name, source_version)
    return stale_builds