Yardmaster is a release management tool for Flatcar Container Linux. It automates release orchestration across multiple channels (Alpha, Beta, Stable, LTS) and provides commands to prepare, validate, and tag releases.
- Python 3.10+
uvfor environment and dependency management
# Install dependencies
make dev-install
# Copy and edit the config file
cp .yardmaster.yaml.sample .yardmaster.yaml
# Edit .yardmaster.yaml with your valuesThe config template references these env vars:
JENKINS_USERandJENKINS_TOKENfor JenkinsGPG_KEY_IDif GPG signing is enabled
Export them before running release commands.
# 1. Initialize release state from a GitHub issue
yardmaster release init https://github.com/flatcar/Flatcar/issues/1234
# 2. Check status
yardmaster status
# 3. Run pre-release steps (tagging, branching, Jenkins builds)
yardmaster release run --pre
# 4. Run post-release steps
yardmaster release run --post
# 5. Mark release as done
yardmaster release completeUse --dry-run on any step to preview without making changes.
Useful options:
--dry-run: show actions without executing them--skip-jenkins: skip triggering Jenkins builds--skip-issue-check: skip GitHub issue title verification--force: force tag creation if it already exists-v: verbose logging
Retag a channel mid-release:
yardmaster retag alphaView configured channels, planned releases, and release state:
yardmaster status
yardmaster status --show-sdk
yardmaster status --jsonDetermine SDK versions for upcoming releases:
yardmaster sdk determine alpha:3800.0.0Trigger a Jenkins PR build:
yardmaster jenkins pr-build --dry-run flatcar scripts 1234make dev-install # install dev dependencies
make test # run tests
make lint # lint
make format # auto-format
make type-check # mypy
make check # all of the above
make fix # auto-fix formatting + lint
make all # fix + check + build
make clean # remove build artifacts
make help # list all targets- Default config path:
.yardmaster.yaml - Sample config:
.yardmaster.yaml.sample - Workspace default:
~/.yardmaster/workspace - Logs default:
~/.yardmaster/yardmaster.log
If you see Config file not found, copy the sample config:
cp .yardmaster.yaml.sample .yardmaster.yamlThen edit it with your values.
Yardmaster looks for .yardmaster.yaml in the current directory by default. You can override this with:
-
YARDMASTER_CONFIGenvironment variable:export YARDMASTER_CONFIG=~/my-project/.yardmaster.yaml yardmaster status
-
-cflag (takes precedence over the env var):yardmaster -c /path/to/config.yaml status