Skip to content

Commit ab234ea

Browse files
authored
Don't assume build isn't None in a docker build env (#6599)
* Don't assume build isn't None in a docker build env This is kind of the same we hit with a local env #6503 * Check for self.build * Use context manager
1 parent 4c8da2f commit ab234ea

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

readthedocs/doc_builder/environments.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -790,13 +790,7 @@ def __init__(self, *args, **kwargs):
790790
super().__init__(*args, **kwargs)
791791
self.client = None
792792
self.container = None
793-
self.container_name = slugify(
794-
'build-{build}-project-{project_id}-{project_name}'.format(
795-
build=self.build.get('id'),
796-
project_id=self.project.pk,
797-
project_name=self.project.slug,
798-
)[:DOCKER_HOSTNAME_MAX_LEN],
799-
)
793+
self.container_name = self.get_container_name()
800794

801795
# Decide what Docker image to use, based on priorities:
802796
# Use the Docker image set by our feature flag: ``testing`` or,
@@ -908,6 +902,17 @@ def __exit__(self, exc_type, exc_value, tb):
908902

909903
return super().__exit__(exc_type, exc_value, tb)
910904

905+
def get_container_name(self):
906+
if self.build:
907+
name = 'build-{build}-project-{project_id}-{project_name}'.format(
908+
build=self.build.get('id'),
909+
project_id=self.project.pk,
910+
project_name=self.project.slug,
911+
)
912+
else:
913+
name = f'sync-project-{self.project.pk}-{self.project.slug}'
914+
return slugify(name[:DOCKER_HOSTNAME_MAX_LEN])
915+
911916
def get_client(self):
912917
"""Create Docker client connection."""
913918
try:
@@ -929,11 +934,13 @@ def get_client(self):
929934
# We don't raise an error here mentioning Docker, that is a
930935
# technical detail that the user can't resolve on their own.
931936
# Instead, give the user a generic failure
932-
raise BuildEnvironmentError(
933-
BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(
934-
build_id=self.build['id'],
935-
),
936-
)
937+
if self.build:
938+
error = BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(
939+
build_id=self.build.get('id'),
940+
)
941+
else:
942+
error = 'Failed to connect to Docker API client'
943+
raise BuildEnvironmentError(error)
937944

938945
def _get_binds(self):
939946
"""

readthedocs/projects/tasks.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,10 @@ def run(self, version_pk): # pylint: disable=arguments-differ
262262
environment=self.get_rtd_env_vars(),
263263
)
264264

265-
before_vcs.send(sender=self.version, environment=environment)
266-
with self.project.repo_nonblockinglock(version=self.version):
267-
self.sync_repo(environment)
265+
with environment:
266+
before_vcs.send(sender=self.version, environment=environment)
267+
with self.project.repo_nonblockinglock(version=self.version):
268+
self.sync_repo(environment)
268269
return True
269270
except RepositoryError:
270271
# Do not log as ERROR handled exceptions

0 commit comments

Comments
 (0)