From 52394333632817e722bef820882e9fabbcd6f5be Mon Sep 17 00:00:00 2001 From: iguchi82 Date: Wed, 3 Apr 2024 15:45:32 +0900 Subject: [PATCH 1/9] =?UTF-8?q?Change=20jupyterhub=20version=203.2.1-20240?= =?UTF-8?q?209=E2=86=923.2.1-20240401?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- helm-chart/binderhub/requirements.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm-chart/binderhub/requirements.yaml b/helm-chart/binderhub/requirements.yaml index fca4de043..848ec4cd5 100644 --- a/helm-chart/binderhub/requirements.yaml +++ b/helm-chart/binderhub/requirements.yaml @@ -1,5 +1,5 @@ dependencies: # https://github.com/jupyterhub/zero-to-jupyterhub-k8s/tags - name: jupyterhub - version: "3.2.1-20240209" + version: "3.2.1-20240401" repository: "https://rcosdp.github.io/CS-jhub-helm-chart/" From b56e4bc7f5f0a0ec916a4a1af7e9659bf8540dca Mon Sep 17 00:00:00 2001 From: iguchi82 Date: Thu, 4 Apr 2024 09:51:20 +0900 Subject: [PATCH 2/9] A workaround solution to address the issue with pycurl 7.45.3 --- helm-chart/images/binderhub/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/helm-chart/images/binderhub/Dockerfile b/helm-chart/images/binderhub/Dockerfile index 7e385c8b4..ead54efe9 100644 --- a/helm-chart/images/binderhub/Dockerfile +++ b/helm-chart/images/binderhub/Dockerfile @@ -27,6 +27,9 @@ WORKDIR /tmp/binderhub RUN python setup.py bdist_wheel RUN pip wheel pycurl --wheel-dir ./dist +# Run the script +RUN mkdir -p /etc/pki/tls/certs/ && ln -s /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt + # The final stage # --------------- @@ -49,6 +52,8 @@ RUN apt-get update \ git build-essential \ && rm -rf /var/lib/apt/lists/* +# Run the script +RUN mkdir -p /etc/pki/tls/certs/ && ln -s /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt # Copy the built wheels from the build-stage. Also copy the image # requirements.txt built from the binderhub package requirements.txt and the From 7f809624b2a7d7b8f92f44e16292e8515ccf94e7 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Thu, 13 Feb 2025 12:42:26 -0800 Subject: [PATCH 3/9] cherry pick 3883aac199cc81912447ce004fd2e38b5640e0b1(change base image 3.11-slim-bullseye to 3.13-slim-bookworm) --- ci/refreeze | 2 +- helm-chart/images/binderhub/Dockerfile | 4 ++-- helm-chart/images/binderhub/requirements.txt | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ci/refreeze b/ci/refreeze index 903646f52..80a140f00 100755 --- a/ci/refreeze +++ b/ci/refreeze @@ -10,5 +10,5 @@ docker run --rm \ --volume="$PWD:/io" \ --workdir=/io \ --user=root \ - python:3.11-bullseye \ + python:3.13-bookworm \ sh -c 'pip install pip-tools==7.* && pip-compile --allow-unsafe --strip-extras --upgrade helm-chart/images/binderhub/requirements.in' diff --git a/helm-chart/images/binderhub/Dockerfile b/helm-chart/images/binderhub/Dockerfile index 8cd90a9cb..9577ad2f2 100644 --- a/helm-chart/images/binderhub/Dockerfile +++ b/helm-chart/images/binderhub/Dockerfile @@ -8,7 +8,7 @@ # # NOTE: If the image version is updated, also update it in ci/refreeze! # -FROM python:3.11-bullseye as build-stage +FROM python:3.13-bookworm as build-stage # Workaround: CS-jupyterhub requires nodejs and npm to be installed. RUN apt-get update \ @@ -50,7 +50,7 @@ RUN --mount=type=cache,target=${PIP_CACHE_DIR} \ # --------------- # This stage is built and published as quay.io/jupyterhub/k8s-binderhub. # -FROM python:3.11-slim-bullseye +FROM python:3.13-slim-bookworm ENV PYTHONUNBUFFERED=1 ENV DEBIAN_FRONTEND=noninteractive diff --git a/helm-chart/images/binderhub/requirements.txt b/helm-chart/images/binderhub/requirements.txt index fe4a8a296..1efb8423f 100644 --- a/helm-chart/images/binderhub/requirements.txt +++ b/helm-chart/images/binderhub/requirements.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.13 # by the following command: # # Use the "Run workflow" button at https://github.com/jupyterhub/binderhub/actions/workflows/watch-dependencies.yaml @@ -14,6 +14,8 @@ anyio==4.11.0 # via httpx arrow==1.4.0 # via isoduration +async-generator==1.10 + # via jupyterhub attrs==25.4.0 # via # jsonschema @@ -38,6 +40,8 @@ charset-normalizer==3.4.4 # via requests cryptography==46.0.3 # via certipy +deprecated==1.2.18 + # via opentelemetry-api docker==7.1.0 # via # -r helm-chart/images/binderhub/../../../requirements.txt @@ -305,6 +309,8 @@ webcolors==25.10.0 # via jsonschema websocket-client==1.9.0 # via kubernetes +wrapt==1.17.2 + # via deprecated zipp==3.23.0 # via importlib-metadata From 6fc852dd15dd17b1716bd282eafa50118d2beb9e Mon Sep 17 00:00:00 2001 From: ktanaka85 Date: Tue, 25 Nov 2025 10:40:24 +0900 Subject: [PATCH 4/9] #56168 openssl upgrade to openssl-3.0.18 --- helm-chart/images/binderhub/Dockerfile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/helm-chart/images/binderhub/Dockerfile b/helm-chart/images/binderhub/Dockerfile index 9577ad2f2..3535674d0 100644 --- a/helm-chart/images/binderhub/Dockerfile +++ b/helm-chart/images/binderhub/Dockerfile @@ -68,6 +68,22 @@ RUN apt-get update \ # or "kubectl delete pod" is run. By doing that the pod can # terminate very quickly. curl gpg \ + # OpenSSL コンパイル用 + build-essential \ + wget \ + zlib1g-dev \ + ca-certificates \ + && wget -O /tmp/ssl-source.tar.gz https://www.openssl.org/source/openssl-3.0.18.tar.gz \ + && tar -xzf /tmp/ssl-source.tar.gz -C /tmp \ + && (cd /tmp/openssl-3.0.18 && ./Configure --prefix=/usr/local --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic) \ + && (cd /tmp/openssl-3.0.18 && make -j$(nproc)) \ + && (cd /tmp/openssl-3.0.18 && make install_sw) \ + && echo "/usr/local/lib" > /etc/ld.so.conf.d/openssl-3.0.18.conf \ + && ldconfig \ + && rm -f /tmp/ssl-source.tar.gz \ + && rm -rf /tmp/openssl-3.0.18 \ + && apt-get remove -y build-essential wget zlib1g-dev \ + && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/* # Workaround: CS-jupyterhub requires nodejs and npm to be installed. From 4a3483d312b08e674c9c86f7fa0d81313fc764a3 Mon Sep 17 00:00:00 2001 From: ktanaka85 Date: Tue, 25 Nov 2025 10:43:34 +0900 Subject: [PATCH 5/9] add Contact Information Link --- binderhub/static/js/components/LinkGenerator.jsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/binderhub/static/js/components/LinkGenerator.jsx b/binderhub/static/js/components/LinkGenerator.jsx index ae81d8bdc..7492ee08d 100644 --- a/binderhub/static/js/components/LinkGenerator.jsx +++ b/binderhub/static/js/components/LinkGenerator.jsx @@ -342,6 +342,10 @@ export function LinkGenerator({ + ); } From 7680135f37dc2d4b24bbdaa877585bccd881a6dc Mon Sep 17 00:00:00 2001 From: ktanaka85 Date: Tue, 25 Nov 2025 10:44:22 +0900 Subject: [PATCH 6/9] update jupyter image --- helm-chart/binderhub/Chart.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helm-chart/binderhub/Chart.yaml b/helm-chart/binderhub/Chart.yaml index d46cb73dc..67e19a292 100644 --- a/helm-chart/binderhub/Chart.yaml +++ b/helm-chart/binderhub/Chart.yaml @@ -1,7 +1,7 @@ # Chart.yaml v2 reference: https://helm.sh/docs/topics/charts/#the-chartyaml-file apiVersion: v2 name: binderhub -version: 0.2.0-jhub-1.1.3.git.2398.h2365dd6 +version: 0.2.5-20251121.3 dependencies: # Source code: https://github.com/jupyterhub/zero-to-jupyterhub-k8s # Latest version: https://github.com/jupyterhub/zero-to-jupyterhub-k8s/tags @@ -12,7 +12,7 @@ dependencies: # and run "./dependencies freeze --upgrade". # - name: jupyterhub - version: "4.1.0-0.dev.git.6950.h5e4c7698" + version: "4.1.0-20251118.2" repository: "https://rcosdp.github.io/CS-jhub-helm-chart/" description: |- BinderHub is like a JupyterHub that automatically builds environments for the From 35ac7db13aec7da3b37cb58c8982d81263aad0a8 Mon Sep 17 00:00:00 2001 From: TANAKA Date: Tue, 25 Nov 2025 13:08:26 +0900 Subject: [PATCH 7/9] =?UTF-8?q?change=20old=20key=20in=20test=20yaml=20fil?= =?UTF-8?q?e(alloworigin=20=E2=86=92=20cors=5Fallow=5Forigin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binderhub-chart-config-old.yaml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/testing/k8s-binder-k8s-hub/binderhub-chart-config-old.yaml b/testing/k8s-binder-k8s-hub/binderhub-chart-config-old.yaml index 43e204a89..58f7b1287 100644 --- a/testing/k8s-binder-k8s-hub/binderhub-chart-config-old.yaml +++ b/testing/k8s-binder-k8s-hub/binderhub-chart-config-old.yaml @@ -1,8 +1,5 @@ # This config is used when both BinderHub and the JupyterHub it uses are # deployed to a kubernetes cluster. -cors: - allowOrigin: '*' - service: type: NodePort nodePort: 30901 @@ -15,6 +12,7 @@ config: hub_url_local: http://proxy-public use_registry: false log_level: 10 + cors_allow_origin: "*" # NOTE: This is a mirror of the jupyterhub section in # jupyterhub-chart-config.yaml in testing/local-binder-k8s-hub, keep these @@ -23,10 +21,6 @@ jupyterhub: debug: enabled: true - custom: - cors: - allowOrigin: "*" - hub: # cookieSecret must be a hex encoded even length string cookieSecret: "cccccccccc" @@ -35,6 +29,9 @@ jupyterhub: services: binder: apiToken: "dummy-binder-secret-token" + config: + BinderSpawner: + cors_allow_origin: "*" proxy: secretToken: "dummy-proxy-secret-token" From 5dd05a66df28123e989daddd79c09caf63450126 Mon Sep 17 00:00:00 2001 From: Min RK Date: Wed, 14 Jan 2026 17:07:35 -0800 Subject: [PATCH 8/9] figshare url structure changed --- binderhub/repoproviders.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/binderhub/repoproviders.py b/binderhub/repoproviders.py index 979b0beb8..ebd937bd2 100644 --- a/binderhub/repoproviders.py +++ b/binderhub/repoproviders.py @@ -357,7 +357,7 @@ class FigshareProvider(RepoProvider): "ref": {"enabled": False}, } - url_regex = re.compile(r"(.*)/articles/([^/]+)/([^/]+)/(\d+)(/)?(\d+)?") + url_regex = re.compile(r"(.*)/articles/([^/]+)/(\d+)(/)?(\d+)?") async def get_resolved_ref(self): client = AsyncHTTPClient() @@ -365,8 +365,8 @@ async def get_resolved_ref(self): r = await client.fetch(req) match = self.url_regex.match(r.effective_url) - article_id = match.groups()[3] - article_version = match.groups()[5] + article_id = match.groups()[2] + article_version = match.groups()[4] if not article_version: article_version = "1" self.record_id = f"{article_id}.v{article_version}" From 145e4496ef34e04d761093d19a83cabc03adecf3 Mon Sep 17 00:00:00 2001 From: ktanaka85 Date: Fri, 30 Jan 2026 17:10:36 +0900 Subject: [PATCH 9/9] =?UTF-8?q?change=20timeout-minutes=20of=20git=20test?= =?UTF-8?q?=2010=20=E2=86=92=2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 21dd6e2da..22b1a9d75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: # jobs or have "template" jobs, so we use `if` conditions on steps tests: runs-on: ubuntu-22.04 - timeout-minutes: 10 + timeout-minutes: 20 permissions: contents: read