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¶
- Update the value in
versions.yml. - Update the matching
additional_dependenciesentry in.pre-commit-hooks.yamlif the tool is exposed as a hook. - Test locally.
- Cut a new Ireul release tag.
- Update
PLATFORM_VERSIONin 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.