From 5d8561120c9530819e4d9773f1ef38bf5a329ff3 Mon Sep 17 00:00:00 2001 From: Shankhadeep Dey Date: Tue, 30 Jul 2019 04:37:35 +0530 Subject: [PATCH 1/3] Moving READTHEDOCS application settings to RTD prefix for docker only --- readthedocs/config/config.py | 2 +- readthedocs/doc_builder/constants.py | 12 ++++++------ readthedocs/settings/base.py | 24 ++++++++++++------------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/readthedocs/config/config.py b/readthedocs/config/config.py index eb745d03c7f..18a52e15979 100644 --- a/readthedocs/config/config.py +++ b/readthedocs/config/config.py @@ -151,7 +151,7 @@ class BuildConfigBase: 'submodules', ] - default_build_image = settings.DOCKER_DEFAULT_VERSION + default_build_image = settings.RTD_DOCKER_DEFAULT_VERSION version = None diff --git a/readthedocs/doc_builder/constants.py b/readthedocs/doc_builder/constants.py index 93e992753ee..b48f2c2568d 100644 --- a/readthedocs/doc_builder/constants.py +++ b/readthedocs/doc_builder/constants.py @@ -13,12 +13,12 @@ PDF_RE = re.compile('Output written on (.*?)') # Docker -DOCKER_SOCKET = settings.DOCKER_SOCKET -DOCKER_VERSION = settings.DOCKER_VERSION -DOCKER_IMAGE = settings.DOCKER_IMAGE -DOCKER_IMAGE_SETTINGS = settings.DOCKER_IMAGE_SETTINGS +DOCKER_SOCKET = settings.RTD_DOCKER_SOCKET +DOCKER_VERSION = settings.RTD_DOCKER_VERSION +DOCKER_IMAGE = settings.RTD_DOCKER_IMAGE +DOCKER_IMAGE_SETTINGS = settings.RTD_DOCKER_IMAGE_SETTINGS -old_config = settings.DOCKER_BUILD_IMAGES +old_config = settings.RTD_DOCKER_BUILD_IMAGES if old_config: log.warning( 'Old config detected, DOCKER_BUILD_IMAGES->DOCKER_IMAGE_SETTINGS', @@ -26,7 +26,7 @@ DOCKER_IMAGE_SETTINGS.update(old_config) DOCKER_LIMITS = {'memory': '200m', 'time': 600} -DOCKER_LIMITS.update(settings.DOCKER_LIMITS) +DOCKER_LIMITS.update(settings.RTD_DOCKER_LIMITS) DOCKER_TIMEOUT_EXIT_CODE = 42 DOCKER_OOM_EXIT_CODE = 137 diff --git a/readthedocs/settings/base.py b/readthedocs/settings/base.py index 3ae10d384f4..ed32035898c 100644 --- a/readthedocs/settings/base.py +++ b/readthedocs/settings/base.py @@ -334,16 +334,16 @@ def USE_PROMOS(self): # noqa SENTRY_CELERY_IGNORE_EXPECTED = True # Docker - DOCKER_ENABLE = False - DOCKER_SOCKET = 'unix:///var/run/docker.sock' + RTD_DOCKER_ENABLE = False + RTD_DOCKER_SOCKET = 'unix:///var/run/docker.sock' # This settings has been deprecated in favor of DOCKER_IMAGE_SETTINGS - DOCKER_BUILD_IMAGES = None - DOCKER_LIMITS = {'memory': '200m', 'time': 600} - DOCKER_DEFAULT_IMAGE = 'readthedocs/build' - DOCKER_VERSION = 'auto' - DOCKER_DEFAULT_VERSION = 'latest' - DOCKER_IMAGE = '{}:{}'.format(DOCKER_DEFAULT_IMAGE, DOCKER_DEFAULT_VERSION) - DOCKER_IMAGE_SETTINGS = { + RTD_DOCKER_BUILD_IMAGES = None + RTD_DOCKER_LIMITS = {'memory': '200m', 'time': 600} + RTD_DOCKER_DEFAULT_IMAGE = 'readthedocs/build' + RTD_DOCKER_VERSION = 'auto' + RTD_DOCKER_DEFAULT_VERSION = 'latest' + RTD_DOCKER_IMAGE = '{}:{}'.format(RTD_DOCKER_DEFAULT_IMAGE, RTD_DOCKER_DEFAULT_VERSION) + RTD_DOCKER_IMAGE_SETTINGS = { 'readthedocs/build:1.0': { 'python': {'supported_versions': [2, 2.7, 3, 3.4]}, }, @@ -362,9 +362,9 @@ def USE_PROMOS(self): # noqa } # Alias tagged via ``docker tag`` on the build servers - DOCKER_IMAGE_SETTINGS.update({ - 'readthedocs/build:stable': DOCKER_IMAGE_SETTINGS.get('readthedocs/build:4.0'), - 'readthedocs/build:latest': DOCKER_IMAGE_SETTINGS.get('readthedocs/build:5.0'), + RTD_DOCKER_IMAGE_SETTINGS.update({ + 'readthedocs/build:stable': RTD_DOCKER_IMAGE_SETTINGS.get('readthedocs/build:4.0'), + 'readthedocs/build:latest': RTD_DOCKER_IMAGE_SETTINGS.get('readthedocs/build:5.0'), }) # All auth From 9f2bab9761331919a650ae2df8ecbfaf1303d8c8 Mon Sep 17 00:00:00 2001 From: Shankhadeep Dey Date: Wed, 31 Jul 2019 19:09:02 +0530 Subject: [PATCH 2/3] changing the variable names to pass all the tests --- readthedocs/config/config.py | 20 ++++++++++---------- readthedocs/projects/models.py | 2 +- readthedocs/projects/tasks.py | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/readthedocs/config/config.py b/readthedocs/config/config.py index 18a52e15979..efe1ef01b56 100644 --- a/readthedocs/config/config.py +++ b/readthedocs/config/config.py @@ -266,7 +266,7 @@ def valid_build_images(self): ``readthedocs/build`` part) plus ``stable`` and ``latest``. """ images = {'stable', 'latest'} - for k in settings.DOCKER_IMAGE_SETTINGS: + for k in settings.RTD_DOCKER_IMAGE_SETTINGS: _, version = k.split(':') if re.fullmatch(r'^[\d\.]+$', version): images.add(version) @@ -282,12 +282,12 @@ def get_valid_python_versions_for_image(self, build_image): Returns supported versions for the ``DOCKER_DEFAULT_VERSION`` if not ``build_image`` found. """ - if build_image not in settings.DOCKER_IMAGE_SETTINGS: + if build_image not in settings.RTD_DOCKER_IMAGE_SETTINGS: build_image = '{}:{}'.format( - settings.DOCKER_DEFAULT_IMAGE, + settings.RTD_DOCKER_DEFAULT_IMAGE, self.default_build_image, ) - return settings.DOCKER_IMAGE_SETTINGS[build_image]['python']['supported_versions'] + return settings.RTD_DOCKER_IMAGE_SETTINGS[build_image]['python']['supported_versions'] def as_dict(self): config = {} @@ -324,7 +324,7 @@ def get_valid_python_versions(self): return self.env_config['python']['supported_versions'] except (KeyError, TypeError): versions = set() - for _, options in settings.DOCKER_IMAGE_SETTINGS.items(): + for _, options in settings.RTD_DOCKER_IMAGE_SETTINGS.items(): versions = versions.union( options['python']['supported_versions'] ) @@ -379,7 +379,7 @@ def validate_build(self): if 'build' in self.env_config: build = self.env_config['build'].copy() else: - build = {'image': settings.DOCKER_IMAGE} + build = {'image': settings.RTD_DOCKER_IMAGE} # User specified if 'build' in self.raw_config: @@ -393,12 +393,12 @@ def validate_build(self): if ':' not in build['image']: # Prepend proper image name to user's image name build['image'] = '{}:{}'.format( - settings.DOCKER_DEFAULT_IMAGE, + settings.RTD_DOCKER_DEFAULT_IMAGE, build['image'], ) # Update docker default settings from image name - if build['image'] in settings.DOCKER_IMAGE_SETTINGS: - self.env_config.update(settings.DOCKER_IMAGE_SETTINGS[build['image']]) + if build['image'] in settings.RTD_DOCKER_IMAGE_SETTINGS: + self.env_config.update(settings.RTD_DOCKER_IMAGE_SETTINGS[build['image']]) # Allow to override specific project config_image = self.defaults.get('build_image') @@ -700,7 +700,7 @@ def validate_build(self): with self.catch_validation_error('build.image'): image = self.pop_config('build.image', self.default_build_image) build['image'] = '{}:{}'.format( - settings.DOCKER_DEFAULT_IMAGE, + settings.RTD_DOCKER_DEFAULT_IMAGE, validate_choice( image, self.valid_build_images, diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index bb5c1eed8fc..5bed22baf77 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -852,7 +852,7 @@ def repo_nonblockinglock(self, version, max_lock_age=None): if max_lock_age is None: max_lock_age = ( self.container_time_limit or - settings.DOCKER_LIMITS.get('time') or + settings.RTD_DOCKER_LIMITS.get('time') or settings.REPO_LOCK_SECONDS ) diff --git a/readthedocs/projects/tasks.py b/readthedocs/projects/tasks.py index ae67bf17620..f179d07ef3e 100644 --- a/readthedocs/projects/tasks.py +++ b/readthedocs/projects/tasks.py @@ -375,7 +375,7 @@ def run( """ try: if docker is None: - docker = settings.DOCKER_ENABLE + docker = settings.RTD_DOCKER_ENABLE self.version = self.get_version(version_pk) self.project = self.version.project self.build = self.get_build(build_pk) From c614f89b04a2ed167522192927aeddfe7900db9a Mon Sep 17 00:00:00 2001 From: Shankhadeep Dey Date: Fri, 2 Aug 2019 10:27:16 +0530 Subject: [PATCH 3/3] Adding RTD prefix to support docs building --- docs/config-file/v1.rst | 2 +- docs/doc_extensions.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/config-file/v1.rst b/docs/config-file/v1.rst index c70588e87e2..9d88f3ebc1b 100644 --- a/docs/config-file/v1.rst +++ b/docs/config-file/v1.rst @@ -107,7 +107,7 @@ The ``build`` block configures specific aspects of the documentation build. build.image ``````````` -* Default: :djangosetting:`DOCKER_DEFAULT_VERSION` +* Default: :djangosetting:`RTD_DOCKER_DEFAULT_VERSION` * Options: ``stable``, ``latest`` The build image to use for specific builds. diff --git a/docs/doc_extensions.py b/docs/doc_extensions.py index d9da66820c5..a3f82ec64aa 100644 --- a/docs/doc_extensions.py +++ b/docs/doc_extensions.py @@ -29,8 +29,8 @@ def django_setting_role(typ, rawtext, text, lineno, inliner, options=None, def python_supported_versions_role(typ, rawtext, text, lineno, inliner, options=None, content=None): """Up to date supported python versions for each build image.""" - image = '{}:{}'.format(settings.DOCKER_DEFAULT_IMAGE, text) - image_settings = settings.DOCKER_IMAGE_SETTINGS[image] + image = '{}:{}'.format(settings.RTD_DOCKER_DEFAULT_IMAGE, text) + image_settings = settings.RTD_DOCKER_IMAGE_SETTINGS[image] python_versions = image_settings['python']['supported_versions'] node_list = [] separator = ', '