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,
)