Note: All base images must be Codespace-compatible to ensure Docker and devcontainer features work as expected in Codespaces and local development environments.
This repository hosts multiple devcontainer builds, each organized in its own subdirectory. These builds are published to GitHub Container Registry (GHCR) and can be consumed by downstream projects.
devcontainers/
9569/
Dockerfile
tnl/
Dockerfile
nysd/
Dockerfile
.github/
workflows/
build.yml
9569/: Python 3.7 environment for assessments and lessons.tnl/: Python 3.11 environment for teaching and learning resources.nysd/: Python 3.11 environment for Nanyang System Developer projects.
:latest: Always points to the most recent build.:YYYYMMDD: Date-based tags for reproducibility.
The GitHub Actions workflow (build.yml) automates the following:
- Detects changes in subdirectories.
- Builds and pushes the corresponding container to GHCR.
- Enforces a retention policy to keep
:latestand builds less than 3 months before:latest.
- Automatic: On merging a PR to
main. - Manual: Via workflow dispatch.
- Always keep
:latest. - Retain all builds less than 3 months before
:latest.
Downstream projects can reference these devcontainers in their .devcontainer/devcontainer.json:
{
"name": "9569-project",
"image": "ghcr.io/nyjc-computing/devcontainer-9569:latest"
}For reproducibility, pin to a specific date-based tag:
{
"name": "9569-project",
"image": "ghcr.io/nyjc-computing/devcontainer-9569:20250922"
}- Each subdirectory has its own
Dockerfile. - Builds are restricted to one subdirectory per PR.