From c8384f14b42e3ff215a68be1921b2f6b1fa4204e Mon Sep 17 00:00:00 2001 From: Greg Merritt Date: Tue, 30 Jul 2024 12:56:51 -0700 Subject: [PATCH] Custom image, BUT I'm having personal repo2docker issues in general --- .circleci/config.yml | 23 +++++ deployments/ugr01/hubploy.yaml | 6 +- deployments/ugr01/image/apt.txt | 97 +++++++++++++++++++ deployments/ugr01/image/environment.yml | 63 ++++++++++++ .../ugr01/image/infra-requirements.txt | 29 ++++++ deployments/ugr01/image/postBuild | 5 + deployments/ugr01/image/start | 5 + 7 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 deployments/ugr01/image/apt.txt create mode 100644 deployments/ugr01/image/environment.yml create mode 100644 deployments/ugr01/image/infra-requirements.txt create mode 100644 deployments/ugr01/image/postBuild create mode 100644 deployments/ugr01/image/start diff --git a/.circleci/config.yml b/.circleci/config.yml index 399a528bc..5f8d53e07 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -325,6 +325,12 @@ jobs: hubploy deploy --timeout 30m stat20 hub ${CIRCLE_BRANCH} no_output_timeout: 30m + - run: + name: Deploy ugr01 + command: | + hubploy deploy --timeout 30m ugr01 hub ${CIRCLE_BRANCH} + no_output_timeout: 30m + - run: name: Deploy workshop command: | @@ -626,6 +632,15 @@ workflows: ignore: - staging - prod + - hubploy/build-image: + deployment: ugr01 + name: ugr01 image build + # Filters can only be per-job? wtf + filters: + branches: + ignore: + - staging + - prod deploy: jobs: @@ -799,6 +814,14 @@ workflows: branches: only: - staging + - hubploy/build-image: + deployment: ugr01 + name: ugr01 image build + push: true + filters: + branches: + only: + - staging # Build images only during the staging deploy. All merges # to prod need to go via staging, so prod should *never* # use images not built for staging. By enforcing this at the diff --git a/deployments/ugr01/hubploy.yaml b/deployments/ugr01/hubploy.yaml index 7fd383042..2ff8daaea 100644 --- a/deployments/ugr01/hubploy.yaml +++ b/deployments/ugr01/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/ugr01-user-image + path: image/ + repo2docker: + base_image: docker.io/library/buildpack-deps:jammy registry: provider: gcloud gcloud: diff --git a/deployments/ugr01/image/apt.txt b/deployments/ugr01/image/apt.txt new file mode 100644 index 000000000..10e53b036 --- /dev/null +++ b/deployments/ugr01/image/apt.txt @@ -0,0 +1,97 @@ +# Some linux packages for basic terminal work, particularly +# oriented at users new to Unix/cmd line environments. + +# installing less as more just isn't enough +less + +# Basic unix tools +man +man-db +manpages-posix +manpages-dev +manpages-posix-dev + +# Download tools +curl +wget + +# Core text editors on a *nix box: vim +vim + +# A couple of CLI editors that are easier than vim +# micro # currently not working on 18.04 +nano +jed +jed-extra + +# powerful terminal-based file manager, better than the one in JLab +mc + +# 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 + +## This section adds tools for desktop environment usage +dbus-x11 +xorg +xubuntu-icon-theme +xfce4 +xfce4-goodies +xclip +xsel +firefox +chromium-browser + +# GUI text editors +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 + +# playwright deps https://jira-secure.berkeley.edu/browse/DH-305 +libnss3 +libnspr4 diff --git a/deployments/ugr01/image/environment.yml b/deployments/ugr01/image/environment.yml new file mode 100644 index 000000000..9ee6fc0fa --- /dev/null +++ b/deployments/ugr01/image/environment.yml @@ -0,0 +1,63 @@ +name: ugr01-FA24 + +channels: +- conda-forge +- pytorch + +dependencies: +- python==3.11.* +- git==2.39.1 +- jupyter-resource-usage==1.0.0 +- jupyterlab==4.0.11 +- jupyterlab-favorites==3.0.0 +- jupyterlab_server==2.23.0 +- jupyterlab_widgets==3.0.8 +- jupyter_server==2.7.0 +- nbgitpuller==1.2.1 +- notebook==7.0.7 +- folium==0.14.0 +- h5netcdf==1.0.2 +- ipywidgets==8.0.7 +- jupysql==0.8.0 +- jupyter-archive==3.4.0 +- matplotlib==3.7.1 +- mdit-py-plugins==0.4.0 +- numpy==1.24.2 +- pandas==2.0.2 +- plotly==5.13.1 +- requests==2.28.2 +- scikit-image==0.19.3 +- scikit-learn==1.2.2 +- scipy==1.10.1 +- seaborn==0.12.2 +- statsmodels==0.14.0 +- tensorflow-cpu==2.12.1 +- sqlalchemy==2.0.16 +- mlxtend==0.23.0 +# Spring 2024 data 100 +- pytorch==2.1.2 +- cpuonly==2.0 +- transformers==4.37.1 +# Spring 2024 table demos +- lxml==5.1.0 +# Spring 2024 Econ 148 Packages +- geopandas==0.14.2 +- geopy==2.4.1 +- lifelines==0.27.8 +- pycountry==22.3.5 +- 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.1.5 + - nbconvert[webpdf] + # - pyppeteer==2.0.0 + - pytest-notebook==0.8.1 + - gh-scoped-creds==4.1 + - git+https://github.com/shaneknapp/python-popularity-contest.git@add-error-handling + - ydata-profiling==4.6.4 + - otter-grader==5.4.0 + - duckdb==0.10.1 + - duckdb_engine==0.11.2 diff --git a/deployments/ugr01/image/infra-requirements.txt b/deployments/ugr01/image/infra-requirements.txt new file mode 100644 index 000000000..b01c9d80d --- /dev/null +++ b/deployments/ugr01/image/infra-requirements.txt @@ -0,0 +1,29 @@ +# 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==7.0.7 +jupyterlab==4.0.11 +nbgitpuller==1.2.1 +jupyter-resource-usage==1.0.1 +# Matches version in images/hub/Dockerfile +jupyterhub==4.1.5 +appmode==0.8.0 +ipywidgets==8.0.7 +jupyter-tree-download==1.0.1 +git-credential-helpers==0.2 +# 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 +git+https://github.com/shaneknapp/python-popularity-contest.git@add-error-handling +# 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 +# jupyter archival tool for easy user downloads +jupyter-archive==3.4.0 diff --git a/deployments/ugr01/image/postBuild b/deployments/ugr01/image/postBuild new file mode 100644 index 000000000..1b6bcc9d1 --- /dev/null +++ b/deployments/ugr01/image/postBuild @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# installing chromium browser to enable webpdf conversion using nbconvert +export PLAYWRIGHT_BROWSERS_PATH=${CONDA_DIR} +playwright install chromium diff --git a/deployments/ugr01/image/start b/deployments/ugr01/image/start new file mode 100644 index 000000000..c3a978b7f --- /dev/null +++ b/deployments/ugr01/image/start @@ -0,0 +1,5 @@ +#!/bin/bash + +# See https://jira-secure.berkeley.edu/browse/DH-305 +export PLAYWRIGHT_BROWSERS_PATH=${CONDA_DIR} +exec "$@"