def wait()

in aws_codeseeder/services/codebuild.py [0:0]


def wait(build_id: str) -> Iterable[BuildInfo]:
    """Wait for completion of a CodeBuild execution

    Parameters
    ----------
    build_id : str
        The CodeBuild Execution/Build Id

    Returns
    -------
    Iterable[BuildInfo]
        Info on the CodeBuild execution

    Yields
    -------
    Iterator[Iterable[BuildInfo]]
        Info on the CodeBuild execution

    Raises
    ------
    RuntimeError
        If the CodeBuild doesn't succeed
    """
    build = fetch_build_info(build_id=build_id)
    while build.status is BuildStatus.in_progress:
        time.sleep(_BUILD_WAIT_POLLING_DELAY)

        last_phase = build.current_phase
        last_status = build.status
        build = fetch_build_info(build_id=build_id)

        if build.current_phase is not last_phase or build.status is not last_status:
            LOGGER.info("phase: %s (%s)", build.current_phase.value, build.status.value)

        yield build

    if build.status is not BuildStatus.succeeded:
        raise RuntimeError(f"CodeBuild build ({build_id}) is {build.status.value}")
    LOGGER.debug(
        "start: %s | end: %s | elapsed: %s",
        build.start_time,
        build.end_time,
        build.duration_in_seconds,
    )