Skip to content

🐳 Create devcontainer with pinned toolchain and document build dependencies #52

@szmyty

Description

@szmyty

Title: 🐳 Create devcontainer with pinned toolchain and document build dependencies


Description

Create a fully reproducible development environment using a Dev Container.

The environment should:

  • start from Ubuntu
  • install all required system dependencies
  • install Rust toolchain (pinned)
  • install Pandoc and document toolchain dependencies
  • support immediate development with zero manual setup

This ensures consistent development across:

  • local machines
  • GitHub Codespaces
  • CI environments

Goals

  • Provide a “ready-to-go” development environment
  • Eliminate environment drift
  • Pin versions for reproducibility
  • Align local and CI environments

Requirements


1. DevContainer Structure

Create:

.devcontainer/
  devcontainer.json
  Dockerfile

2. Base Image

Use Ubuntu-based image:

mcr.microsoft.com/devcontainers/base:ubuntu

3. System Dependencies (APT)

Install required tools:

  • pandoc
  • curl
  • git
  • build-essential
  • pkg-config
  • libssl-dev
  • ca-certificates

Version Pinning

  • Pin APT packages where possible
  • Use explicit versions OR document exact versions installed

4. Rust Toolchain Installation

Install Rust using rustup:

  • install rustup via script
  • install stable toolchain
  • optionally pin toolchain version

Requirements

  • install rustc
  • install cargo
  • configure environment:
source "$HOME/.cargo/env"

5. Additional Tooling

Install:

  • cross (optional but recommended)
  • cargo-watch (optional for dev UX)

6. Taskfile Dependency

Install Taskfile:

  • download from official release
  • pin version using specific release URL or SHA

7. Environment Configuration

Ensure:

  • $HOME/.cargo/bin in PATH
  • working directory is project root
  • shell is bash

8. DevContainer Configuration

In devcontainer.json:

  • mount workspace
  • set default shell
  • enable extensions (optional)

9. Validation

Ensure the following work inside container:

cargo build
cargo run -- build
cargo test
pandoc --version
task --version

10. Copilot Guidance

  • Prefer deterministic installs
  • Pin versions where feasible
  • Keep Dockerfile readable
  • Avoid unnecessary layers or complexity
  • Ensure fast rebuild times

Acceptance Criteria

  • DevContainer builds successfully
  • All dependencies installed correctly
  • Rust toolchain available
  • Pandoc available
  • Taskfile installed
  • Project builds inside container
  • CLI runs successfully
  • Environment is reproducible

Notes

This container becomes the canonical development environment for Renderflow.

Future CI pipelines should mirror this setup.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions