diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b377d8846..7ad379ad9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,5 @@ # format per https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#about-code-owners -* @colearendt @ianpittwood @bschwedler @costrouc +* @ianpittwood @bschwedler @costrouc /connect/* @rstudio/connect /connect-content-init/* @rstudio/connect diff --git a/Justfile b/Justfile index 7f67569a6..ac062e795 100644 --- a/Justfile +++ b/Justfile @@ -7,7 +7,7 @@ sed_vars := if os() == "macos" { "-i ''" } else { "-i" } BUILDX_PATH := "" -RSC_VERSION := "2024.08.0" +RSC_VERSION := "2024.09.0" RSPM_VERSION := "2024.08.2-9" RSW_VERSION := "2024.09.0+375.pro3" diff --git a/connect-content-init/Dockerfile.ubuntu2204 b/connect-content-init/Dockerfile.ubuntu2204 index 9a260dba5..428b6d4c2 100644 --- a/connect-content-init/Dockerfile.ubuntu2204 +++ b/connect-content-init/Dockerfile.ubuntu2204 @@ -9,7 +9,7 @@ RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates curl && \ rm -rf /var/lib/apt/lists/* -ARG RSC_VERSION=2024.08.0 +ARG RSC_VERSION=2024.09.0 SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN mkdir -p /rsc-staging && \ RSC_VERSION_URL=$(echo -n "${RSC_VERSION}" | sed 's/+/%2B/g') && \ diff --git a/connect-content-init/README.md b/connect-content-init/README.md index 1fce505f0..f5b153781 100644 --- a/connect-content-init/README.md +++ b/connect-content-init/README.md @@ -9,7 +9,7 @@ # Supported tags and respective Dockerfile links -* [`jammy`, `ubuntu2204`, `jammy-2024.08.0`, `ubuntu2204-2024.08.0`](https://github.com/rstudio/rstudio-docker-products/blob/main/connect/Dockerfile.2204) +* [`jammy`, `ubuntu2204`, `jammy-2024.09.0`, `ubuntu2204-2024.09.0`](https://github.com/rstudio/rstudio-docker-products/blob/main/connect/Dockerfile.2204) # RStudio Connect Content Init Container @@ -31,7 +31,7 @@ The version of the release package to use can be overridden with the `RSC_VERSION` build arg. ```console -just build ubuntu2204 2024.08.0 +just build ubuntu2204 2024.09.0 ``` ## Testing @@ -56,7 +56,7 @@ just test You can see the different layers that make up the image: ```console -docker history rstudio/rstudio-connect-content-init-preview:2024.08.0-dev-326 +docker history rstudio/rstudio-connect-content-init-preview:2024.09.0-dev-326 ``` NOTE: almost all the image size is pandoc. diff --git a/connect/.env b/connect/.env index 142c04b89..d941ae40d 100644 --- a/connect/.env +++ b/connect/.env @@ -1,4 +1,4 @@ -RSC_VERSION=2024.08.0 +RSC_VERSION=2024.09.0 R_VERSION=4.2.3 R_VERSION_ALT=4.1.3 PYTHON_VERSION=3.9.17 diff --git a/connect/Dockerfile.ubuntu2204 b/connect/Dockerfile.ubuntu2204 index 23a9c4e3c..40f573f58 100644 --- a/connect/Dockerfile.ubuntu2204 +++ b/connect/Dockerfile.ubuntu2204 @@ -7,7 +7,7 @@ ARG R_VERSION=4.2.3 ARG R_VERSION_ALT=4.1.3 ARG PYTHON_VERSION=3.9.17 ARG PYTHON_VERSION_ALT=3.8.17 -ARG RSC_VERSION=2024.08.0 +ARG RSC_VERSION=2024.09.0 ARG QUARTO_VERSION=1.4.557 ARG SCRIPTS_DIR=/opt/positscripts diff --git a/connect/README.md b/connect/README.md index 488e72d30..252f015f5 100644 --- a/connect/README.md +++ b/connect/README.md @@ -7,7 +7,7 @@ # Supported tags and respective Dockerfile links -* [`jammy`, `ubuntu2204`, `jammy-2024.08.0`, `ubuntu2204-2024.08.0`](https://github.com/rstudio/rstudio-docker-products/blob/main/connect/Dockerfile.2204) +* [`jammy`, `ubuntu2204`, `jammy-2024.09.0`, `ubuntu2204-2024.09.0`](https://github.com/rstudio/rstudio-docker-products/blob/main/connect/Dockerfile.2204) # What is Posit Connect? diff --git a/docker-bake.hcl b/docker-bake.hcl index 5db138635..6e5e9bc56 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -1,6 +1,6 @@ ### Variable definitions ### variable CONNECT_VERSION { - default = "2024.08.0" + default = "2024.09.0" } variable PACKAGE_MANAGER_VERSION { diff --git a/package-manager/Dockerfile.ubuntu2204 b/package-manager/Dockerfile.ubuntu2204 index 771c5a751..bc8a37301 100644 --- a/package-manager/Dockerfile.ubuntu2204 +++ b/package-manager/Dockerfile.ubuntu2204 @@ -4,14 +4,19 @@ ARG PYTHON_VERSION=3.9.17 ARG PYTHON_VERSION_ALT=3.8.17 # Locale configuration --------------------------------------------------------# -ENV STARTUP_DEBUG_MODE 0 +ENV STARTUP_DEBUG_MODE=0 -ENV PATH /opt/rstudio-pm/bin:$PATH +ENV PATH=/opt/rstudio-pm/bin:$PATH # Required Python packages ----------------------------------------------------# RUN /opt/python/${PYTHON_VERSION}/bin/python3 -m pip install --no-cache-dir build virtualenv RUN /opt/python/${PYTHON_VERSION_ALT}/bin/python3 -m pip install --no-cache-dir build virtualenv +# Install bash auto completion ------------------------------------------------# +RUN apt-get update -qq && apt-get install -y --no-install-recommends \ + bash-completion && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* + # Download RStudio Package Manager ---------------------------------------------# ARG RSPM_VERSION=2024.08.2-9 ARG RSPM_DOWNLOAD_URL=https://cdn.rstudio.com/package-manager/deb/amd64 @@ -35,12 +40,11 @@ RUN mkdir -p /var/run/rstudio-pm \ USER rstudio-pm COPY rstudio-pm.gcfg /etc/rstudio-pm/rstudio-pm.gcfg -RUN echo "source <(rspm completion bash)" >> ~/.bashrc \ # Set up licensing to work in userspace mode. This will not prevent activating a # license as root, but it is required to activate one as the non-root user at # runtime. It's possible for this to fail and the trial will be considered over, # in which case we can ignore it anyway. - && license-manager initialize --userspace || true +RUN license-manager initialize --userspace || true ENTRYPOINT ["tini", "--"] CMD ["/usr/local/bin/startup.sh"] diff --git a/r-session-complete/Dockerfile.ubuntu2204 b/r-session-complete/Dockerfile.ubuntu2204 index 83e4369d4..46784c189 100644 --- a/r-session-complete/Dockerfile.ubuntu2204 +++ b/r-session-complete/Dockerfile.ubuntu2204 @@ -43,21 +43,18 @@ RUN ln -s /lib/rstudio-server/bin/quarto/bin/quarto /usr/local/bin/quarto ### Install TinyTeX using Quarto ### RUN $SCRIPTS_DIR/install_quarto.sh --install-tinytex --add-path-tinytex -RUN /opt/python/"${PYTHON_VERSION}"/bin/pip install \ - jupyter \ - jupyterlab=="${JUPYTERLAB_VERSION}" \ - rsconnect_jupyter \ - rsconnect_python \ - rsp_jupyter \ - workbench_jupyterlab \ - && ln -s /opt/python/"${PYTHON_VERSION}"/bin/jupyter /usr/local/bin/jupyter \ - && /opt/python/"${PYTHON_VERSION}"/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter \ - && /opt/python/"${PYTHON_VERSION}"/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter \ - && /opt/python/"${PYTHON_VERSION}"/bin/jupyter-nbextension install --sys-prefix --py rsconnect_jupyter \ - && /opt/python/"${PYTHON_VERSION}"/bin/jupyter-nbextension enable --sys-prefix --py rsconnect_jupyter \ - && /opt/python/"${PYTHON_VERSION}"/bin/jupyter-serverextension enable --sys-prefix --py rsconnect_jupyter - -ENV PATH="/opt/python/${PYTHON_VERSION}/bin:${PATH}" +RUN /opt/python/"${PYTHON_VERSION}"/bin/python -m venv /opt/python/jupyter \ + && /opt/python/jupyter/bin/python -m pip install \ + jupyterlab~=4.2.4 \ + notebook \ + pwb_jupyterlab~=1.0 \ + && ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter \ + && /opt/python/jupyter/bin/python -m pip install ipykernel \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION} --display-name "Python ${PYTHON_VERSION}" \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION_ALT} --display-name "Python ${PYTHON_VERSION_ALT}" \ + && /opt/python/jupyter/bin/python -m pip cache purge + +ENV PATH="/opt/python/jupyter/bin:${PATH}" COPY vscode.extensions.conf /etc/rstudio/vscode.extensions.conf diff --git a/r-session-complete/test/goss.yaml b/r-session-complete/test/goss.yaml index c5ea93a40..030ff1804 100644 --- a/r-session-complete/test/goss.yaml +++ b/r-session-complete/test/goss.yaml @@ -23,7 +23,7 @@ file: filetype: symlink command: - "echo '{ \"cells\": [], \"metadata\": {}, \"nbformat\": 4, \"nbformat_minor\": 2}' | /opt/python/{{.Env.PYTHON_VERSION}}/bin/jupyter nbconvert --to notebook --stdin --stdout": + "echo '{ \"cells\": [], \"metadata\": {}, \"nbformat\": 4, \"nbformat_minor\": 2}' | /opt/python/jupyter/bin/jupyter nbconvert --to notebook --stdin --stdout": title: jupyter_works timeout: 60000 exit-status: 0 diff --git a/workbench-for-google-cloud-workstations/Dockerfile.ubuntu2204 b/workbench-for-google-cloud-workstations/Dockerfile.ubuntu2204 index 9e8186f29..e0c638b92 100644 --- a/workbench-for-google-cloud-workstations/Dockerfile.ubuntu2204 +++ b/workbench-for-google-cloud-workstations/Dockerfile.ubuntu2204 @@ -118,23 +118,15 @@ RUN mkdir -p /opt/rstudio-license/ \ ### Install Jupyter and extensions ### RUN /opt/python/"${PYTHON_VERSION_JUPYTER}"/bin/python -m venv /opt/python/jupyter \ - && /opt/python/jupyter/bin/pip install \ - jupyter \ - jupyterlab=="${JUPYTERLAB_VERSION}" \ - rsconnect_jupyter \ - rsconnect_python \ - rsp_jupyter \ - workbench_jupyterlab \ + && /opt/python/jupyter/bin/python -m pip install\ + jupyterlab~=4.2.4 \ + notebook \ + pwb_jupyterlab~=1.0 \ && ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-serverextension enable --sys-prefix --py rsconnect_jupyter \ + && /opt/python/jupyter/bin/python -m pip install ipykernel \ && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION} --display-name "Python ${PYTHON_VERSION}" \ && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION_ALT} --display-name "Python ${PYTHON_VERSION_ALT}" \ - && /opt/python/${PYTHON_VERSION}/bin/python3 -m pip cache purge \ - && /opt/python/${PYTHON_VERSION_ALT}/bin/python3 -m pip cache purge + && /opt/python/jupyter/bin/python3 -m pip cache purge ADD --chmod=755 https://raw.githubusercontent.com/rstudio/wait-for-it/master/wait-for-it.sh /usr/local/bin/wait-for-it.sh diff --git a/workbench-for-google-cloud-workstations/conf/jupyter.conf b/workbench-for-google-cloud-workstations/conf/jupyter.conf index c38488e4a..6e7c73b85 100644 --- a/workbench-for-google-cloud-workstations/conf/jupyter.conf +++ b/workbench-for-google-cloud-workstations/conf/jupyter.conf @@ -1,7 +1,6 @@ -notebooks-enabled=1 labs-enabled=1 -jupyter-exe=/usr/local/bin/jupyter +jupyter-exe=/opt/python/jupyter/bin/jupyter lab-args=--no-browser --allow-root --ip=0.0.0.0 --ServerApp.allow_origin="*" --ServerApp.allow_remote_access=True --LabApp.token="" --debug default-session-cluster=Local diff --git a/workbench-for-microsoft-azure-ml/Dockerfile.ubuntu2204 b/workbench-for-microsoft-azure-ml/Dockerfile.ubuntu2204 index ac1ec2834..abde1303f 100644 --- a/workbench-for-microsoft-azure-ml/Dockerfile.ubuntu2204 +++ b/workbench-for-microsoft-azure-ml/Dockerfile.ubuntu2204 @@ -89,28 +89,14 @@ RUN apt-get update --fix-missing -qq \ ### Install Jupyter and extensions ### RUN /opt/python/"${PYTHON_VERSION_JUPYTER}"/bin/python -m venv /opt/python/jupyter \ && /opt/python/jupyter/bin/pip install \ - jupyter \ - jupyterlab=="${JUPYTERLAB_VERSION}" \ - rsconnect_jupyter \ - rsconnect_python \ - rsp_jupyter \ - workbench_jupyterlab \ - && /opt/python/jupyter/bin/jupyter kernelspec remove python3 -f \ - && /opt/python/jupyter/bin/pip uninstall -y ipykernel \ + jupyterlab~=4.2.4 \ + notebook \ + pwb_jupyterlab~=1.0 \ && ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-serverextension enable --sys-prefix --py rsconnect_jupyter \ - && /opt/python/${PYTHON_VERSION}/bin/pip install \ - ipykernel \ - virtualenv \ - && /opt/python/${PYTHON_VERSION}/bin/python -m ipykernel install --name py${PYTHON_VERSION} --display-name "Python ${PYTHON_VERSION}" \ - && /opt/python/${PYTHON_VERSION_ALT}/bin/pip install \ - ipykernel \ - virtualenv \ - && /opt/python/${PYTHON_VERSION_ALT}/bin/python -m ipykernel install --name py${PYTHON_VERSION_ALT} --display-name "Python ${PYTHON_VERSION_ALT}" + && /opt/python/jupyter/bin/python -m pip install ipykernel \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION} --display-name "Python ${PYTHON_VERSION}" \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION_ALT} --display-name "Python ${PYTHON_VERSION_ALT}" \ + && /opt/python/jupyter/bin/python3 -m pip cache purge ### Install basic data science packages for Python and R ### COPY deps/* / diff --git a/workbench-for-microsoft-azure-ml/conf/jupyter.conf b/workbench-for-microsoft-azure-ml/conf/jupyter.conf index c38488e4a..6e7c73b85 100644 --- a/workbench-for-microsoft-azure-ml/conf/jupyter.conf +++ b/workbench-for-microsoft-azure-ml/conf/jupyter.conf @@ -1,7 +1,6 @@ -notebooks-enabled=1 labs-enabled=1 -jupyter-exe=/usr/local/bin/jupyter +jupyter-exe=/opt/python/jupyter/bin/jupyter lab-args=--no-browser --allow-root --ip=0.0.0.0 --ServerApp.allow_origin="*" --ServerApp.allow_remote_access=True --LabApp.token="" --debug default-session-cluster=Local diff --git a/workbench/Dockerfile.ubuntu2204 b/workbench/Dockerfile.ubuntu2204 index f76f011fd..8a9c447b9 100644 --- a/workbench/Dockerfile.ubuntu2204 +++ b/workbench/Dockerfile.ubuntu2204 @@ -80,19 +80,15 @@ COPY startup/* /startup/base/ COPY supervisord.conf /etc/supervisor/supervisord.conf RUN /opt/python/"${PYTHON_VERSION_JUPYTER}"/bin/python -m venv /opt/python/jupyter \ - && /opt/python/jupyter/bin/pip install \ - jupyter \ - jupyterlab=="${JUPYTERLAB_VERSION}" \ - rsconnect_jupyter \ - rsconnect_python \ - rsp_jupyter \ - workbench_jupyterlab \ + && /opt/python/jupyter/bin/python -m pip install \ + jupyterlab~=4.2.4 \ + notebook \ + pwb_jupyterlab~=1.0 \ && ln -s /opt/python/jupyter/bin/jupyter /usr/local/bin/jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension install --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-nbextension enable --sys-prefix --py rsconnect_jupyter \ - && /opt/python/jupyter/bin/jupyter-serverextension enable --sys-prefix --py rsconnect_jupyter + && /opt/python/jupyter/bin/python -m pip install ipykernel \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION} --display-name "Python ${PYTHON_VERSION}" \ + && /opt/python/jupyter/bin/python -m ipykernel install --name py${PYTHON_VERSION_ALT} --display-name "Python ${PYTHON_VERSION_ALT}" \ + && /opt/python/jupyter/bin/python -m pip cache purge RUN curl -fsSL -o /usr/local/bin/wait-for-it.sh https://raw.githubusercontent.com/rstudio/wait-for-it/master/wait-for-it.sh && \ chmod +x /usr/local/bin/wait-for-it.sh diff --git a/workbench/conf/jupyter.conf b/workbench/conf/jupyter.conf index abc5cfd53..1b789302a 100644 --- a/workbench/conf/jupyter.conf +++ b/workbench/conf/jupyter.conf @@ -1,6 +1,5 @@ -notebooks-enabled=1 labs-enabled=1 -# jupyter-exe=/usr/local/bin/jupyter +jupyter-exe=/opt/python/jupyter/bin/jupyter default-session-cluster=Local