diff --git a/.circleci/config.yml b/.circleci/config.yml index fdfb4315e..1be1fbad4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -263,12 +263,6 @@ jobs: # hubploy deploy --timeout 30m data8xv2 hub ${CIRCLE_BRANCH} # no_output_timeout: 30m - - run: - name: Deploy data102 - command: | - hubploy deploy --timeout 30m data102 hub ${CIRCLE_BRANCH} - no_output_timeout: 30m - - run: name: Deploy data100 command: | @@ -281,6 +275,12 @@ jobs: hubploy deploy --timeout 30m data101 hub ${CIRCLE_BRANCH} no_output_timeout: 30m + - run: + name: Deploy data102 + command: | + hubploy deploy --timeout 30m data102 hub ${CIRCLE_BRANCH} + no_output_timeout: 30m + - run: name: Deploy shiny command: | @@ -487,6 +487,14 @@ workflows: ignore: - staging - prod + - hubploy/build-image: + deployment: data102 + name: data102 image build + filters: + branches: + ignore: + - staging + - prod #- hubploy/build-image: # deployment: stat159 # name: stat159 image build @@ -668,7 +676,6 @@ workflows: deployment: data100 name: data100 image build push: true - # Filters can only be per-job? wtf filters: branches: only: @@ -682,6 +689,14 @@ workflows: branches: only: - staging + - hubploy/build-image: + deployment: data102 + name: data102 image build + push: true + filters: + branches: + only: + - staging #- hubploy/build-image: # deployment: stat159 # name: stat159 image build @@ -791,6 +806,7 @@ workflows: - data8 image build - data100 image build - data101 image build + - data102 image build - astro image build #- stat159 image build - stat20 image build diff --git a/deployments/data102/config/common.yaml b/deployments/data102/config/common.yaml index 2e85c9c6f..9bb82515c 100644 --- a/deployments/data102/config/common.yaml +++ b/deployments/data102/config/common.yaml @@ -50,9 +50,12 @@ jupyterhub: - course::1526710::enrollment_type::ta singleuser: + defaultUrl: "/lab" extraEnv: GH_SCOPED_CREDS_CLIENT_ID: Iv1.f769e27a8207e5c9 GH_SCOPED_CREDS_APP_URL: https://github.com/apps/data102-datahub-access + # Unset NotebookApp from hub/values. Necessary for recent lab versions. + JUPYTERHUB_SINGLEUSER_APP: "jupyter_server.serverapp.ServerApp" nodeSelector: hub.jupyter.org/pool-name: data102-pool storage: diff --git a/deployments/data102/hubploy.yaml b/deployments/data102/hubploy.yaml index 1c172cf58..795a441aa 100644 --- a/deployments/data102/hubploy.yaml +++ b/deployments/data102/hubploy.yaml @@ -1,7 +1,9 @@ images: images: - - name: us-central1-docker.pkg.dev/ucb-datahub-2018/user-images/primary-user-image - path: ../datahub/images/default + - name: us-central1-docker.pkg.dev/ucb-datahub-2018/user-images/data102-user-image + path: image/ + repo2docker: + base_image: docker.io/library/buildpack-deps:jammy registry: provider: gcloud diff --git a/deployments/data102/image/apt.txt b/deployments/data102/image/apt.txt new file mode 100644 index 000000000..9fe911710 --- /dev/null +++ b/deployments/data102/image/apt.txt @@ -0,0 +1,74 @@ +# Some linux packages for basic terminal work, particularly +# oriented at users new to Unix/cmd line environments. + +# Basic unix tools +man +man-db +manpages-posix +manpages-dev +manpages-posix-dev + +# Download tools +curl +wget + +# A couple of CLI editors that are easier than vim +# micro # currently not working on 18.04 +nano +jed +jed-extra + +# for easily managing multiple repositories with one command (perl-doc +# is needed for its help pages to work) +mr +perl-doc + +# Regular build tools for compiling common stuff +build-essential +gfortran + +# Dependencies for nbconvert +texlive-xetex +texlive-fonts-recommended +texlive-plain-generic +# https://github.com/berkeley-dsep-infra/datahub/issues/3719 +texlive-lang-chinese +lmodern + +# Other useful document-related tools +pandoc +latexdiff + +# Some useful git utilities use basic Ruby +ruby + +# Other niceties for command-line work and life +ack # powerful grep-like tool +pydf # colorized disk usage +tmux +screen +htop +nnn # cmd line file manager +zsh +rsync +tig # console UI for git +multitail + +# For later, these are not available in 18.04 +#browsh # text-based web browser, occasionally handy +#dasel # json/yml/csv/etc data wrangling at the terminal +#fzf # fuzzy file finder + +# GUI text editors +emacs +vim-gtk3 +gedit + +# Git clients and tools +git-gui +gitg +qgit +meld + +# For jupyter-tree-download. Ref: https://github.com/berkeley-dsep-infra/datahub/issues/3979 +zip diff --git a/deployments/data102/image/environment.yml b/deployments/data102/image/environment.yml new file mode 100644 index 000000000..d7283bb90 --- /dev/null +++ b/deployments/data102/image/environment.yml @@ -0,0 +1,43 @@ +name: data102-FA23 + +channels: +- conda-forge + +dependencies: +- python==3.11.0 +- git==2.39.1 +- jupyter-resource-usage==1.0.0 +- jupyterlab==4.0.4 +- jupyterlab-favorites==3.0.0 +- jupyterlab_server==2.23.0 +- jupyterlab_widgets==3.0.8 +- jupyter_server==2.7.0 +- nbgitpuller==1.1.1 +- notebook==7.0.2 +- ipywidgets==8.0.7 +- jinja2==3.1.2 +- markupsafe==2.1.3 +- matplotlib==3.7.1 +- numpy==1.24.2 +- nbformat==5.9.2 +- nbresuse==0.4.0 +- otter-grader==4.2.0 +- pandas==2.0.2 +- pandoc==3.1.3 +# data102, Fall 2023, https://github.com/berkeley-dsep-infra/datahub/issues/5037 +- pymc==5.8.1 +- scikit-learn==1.2.2 +- scipy==1.10.1 +- seaborn==0.12.2 +- statsmodels==0.14.0 +- pip +- pip: + # - -r infra-requirements.txt + - ipywidgets==8.0.7 + # disable until fixed (probably this: https://github.com/jupyterlab/jupyter-collaboration/issues/162) + # - jupyter_collaboration==1.0.1 + - jupyterhub==4.0.2 + - nbconvert==7.6.0 + - gh-scoped-creds==4.1 + - nb2pdf==0.6.2 + - nbpdfexport==0.2.1 diff --git a/deployments/data102/image/infra-requirements.txt b/deployments/data102/image/infra-requirements.txt new file mode 100644 index 000000000..7a274a480 --- /dev/null +++ b/deployments/data102/image/infra-requirements.txt @@ -0,0 +1,32 @@ +# WARNING: Original source at scripts/infra-packages/requirements.txt +# PLEASE DO NOT EDIT ELSEWHERE +# After editing scripts/infra-packages/requirements.txt, please run +# scripts/infra-packages/sync.bash. + +# This file pins versions of notebook related python packages we want +# across all hubs. This makes sure we don't need to upgrade them +# everwhere one by one. + +# FIXME: Freeze this to get exact versions of all dependencies +notebook==6.4.12 +jupyterlab==3.4.5 +retrolab==0.3.21 +nbgitpuller==1.1.0 +jupyter-resource-usage==0.6.1 +# Matches version in images/hub/Dockerfile +jupyterhub==3.1.0 +appmode==0.8.0 +ipywidgets==7.7.2 +otter-grader==4.2.0 +jupyter-tree-download==1.0.1 +git-credential-helpers==0.2 +# Enough people like this, let's load it in. +jupyter-contrib-nbextensions==0.5.1 +jupyter_nbextensions_configurator==0.4.1 +# Measure popularity of different packages in our hubs +# https://discourse.jupyter.org/t/request-for-implementation-instrument-libraries-actively-used-by-users-on-a-jupyterhub/7994?u=yuvipanda +popularity-contest==0.4.1 +# RISE is useful for presentations - see https://github.com/berkeley-dsep-infra/datahub/issues/2527 +RISE==5.7.1 +# syncthing for dropbox-like functionality +jupyter-syncthing-proxy==1.0.3