From 2e2e19dee7fca4b13ad7c51497d66f3dc4200f57 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Thu, 12 Oct 2023 17:39:21 -0400 Subject: [PATCH 1/5] make jupyterhub idle server more easily configurable --- birdhouse/config/jupyterhub/default.env | 14 ++++++++ .../jupyterhub/jupyterhub_config.py.template | 33 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/birdhouse/config/jupyterhub/default.env b/birdhouse/config/jupyterhub/default.env index c949cff84..e96c37efd 100644 --- a/birdhouse/config/jupyterhub/default.env +++ b/birdhouse/config/jupyterhub/default.env @@ -43,6 +43,17 @@ export JUPYTER_LOGIN_BANNER_BOTTOM_SECTION="" # server for the change to take effect. export JUPYTERHUB_README="" +# Timeout (in seconds) to shut down the whole server when no kernels or terminals are running and there is no activity. +# If left undefined or zero, the feature will not be enabled. +export JUPYTER_IDLE_SERVER_CULL_TIMEOUT=0 +# Timeout (in seconds) after which individual user kernels/terminals are considered idle and ready to be culled. +export JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=0 +# Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. +# Enabled only if 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT' is provided and greater than zero. +# If this value is not provided or is set higher than 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT', +# it will be automatically reduced by half of the timeout value to ensure that it can be effective. +export JUPYTER_IDLE_KERNEL_CULL_INTERVAL=0 + # Allow for adding new config or override existing config in # config/jupyterhub/jupyterhub_config.py.template. export JUPYTERHUB_CONFIG_OVERRIDE="" @@ -68,6 +79,9 @@ OPTIONAL_VARS=" \$JUPYTERHUB_CONFIG_OVERRIDE \$JUPYTERHUB_DOCKER \$JUPYTERHUB_VERSION + \$JUPYTER_IDLE_SERVER_CULL_TIMEOUT + \$JUPYTER_IDLE_KERNEL_CULL_TIMEOUT + \$JUPYTER_IDLE_KERNEL_CULL_INTERVAL " # add any component that this component requires to run diff --git a/birdhouse/config/jupyterhub/jupyterhub_config.py.template b/birdhouse/config/jupyterhub/jupyterhub_config.py.template index e3f6d5ae7..be110f066 100644 --- a/birdhouse/config/jupyterhub/jupyterhub_config.py.template +++ b/birdhouse/config/jupyterhub/jupyterhub_config.py.template @@ -187,4 +187,37 @@ blocked_users = {'authtest', '${CATALOG_USERNAME}', 'anonymous'} c.Authenticator.blacklist = blocked_users # v0.9+ c.Authenticator.blocked_users = blocked_users # v1.2+ + +# ------------------------------------------------------------------------------ +# Shutdown idle user server based on configured timeouts. +# ------------------------------------------------------------------------------ +# Timeout (in seconds) to shut down the whole server when no kernels or terminals are running and there is no activity. +# If left undefined or zero, the feature will not be enabled. +jupyter_idle_server_cull_timeout = int("${JUPYTER_IDLE_SERVER_CULL_TIMEOUT}" or 0) +if jupyter_idle_server_cull_timeout: + c.Spawner.args.append('--NotebookApp.shutdown_no_activity_timeout={}'.format(jupyter_idle_server_cull_timeout)) +# Timeout (in seconds) after which individual user kernels/terminals are considered idle and ready to be culled. +jupyter_idle_kernel_cull_timeout = int("${JUPYTER_IDLE_KERNEL_CULL_TIMEOUT}" or 0) +# Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. +jupyter_idle_kernel_cull_interval = int("${JUPYTER_IDLE_KERNEL_CULL_INTERVAL}" or 0) +if jupyter_idle_kernel_cull_timeout: + if jupyter_idle_kernel_cull_interval > jupyter_idle_kernel_cull_timeout: + jupyter_idle_kernel_cull_interval = jupyter_idle_kernel_cull_timeout / 2 + c.Spawner.args.extend([ + '--MappingKernelManager.cull_idle_timeout={}'.format(jupyter_idle_kernel_cull_timeout), + '--MappingKernelManager.cull_interval={}'.format(jupyter_idle_kernel_cull_interval), + '--TerminalManager.cull_inactive_timeout={}'.format(jupyter_idle_kernel_cull_timeout), + '--TerminalManager.cull_interval={}'.format(jupyter_idle_kernel_cull_interval), + ]) +# Culling kernels which have one or more connections for idle but open notebooks and/or terminals. +# Otherwise, browser tabs, notebooks and terminals all have to be closed for culling to work. +if jupyter_idle_server_cull_timeout or jupyter_idle_kernel_cull_timeout: + c.Spawner.args.extend([ + '--MappingKernelManager.cull_connected=True', + '--TerminalManager.cull_connected=True', + ]) + +# ------------------------------------------------------------------------------ +# Configuration overrides +# ------------------------------------------------------------------------------ ${JUPYTERHUB_CONFIG_OVERRIDE} # noqa From 72ae6487521fd5c7cd8afd376e93e78810ad6f16 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Thu, 12 Oct 2023 17:52:40 -0400 Subject: [PATCH 2/5] update changes and default jupyter kernel culling timeout --- CHANGES.md | 10 +++++++++- birdhouse/config/jupyterhub/default.env | 4 ++-- .../config/jupyterhub/jupyterhub_config.py.template | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 29d5659f0..72ccfb081 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,7 +15,15 @@ [Unreleased](https://github.com/bird-house/birdhouse-deploy/tree/master) (latest) ------------------------------------------------------------------------------------------------------------------ -[//]: # (list changes here, using '-' for each new entry, remove this when items are added) +## Changes +- Jupyterhub configurable idle server culling. + - Add optional variables `JUPYTER_IDLE_SERVER_CULL_TIMEOUT`, `JUPYTER_IDLE_KERNEL_CULL_TIMEOUT` and + `JUPYTER_IDLE_KERNEL_CULL_INTERVAL` that allows fined-grained configuration of user-kernel and server-wide + docker image culling when their activity status reached a certain idle timeout threshold. + - Enable idler server culling by default with a timeout of 1 day. + - Avoids the need for custom `JUPYTERHUB_CONFIG_OVERRIDE` specifically for idle server culling. + If similar argument parameters should be defined using an older `JUPYTERHUB_CONFIG_OVERRIDE` definition, + the new configuration strategy can be skipped by setting `JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=0`. [1.34.0](https://github.com/bird-house/birdhouse-deploy/tree/1.34.0) (2023-10-10) ------------------------------------------------------------------------------------------------------------------ diff --git a/birdhouse/config/jupyterhub/default.env b/birdhouse/config/jupyterhub/default.env index e96c37efd..169593bbf 100644 --- a/birdhouse/config/jupyterhub/default.env +++ b/birdhouse/config/jupyterhub/default.env @@ -47,10 +47,10 @@ export JUPYTERHUB_README="" # If left undefined or zero, the feature will not be enabled. export JUPYTER_IDLE_SERVER_CULL_TIMEOUT=0 # Timeout (in seconds) after which individual user kernels/terminals are considered idle and ready to be culled. -export JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=0 +export JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=86400 # Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. # Enabled only if 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT' is provided and greater than zero. -# If this value is not provided or is set higher than 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT', +# If this value is not provided, equal to zero, or is set higher than 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT', # it will be automatically reduced by half of the timeout value to ensure that it can be effective. export JUPYTER_IDLE_KERNEL_CULL_INTERVAL=0 diff --git a/birdhouse/config/jupyterhub/jupyterhub_config.py.template b/birdhouse/config/jupyterhub/jupyterhub_config.py.template index be110f066..1d8da46b1 100644 --- a/birdhouse/config/jupyterhub/jupyterhub_config.py.template +++ b/birdhouse/config/jupyterhub/jupyterhub_config.py.template @@ -201,7 +201,7 @@ jupyter_idle_kernel_cull_timeout = int("${JUPYTER_IDLE_KERNEL_CULL_TIMEOUT}" or # Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. jupyter_idle_kernel_cull_interval = int("${JUPYTER_IDLE_KERNEL_CULL_INTERVAL}" or 0) if jupyter_idle_kernel_cull_timeout: - if jupyter_idle_kernel_cull_interval > jupyter_idle_kernel_cull_timeout: + if not jupyter_idle_kernel_cull_interval or jupyter_idle_kernel_cull_interval > jupyter_idle_kernel_cull_timeout: jupyter_idle_kernel_cull_interval = jupyter_idle_kernel_cull_timeout / 2 c.Spawner.args.extend([ '--MappingKernelManager.cull_idle_timeout={}'.format(jupyter_idle_kernel_cull_timeout), From dbd69c9b7f9fa5906c4d7160de1ff30c8489fecd Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Fri, 13 Oct 2023 12:36:21 -0400 Subject: [PATCH 3/5] adjust env.local.example with new configs + apply default jupyter server culling timeout --- birdhouse/config/jupyterhub/default.env | 9 ++-- .../jupyterhub/jupyterhub_config.py.template | 9 ++-- birdhouse/env.local.example | 51 ++++++++++--------- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/birdhouse/config/jupyterhub/default.env b/birdhouse/config/jupyterhub/default.env index 169593bbf..3d341bc9b 100644 --- a/birdhouse/config/jupyterhub/default.env +++ b/birdhouse/config/jupyterhub/default.env @@ -43,10 +43,11 @@ export JUPYTER_LOGIN_BANNER_BOTTOM_SECTION="" # server for the change to take effect. export JUPYTERHUB_README="" -# Timeout (in seconds) to shut down the whole server when no kernels or terminals are running and there is no activity. -# If left undefined or zero, the feature will not be enabled. -export JUPYTER_IDLE_SERVER_CULL_TIMEOUT=0 -# Timeout (in seconds) after which individual user kernels/terminals are considered idle and ready to be culled. +# Timeout (in seconds, default: 3 days) to shut down the user server when no kernels or terminals +# are running and there is no activity. If undefined or set to zero, the feature will not be enabled. +export JUPYTER_IDLE_SERVER_CULL_TIMEOUT=259200 +# Timeout (in seconds, default: 1 day) after which individual +# user kernels/terminals are considered idle and ready to be culled. export JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=86400 # Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. # Enabled only if 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT' is provided and greater than zero. diff --git a/birdhouse/config/jupyterhub/jupyterhub_config.py.template b/birdhouse/config/jupyterhub/jupyterhub_config.py.template index 1d8da46b1..1122f1fd8 100644 --- a/birdhouse/config/jupyterhub/jupyterhub_config.py.template +++ b/birdhouse/config/jupyterhub/jupyterhub_config.py.template @@ -191,14 +191,15 @@ c.Authenticator.blocked_users = blocked_users # v1.2+ # ------------------------------------------------------------------------------ # Shutdown idle user server based on configured timeouts. # ------------------------------------------------------------------------------ -# Timeout (in seconds) to shut down the whole server when no kernels or terminals are running and there is no activity. -# If left undefined or zero, the feature will not be enabled. +# Timeout (in seconds, default: 3 days) to shut down the user server when no kernels or terminals +# are running and there is no activity. If undefined or set to zero, the feature will not be enabled. jupyter_idle_server_cull_timeout = int("${JUPYTER_IDLE_SERVER_CULL_TIMEOUT}" or 0) if jupyter_idle_server_cull_timeout: c.Spawner.args.append('--NotebookApp.shutdown_no_activity_timeout={}'.format(jupyter_idle_server_cull_timeout)) -# Timeout (in seconds) after which individual user kernels/terminals are considered idle and ready to be culled. +# Timeout (in seconds, default: 1 day) after which individual +# user kernels/terminals are considered idle and ready to be culled. jupyter_idle_kernel_cull_timeout = int("${JUPYTER_IDLE_KERNEL_CULL_TIMEOUT}" or 0) -# Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. +# Interval (in seconds, default: half of timeout) on which to check for idle kernels exceeding the cull timeout value. jupyter_idle_kernel_cull_interval = int("${JUPYTER_IDLE_KERNEL_CULL_INTERVAL}" or 0) if jupyter_idle_kernel_cull_timeout: if not jupyter_idle_kernel_cull_interval or jupyter_idle_kernel_cull_interval > jupyter_idle_kernel_cull_timeout: diff --git a/birdhouse/env.local.example b/birdhouse/env.local.example index df68cb4b7..00cbf4f72 100644 --- a/birdhouse/env.local.example +++ b/birdhouse/env.local.example @@ -267,17 +267,18 @@ export GEOSERVER_ADMIN_PASSWORD=geoserverpass # allow jupyterhub user selection of which notebook image to run # see https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html #export ENABLE_JUPYTERHUB_MULTI_NOTEBOOKS=" -#c.DockerSpawner.image_whitelist = {os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[0]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[0], -# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[1]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[1], -# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[2]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[2], -# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[3]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[3], -# 'jupyter/scipy-notebook': 'jupyter/scipy-notebook', -# 'jupyter/r-notebook': 'jupyter/r-notebook', -# 'jupyter/tensorflow-notebook': 'jupyter/tensorflow-notebook', -# 'jupyter/datascience-notebook': 'jupyter/datascience-notebook', -# 'jupyter/pyspark-notebook': 'jupyter/pyspark-notebook', -# 'jupyter/all-spark-notebook': 'jupyter/all-spark-notebook', -# } +#c.DockerSpawner.image_whitelist = { +# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[0]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[0], +# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[1]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[1], +# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[2]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[2], +# os.environ['JUPYTERHUB_IMAGE_SELECTION_NAMES'].split()[3]: os.environ['DOCKER_NOTEBOOK_IMAGES'].split()[3], +# 'jupyter/scipy-notebook': 'jupyter/scipy-notebook', +# 'jupyter/r-notebook': 'jupyter/r-notebook', +# 'jupyter/tensorflow-notebook': 'jupyter/tensorflow-notebook', +# 'jupyter/datascience-notebook': 'jupyter/datascience-notebook', +# 'jupyter/pyspark-notebook': 'jupyter/pyspark-notebook', +# 'jupyter/all-spark-notebook': 'jupyter/all-spark-notebook', +#} #" # Load jobs to automatically deploy the custom notebooks from the specific images @@ -311,7 +312,8 @@ export GEOSERVER_ADMIN_PASSWORD=geoserverpass # Path to the file containing the clientID for the google drive extension for jupyterlab # This file will be mounted into JupyterLab instances. # It should contain the following data : {"clientId":""} -# To setup a project and find the clientID, check the doc at : https://github.com/jupyterlab/jupyterlab-google-drive/blob/master/docs/setup.md +# To setup a project and find the clientID, check the doc at : +# https://github.com/jupyterlab/jupyterlab-google-drive/blob/master/docs/setup.md #export JUPYTER_GOOGLE_DRIVE_SETTINGS= # URL to terms and conditions for logging into Jupyter. @@ -332,24 +334,23 @@ export GEOSERVER_ADMIN_PASSWORD=geoserverpass # export JUPYTERHUB_README="" #fi +# Timeout (in seconds, default: 3 days) to shut down the user server when no kernels or terminals +# are running and there is no activity. If undefined or set to zero, the feature will not be enabled. +#export JUPYTER_IDLE_SERVER_CULL_TIMEOUT=259200 +# Timeout (in seconds, default: 1 day) after which individual +# user kernels/terminals are considered idle and ready to be culled. +#export JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=86400 +# Interval (in seconds) on which to check for idle kernels exceeding the cull timeout value. +# Enabled only if 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT' is provided and greater than zero. +# If this value is not provided, equal to zero, or is set higher than 'JUPYTER_IDLE_KERNEL_CULL_TIMEOUT', +# it will be automatically reduced by half of the timeout value to ensure that it can be effective. +#export JUPYTER_IDLE_KERNEL_CULL_INTERVAL=0 + # Allow for adding new config or override existing config in # config/jupyterhub/jupyterhub_config.py.template. # #export JUPYTERHUB_CONFIG_OVERRIDE=" # -# Sample below will shutdown idle server after 3 days and idle kernel after 1 day. -# -#c.Spawner.args.extend([ -## Shut down the server after N seconds with no kernels or terminals running and no activity. -#'--NotebookApp.shutdown_no_activity_timeout={}'.format(3*24*60*60) , # 3 days -## Timeout (in seconds) after which a kernel is considered idle and ready to be culled. -#'--MappingKernelManager.cull_idle_timeout={}'.format(24*60*60), # 1 day -## Culling kernels which have one or more connections for idle but open notebooks. -## Otherwise, browser have to be closed for culling to work. -#'--MappingKernelManager.cull_connected=True', -#]) -# -# # Sample below will allow for sharing notebooks between Jupyter users. # Note all shares are public. # From 87b1e6dfe8f1d6fee9b811058896afbcf0a7d26d Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Fri, 13 Oct 2023 12:37:59 -0400 Subject: [PATCH 4/5] update changes --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 72ccfb081..d76268f63 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,7 +20,7 @@ - Add optional variables `JUPYTER_IDLE_SERVER_CULL_TIMEOUT`, `JUPYTER_IDLE_KERNEL_CULL_TIMEOUT` and `JUPYTER_IDLE_KERNEL_CULL_INTERVAL` that allows fined-grained configuration of user-kernel and server-wide docker image culling when their activity status reached a certain idle timeout threshold. - - Enable idler server culling by default with a timeout of 1 day. + - Enable idle kernel culling by default with a timeout of 1 day, and user server culling with timeout of 3 days. - Avoids the need for custom `JUPYTERHUB_CONFIG_OVERRIDE` specifically for idle server culling. If similar argument parameters should be defined using an older `JUPYTERHUB_CONFIG_OVERRIDE` definition, the new configuration strategy can be skipped by setting `JUPYTER_IDLE_KERNEL_CULL_TIMEOUT=0`. From 01b575c359e05678d9195ba406303b340f8b5371 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 16 Oct 2023 10:37:32 -0400 Subject: [PATCH 5/5] =?UTF-8?q?Bump=20version:=201.34.0=20=E2=86=92=201.35?= =?UTF-8?q?.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 6 +++--- CHANGES.md | 5 +++++ Makefile | 2 +- README.rst | 8 ++++---- RELEASE.txt | 2 +- .../config/canarie-api/docker_configuration.py.template | 8 ++++---- docs/source/conf.py | 4 ++-- 7 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 6dea6bc63..acdefeb57 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.34.0 +current_version = 1.35.0 commit = True tag = False tag_name = {new_version} @@ -30,11 +30,11 @@ search = {current_version} replace = {new_version} [bumpversion:file:RELEASE.txt] -search = {current_version} 2023-10-10T15:33:10Z +search = {current_version} 2023-10-16T14:37:32Z replace = {new_version} {utcnow:%Y-%m-%dT%H:%M:%SZ} [bumpversion:part:releaseTime] -values = 2023-10-10T15:33:10Z +values = 2023-10-16T14:37:32Z [bumpversion:file(version):birdhouse/config/canarie-api/docker_configuration.py.template] search = 'version': '{current_version}' diff --git a/CHANGES.md b/CHANGES.md index d76268f63..23aefef99 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,6 +15,11 @@ [Unreleased](https://github.com/bird-house/birdhouse-deploy/tree/master) (latest) ------------------------------------------------------------------------------------------------------------------ +[//]: # (list changes here, using '-' for each new entry, remove this when items are added) + +[1.35.0](https://github.com/bird-house/birdhouse-deploy/tree/1.35.0) (2023-10-16) +------------------------------------------------------------------------------------------------------------------ + ## Changes - Jupyterhub configurable idle server culling. - Add optional variables `JUPYTER_IDLE_SERVER_CULL_TIMEOUT`, `JUPYTER_IDLE_KERNEL_CULL_TIMEOUT` and diff --git a/Makefile b/Makefile index 0ee1d83ba..1e967c9e0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Generic variables override SHELL := bash override APP_NAME := birdhouse-deploy -override APP_VERSION := 1.34.0 +override APP_VERSION := 1.35.0 # utility to remove comments after value of an option variable override clean_opt = $(shell echo "$(1)" | $(_SED) -r -e "s/[ '$'\t'']+$$//g") diff --git a/README.rst b/README.rst index 505717d56..2a566e3d8 100644 --- a/README.rst +++ b/README.rst @@ -14,13 +14,13 @@ for a full-fledged production platform. * - releases - | |latest-version| |commits-since| -.. |commits-since| image:: https://img.shields.io/github/commits-since/bird-house/birdhouse-deploy/1.34.0.svg +.. |commits-since| image:: https://img.shields.io/github/commits-since/bird-house/birdhouse-deploy/1.35.0.svg :alt: Commits since latest release - :target: https://github.com/bird-house/birdhouse-deploy/compare/1.34.0...master + :target: https://github.com/bird-house/birdhouse-deploy/compare/1.35.0...master -.. |latest-version| image:: https://img.shields.io/badge/tag-1.34.0-blue.svg?style=flat +.. |latest-version| image:: https://img.shields.io/badge/tag-1.35.0-blue.svg?style=flat :alt: Latest Tag - :target: https://github.com/bird-house/birdhouse-deploy/tree/1.34.0 + :target: https://github.com/bird-house/birdhouse-deploy/tree/1.35.0 .. |readthedocs| image:: https://readthedocs.org/projects/birdhouse-deploy/badge/?version=latest :alt: ReadTheDocs Build Status (latest version) diff --git a/RELEASE.txt b/RELEASE.txt index 163187255..e7691422e 100644 --- a/RELEASE.txt +++ b/RELEASE.txt @@ -1 +1 @@ -1.34.0 2023-10-10T15:33:10Z +1.35.0 2023-10-16T14:37:32Z diff --git a/birdhouse/config/canarie-api/docker_configuration.py.template b/birdhouse/config/canarie-api/docker_configuration.py.template index db2964c77..20696ea91 100644 --- a/birdhouse/config/canarie-api/docker_configuration.py.template +++ b/birdhouse/config/canarie-api/docker_configuration.py.template @@ -109,8 +109,8 @@ SERVICES = { # NOTE: # Below version and release time auto-managed by 'make VERSION=x.y.z bump'. # Do NOT modify it manually. See 'Tagging policy' in 'birdhouse/README.rst'. - 'version': '1.34.0', - 'releaseTime': '2023-10-10T15:33:10Z', + 'version': '1.35.0', + 'releaseTime': '2023-10-16T14:37:32Z', 'institution': 'Ouranos', 'researchSubject': 'Climatology', 'supportEmail': '${SUPPORT_EMAIL}', @@ -142,8 +142,8 @@ PLATFORMS = { # NOTE: # Below version and release time auto-managed by 'make VERSION=x.y.z bump'. # Do NOT modify it manually. See 'Tagging policy' in 'birdhouse/README.rst'. - 'version': '1.34.0', - 'releaseTime': '2023-10-10T15:33:10Z', + 'version': '1.35.0', + 'releaseTime': '2023-10-16T14:37:32Z', 'institution': 'Ouranos', 'researchSubject': 'Climatology', 'supportEmail': '${SUPPORT_EMAIL}', diff --git a/docs/source/conf.py b/docs/source/conf.py index a5558c93e..8ba7626e1 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -69,9 +69,9 @@ # built documents. # # The short X.Y version. -version = '1.34.0' +version = '1.35.0' # The full version, including alpha/beta/rc tags. -release = '1.34.0' +release = '1.35.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages.