in ebcli/operations/buildspecops.py [0:0]
def stream_build_configuration_app_version_creation(app_name, app_version_label, build_spec):
# Get the CloudWatch logs link
successfully_generated = wait_for_app_version_attribute(
app_name,
[app_version_label],
timeout=1
)
app_version_response = elasticbeanstalk.get_application_versions(
app_name,
version_labels=[app_version_label]
)['ApplicationVersions']
build_response = codebuild.batch_get_builds([app_version_response[0]['BuildArn']]) \
if successfully_generated else None
codebuild_timeout = build_spec.timeout or 60
if build_response is not None and 'logs' in build_response['builds'][0]:
log_link_text = strings['codebuild.buildlogs'].replace(
'{logs_link}',
build_response['builds'][0]['logs']['deepLink']
)
io.echo(log_link_text)
io.echo(
"NOTE: The CodeBuild timeout is set to {0} minutes, so this "
"operation may take upto '{0}' minutes to complete.".format(codebuild_timeout)
)
else:
io.log_warning("Could not retrieve CloudWatch link for CodeBuild logs")
try:
# Need to lazy-import `ebcli.lib.commonops` because `pytest` is unable to load it
# at module load-time using Python 2.7 and Python 3.4
from ebcli.operations import commonops
timeout_error_message = ' '.join([
'The CodeBuild build timed out after {} minute(s).'.format(codebuild_timeout),
"To increase the time limit, use the 'Timeout' option in the 'buildspec.yml' file."
])
commonops.wait_for_success_events(
app_name=app_name,
can_abort=False,
request_id=None,
timeout_error_message=timeout_error_message,
timeout_in_minutes=codebuild_timeout,
version_label=app_version_label
)
except ServiceError as exception:
LOG.debug("Caught service error while creating application version '{0}' "
"deleting the created application version as it is useless now.".format(app_version_label))
elasticbeanstalk.delete_application_version(app_name, app_version_label)
raise exception