The docker images used by dodona
- based on the python image
- includes ruff
- shared by judge-pythia and judge-turtle: each judge's packages are in
dodona-python/<judge>.txt, exercise packages inexercises.txt, and every pull request that changes the image runs both judges' suites against the candidate
- based on the r-base image
dodona-r/DESCRIPTIONlists the R packages the image provides,dodona-r/renv.lockpins them and their dependencies, and the build restores exactly that lock with renv- the lock takes every CRAN package from one dated Posit Package Manager snapshot, the date in its repository URL
- judge-r and its test suite need base64enc, dplyr, ggplot2, jsonlite, knitr, processx, purrr, R6, rlang, testthat, tibble and withr; the other packages are for exercises
- R's recommended packages (MASS, Matrix, lattice, survival, ...) come from r-base: the lock holds them at r-base's versions
- coxed, polite, rtweet and vader are pinned (
==inDESCRIPTION) at their last release because CRAN archived them; they and UserNetR (a GitHub commit inRemotes) keep their lock record when the lock is regenerated - bindrcpp, covr, maps, spelling, vcr and webshot stay listed because coxed's and rtweet's old
dependencies = TRUEinstalls pulled them in
Dependabot's r-base bump fails the build's lock check, because the new R ships other recommended packages: run the command below with that day's date on its branch. Between R releases, run it by hand to add, remove or bump packages, after editing dodona-r/DESCRIPTION if needed. It regenerates the lock from the snapshot of <date> (YYYY-MM-DD) without installing anything:
docker run --rm -v "$PWD/dodona-r:/requirements" -w /requirements \
"$(docker build -q --target renv -f dodona-r.dockerfile .)" \
Rscript update-lock.R <date>A new date bumps every package to its version on that day. If CRAN archived a package since the last date, the script stops: pin it at the version the lock holds.