Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/universal/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
ARG IMAGE="buildpack-deps:jammy-curl"
ARG IMAGE="buildpack-deps:noble-curl"
FROM ${IMAGE}
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down
29 changes: 16 additions & 13 deletions .github/workflows/devcontainer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: "Build: Docker Images"
on:
workflow_dispatch:
release:
types: [published]
types: [ published ]
schedule:
- cron: "0 6 * * sun"
pull_request:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 <https://mickael.canouil.fr>"
ANNOTATION_URL: ${{ github.server_url }}/${{ github.repository }}
ANNOTATION_LICENSE: "MIT"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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}"

Expand All @@ -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
Expand Down
106 changes: 78 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -137,39 +137,53 @@ The following outputs show the `quarto check` results from the latest builds of
<summary>Release Image</summary>

<!-- QUARTO_CHECK_RELEASE_START -->

```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:
Expand All @@ -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...
```

<!-- QUARTO_CHECK_RELEASE_END -->

<!-- QUARTO_CHECK_RELEASE_BUILD_URL_START -->

[View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/24967728529)

<!-- QUARTO_CHECK_RELEASE_BUILD_URL_END -->

</details>
Expand All @@ -202,38 +227,52 @@ Quarto 1.9.37
<summary>Prerelease Image</summary>

<!-- QUARTO_CHECK_PRERELEASE_START -->

```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:
Expand All @@ -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...
```

<!-- QUARTO_CHECK_PRERELEASE_END -->

<!-- QUARTO_CHECK_PRERELEASE_BUILD_URL_START -->

[View build log](https://github.com/mcanouil/quarto-codespaces/actions/runs/24967728529)

<!-- QUARTO_CHECK_PRERELEASE_BUILD_URL_END -->

</details>
Expand Down
Loading