diff --git a/.devcontainer/universal/Dockerfile b/.devcontainer/universal/Dockerfile index dba0653..37d5993 100644 --- a/.devcontainer/universal/Dockerfile +++ b/.devcontainer/universal/Dockerfile @@ -1,2 +1,2 @@ -ARG IMAGE="buildpack-deps:jammy-curl" +ARG IMAGE="buildpack-deps:noble-curl" FROM ${IMAGE} diff --git a/.devcontainer/universal/quarto-computing-dependencies/install.sh b/.devcontainer/universal/quarto-computing-dependencies/install.sh index d48feff..c3ad9c0 100755 --- a/.devcontainer/universal/quarto-computing-dependencies/install.sh +++ b/.devcontainer/universal/quarto-computing-dependencies/install.sh @@ -52,6 +52,7 @@ quarto_julia_deps() { su "${USERNAME}" -c "~/.juliaup/bin/julia -e 'using Pkg; Pkg.add.([\"${deps}\"])'" } +apt-get update -y && apt-get install -y --no-install-recommends libuv1-dev && rm -rf /var/lib/apt/lists/* quarto_r_deps "${R_DEPS}" quarto_python_deps "${PYTHON_DEPS}" quarto_julia_deps "${JULIA_DEPS}" diff --git a/.github/.devcontainer/quarto-computing-dependencies/install.sh b/.github/.devcontainer/quarto-computing-dependencies/install.sh index 6697858..e9a7f40 100755 --- a/.github/.devcontainer/quarto-computing-dependencies/install.sh +++ b/.github/.devcontainer/quarto-computing-dependencies/install.sh @@ -61,6 +61,7 @@ quarto_julia_deps() { } if [[ ",${PLATFORMS}," == *",${architecture},"* ]]; then + apt-get update -y && apt-get install -y --no-install-recommends libuv1-dev && rm -rf /var/lib/apt/lists/* quarto_r_deps "${R_DEPS}" quarto_python_deps "${PYTHON_DEPS}" quarto_julia_deps "${JULIA_DEPS}" diff --git a/.github/workflows/devcontainer.yml b/.github/workflows/devcontainer.yml index e982df5..487a0b8 100644 --- a/.github/workflows/devcontainer.yml +++ b/.github/workflows/devcontainer.yml @@ -3,7 +3,7 @@ name: "Build: Docker Images" on: workflow_dispatch: release: - types: [published] + types: [ published ] schedule: - cron: "0 6 * * sun" pull_request: @@ -32,9 +32,9 @@ jobs: matrix: include: - QUARTO_VERSION: release - IMAGE_TAG_BASE: release,release-jammy,latest + IMAGE_TAG_BASE: release,release-noble,latest - QUARTO_VERSION: prerelease - IMAGE_TAG_BASE: prerelease,prerelease-jammy + IMAGE_TAG_BASE: prerelease,prerelease-noble steps: - name: Checkout code uses: actions/checkout@v6 @@ -102,14 +102,16 @@ jobs: workflow_dispatch schedule platform: linux/amd64 - runCmd: echo "$(CI=true quarto check 2>&1)" | sed '/^(/d; s/\x1b\[[0-9;]*[mGK]//g' + runCmd: echo "$(CI=true quarto check 2>&1)" | sed '/^(/d; + s/\x1b\[[0-9;]*[mGK]//g' env: - IMAGE: "buildpack-deps:jammy-curl" + IMAGE: "buildpack-deps:noble-curl" QUARTO_VERSION: ${{ matrix.QUARTO_VERSION }} USER: "vscode" ANNOTATION_VERSION: "${{ steps.image_version.outputs.VERSION }} (${{ github.sha }})" ANNOTATION_TITLE: "Quarto Codespaces" - ANNOTATION_DESCRIPTION: "Quarto Codespaces / Dev Containers setup for quick online testing and workshops." + ANNOTATION_DESCRIPTION: "Quarto Codespaces / Dev Containers setup for quick + online testing and workshops." ANNOTATION_AUTHORS: "Mickaël CANOUIL " ANNOTATION_URL: ${{ github.server_url }}/${{ github.repository }} ANNOTATION_LICENSE: "MIT" @@ -201,7 +203,8 @@ jobs: - name: Update README with quarto check outputs env: - BUILD_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + BUILD_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ + github.run_id }} run: | update_readme_section() { local version=$1 @@ -308,9 +311,8 @@ jobs: (github.event_name == 'release' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule') && - always() && - needs.build.result == 'success' && - needs.update-readme.result == 'success' + always() && needs.build.result == 'success' && needs.update-readme.result + == 'success' strategy: matrix: @@ -354,8 +356,8 @@ jobs: echo "Build ID: ${BUILD_ID}" # Create base tags and build metadata tags - BASE_TAGS="${QUARTO_VERSION},${QUARTO_VERSION}-jammy" - TAGS_WITH_BUILD="${QUARTO_VERSION}-${BUILD_ID},${QUARTO_VERSION}-jammy-${BUILD_ID}" + BASE_TAGS="${QUARTO_VERSION},${QUARTO_VERSION}-noble" + TAGS_WITH_BUILD="${QUARTO_VERSION}-${BUILD_ID},${QUARTO_VERSION}-noble-${BUILD_ID}" echo "Base tags: ${BASE_TAGS}" echo "Build metadata tags: ${TAGS_WITH_BUILD}" @@ -373,7 +375,8 @@ jobs: noCache: true push: always platform: ${{ matrix.PLATFORM }} - configFile: ${{ format('.devcontainer/quarto-{0}/devcontainer.json', matrix.QUARTO_VERSION) }} + configFile: ${{ format('.devcontainer/quarto-{0}/devcontainer.json', + matrix.QUARTO_VERSION) }} clean: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 2080168..2a1d40e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Setup to deploy [GitHub Codespaces](https://github.com/features/codespaces) (Cod This repository provides a setup to deploy Codespaces or Dev Containers with Quarto, supporting R, Python, and Julia environments. It includes configuration files and scripts to initialise and manage these environments. -Using [`ghcr.io/mcanouil/quarto-codespaces:latest`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces) as a base image for a quick deployment (Ubuntu 22.04 - Jammy Jellyfish): +Using [`ghcr.io/mcanouil/quarto-codespaces:latest`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces) as a base image for a quick deployment (Ubuntu 24.04 - Noble Numbat): [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/mcanouil/quarto-codespaces?quickstart=1&devcontainer_path=.devcontainer%2Fdevcontainer.json) Using Codespaces default base image ([`ghcr.io/mcanouil/quarto-codespaces:release-universal`](https://github.com/mcanouil/quarto-codespaces/pkgs/container/quarto-codespaces)) to mitigate GitHub storage usage (Ubuntu 20.04 - Focal Fossa): @@ -106,7 +106,7 @@ This file defines the development container settings, including the base image, ### Key Features -- **Base Image**: The container uses the `buildpack-deps:jammy-curl` image as the base. +- **Base Image**: The container uses the `buildpack-deps:noble-curl` image as the base. - **Remote User**: The default user is set to `vscode`. - **Installed Features**: - Common utilities with Zsh shell. @@ -137,39 +137,53 @@ The following outputs show the `quarto check` results from the latest builds of Release Image + ```txt Quarto 1.9.37 - [✓] Checking environment information... + +[✓] Checking environment information... Quarto cache location: /home/vscode/.cache/quarto - [✓] Checking versions of quarto binary dependencies... + +[✓] Checking versions of quarto binary dependencies... Pandoc version 3.8.3: OK Dart Sass version 1.87.0: OK Deno version 2.4.5: OK Typst version 0.14.2: OK - [✓] Checking versions of quarto dependencies......OK - [✓] Checking Quarto installation......OK + +[✓] Checking versions of quarto dependencies......OK + +[✓] Checking Quarto installation......OK Version: 1.9.37 Path: /opt/quarto/bin - (|) Checking tools.................... [✓] Checking tools....................OK + +(|) Checking tools.................... +[✓] Checking tools....................OK TinyTeX: (external install) Chromium: (not installed) Chrome Headless Shell: (not installed) VeraPDF: (not installed) - (|) Checking LaTeX.................... [✓] Checking LaTeX....................OK + +(|) Checking LaTeX.................... +[✓] Checking LaTeX....................OK Using: Installation From Path Path: /usr/local/bin Version: 2026 - [✓] Checking Chrome Headless....................OK + +[✓] Checking Chrome Headless....................OK Using: Chrome found on system Path: /usr/bin/google-chrome Source: PATH - (|) Checking basic markdown render.... [✓] Checking basic markdown render....OK - (|) Checking R installation........... [✓] Checking R installation...........OK +(|) Checking basic markdown render.... +[✓] Checking basic markdown render....OK + + +(|) Checking R installation........... +[✓] Checking R installation...........OK Version: 4.6.0 Path: /opt/R/4.6.0/lib/R LibPaths: @@ -178,22 +192,33 @@ Quarto 1.9.37 knitr: 1.51 rmarkdown: 2.31 - (|) Checking Knitr engine render...... [✓] Checking Knitr engine render......OK - (|) Checking Python 3 installation.... [✓] Checking Python 3 installation....OK +(|) Checking Knitr engine render...... +[✓] Checking Knitr engine render......OK + + +(|) Checking Python 3 installation.... +[✓] Checking Python 3 installation....OK Version: 3.13.9 Path: /usr/local/python/current/bin/python3 Jupyter: 5.9.1 Kernels: julia-1.12, python3 - (|) Checking Jupyter engine render.... [✓] Checking Jupyter engine render....OK - (|) Checking Julia installation... [✓] Checking Julia installation... +(|) Checking Jupyter engine render.... +[✓] Checking Jupyter engine render....OK + + +(|) Checking Julia installation... +[✓] Checking Julia installation... ``` + + [View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/24967728529) + @@ -202,38 +227,52 @@ Quarto 1.9.37 Prerelease Image + ```txt Quarto 1.10.3 - [✓] Checking environment information... + +[✓] Checking environment information... Quarto cache location: /home/vscode/.cache/quarto - [✓] Checking versions of quarto binary dependencies... + +[✓] Checking versions of quarto binary dependencies... Pandoc version 3.8.3: OK Dart Sass version 1.87.0: OK Deno version 2.4.5: OK Typst version 0.14.2: OK - [✓] Checking versions of quarto dependencies......OK - [✓] Checking Quarto installation......OK + +[✓] Checking versions of quarto dependencies......OK + +[✓] Checking Quarto installation......OK Version: 1.10.3 Path: /opt/quarto/bin - (|) Checking tools.................... [✓] Checking tools....................OK + +(|) Checking tools.................... +[✓] Checking tools....................OK TinyTeX: (external install) Chrome Headless Shell: (not installed) VeraPDF: (not installed) - (|) Checking LaTeX.................... [✓] Checking LaTeX....................OK + +(|) Checking LaTeX.................... +[✓] Checking LaTeX....................OK Using: Installation From Path Path: /usr/local/bin Version: 2026 - [✓] Checking Chrome Headless....................OK + +[✓] Checking Chrome Headless....................OK Using: Chrome found on system Path: /usr/bin/google-chrome Source: PATH - (|) Checking basic markdown render.... [✓] Checking basic markdown render....OK - (|) Checking R installation........... [✓] Checking R installation...........OK +(|) Checking basic markdown render.... +[✓] Checking basic markdown render....OK + + +(|) Checking R installation........... +[✓] Checking R installation...........OK Version: 4.6.0 Path: /opt/R/4.6.0/lib/R LibPaths: @@ -242,22 +281,33 @@ Quarto 1.10.3 knitr: 1.51 rmarkdown: 2.31 - (|) Checking Knitr engine render...... [✓] Checking Knitr engine render......OK - (|) Checking Python 3 installation.... [✓] Checking Python 3 installation....OK +(|) Checking Knitr engine render...... +[✓] Checking Knitr engine render......OK + + +(|) Checking Python 3 installation.... +[✓] Checking Python 3 installation....OK Version: 3.13.9 Path: /usr/local/python/current/bin/python3 Jupyter: 5.9.1 Kernels: julia-1.12, python3 - (|) Checking Jupyter engine render.... [✓] Checking Jupyter engine render....OK - (|) Checking Julia installation... [✓] Checking Julia installation... +(|) Checking Jupyter engine render.... +[✓] Checking Jupyter engine render....OK + + +(|) Checking Julia installation... +[✓] Checking Julia installation... ``` + + [View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/24967728529) +