Skip to content

Versions

versions.yml is the single source of truth for all tool versions used across the magi platform. Every tool that runs in a pipeline agent, a pre-commit hook, or a build step has its version declared here.


Format

# All tool versions used across magi platform agents, hooks, and build steps; update this file first
python: "3.12"
node: "20"
java: "21"
mkdocs: "1.6.0"
mkdocs-material: "9.5.18"
ruff: "0.4.4"
yamllint: "1.35.1"
hadolint: "2.12.0"
git-cliff: "2.2.1"
trivy: "0.51.1"
cosign: "2.2.4"
pre-commit: "3.7.0"

All versions are strings. Use quoted values to prevent YAML from interpreting version numbers as floats (e.g. "3.12" not 3.12).


Tool index

Key Tool Used by
python CPython interpreter Agent Dockerfiles, local dev
node Node.js Agent Dockerfiles (JS/TS builds)
java OpenJDK Agent Dockerfiles (JVM builds)
mkdocs MkDocs static site generator Docs build steps
mkdocs-material Material theme for MkDocs Docs build steps
ruff Python linter and formatter Pre-commit hooks, agent lint steps
yamllint YAML linter Pre-commit hooks
hadolint Dockerfile linter Agent lint steps (Phase 3)
git-cliff Changelog generator from conventional commits Casper delivery steps (Phase 2)
trivy Container and IaC vulnerability scanner Balthasar scanning steps (Phase 3)
cosign Artifact signing Casper artifact signing (Phase 3)
pre-commit Git hook framework Local development setup

How melchior uses versions.yml

melchior downloads versions.yml at the PLATFORM_VERSION tag at agent build time and reads the required version for each tool before installing it.

// Download versions.yml from Ireul at the pinned platform version and parse tool versions for agent provisioning
def platformVersion = env.PLATFORM_VERSION ?: 'v0.1.0'
def versionsUrl = "https://raw.githubusercontent.com/rtsko/ireul/${platformVersion}/versions.yml"
sh "curl -fsSL ${versionsUrl} -o versions.yml"
def versions = readYaml(file: 'versions.yml')

Updating a version

  1. Update the value in versions.yml.
  2. Update the matching additional_dependencies entry in .pre-commit-hooks.yaml if the tool is exposed as a hook.
  3. Test locally.
  4. Cut a new Ireul release tag.
  5. Update PLATFORM_VERSION in dependent repos.

Warning

Changing a tool version in versions.yml without cutting a new tag and updating PLATFORM_VERSION downstream has no effect. Repos pin to a tag and read the file at that tag, not at main.