Skip to main content

Flatcar Container Linux Release Management Tool

Project description

Yardmaster

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.

Requirements

  • Python 3.10+
  • uv for environment and dependency management

Installation

pip install yardmaster

# Create a global config at ~/.yardmaster.yaml
yardmaster config init

# Edit it with your credentials and paths
vim ~/.yardmaster.yaml

Setup (development)

# Install dependencies
make dev-install

# Copy and edit the config file
cp .yardmaster.yaml.sample .yardmaster.yaml
# Edit .yardmaster.yaml with your values

GitHub token

Yardmaster posts Jenkins build links as comments on the release GitHub issue. It needs a GitHub token with the repo scope (or public_repo for public repos only).

Option 1: using the gh CLI

Install gh: https://cli.github.com/

gh auth login --scopes "repo"

# Add the token to your environment
export GITHUB_TOKEN=$(gh auth token)

Option 2: personal access token

Create a token at https://github.com/settings/tokens with the repo scope, then:

export GITHUB_TOKEN=your_token_here

Add the export to your ~/.zshrc or ~/.bashrc to make it permanent.

Jenkins credentials

You need a Jenkins username and API token to trigger builds.

To get your Jenkins API token:

  1. Log in to Jenkins
  2. Go to your user profile → Configure
  3. Under API Token, click Add new Token
  4. Copy the generated token
export JENKINS_USER=your_username
export JENKINS_TOKEN=your_api_token

Required environment variables

The config template references these env vars:

Variable Description
GITHUB_TOKEN GitHub token for posting issue comments (repo scope)
JENKINS_USER Jenkins username
JENKINS_TOKEN Jenkins API token

Export them before running release commands, or add them to your shell profile.

Release workflow

# 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 complete

Use --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

Retag a channel mid-release:

yardmaster retag alpha

Status

View configured channels, planned releases, and release state:

yardmaster status
yardmaster status --show-sdk
yardmaster status --json

SDK

Determine SDK versions for upcoming releases:

yardmaster sdk determine alpha:3800.0.0

Jenkins

Trigger a Jenkins PR build:

yardmaster jenkins pr-build --dry-run flatcar scripts 1234

Development

make 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

Notes

  • Default config path: .yardmaster.yaml
  • Sample config: .yardmaster.yaml.sample
  • Workspace default: ~/.yardmaster/workspace
  • Logs default: ~/.yardmaster/yardmaster.log

Troubleshooting

If you see Config file not found, copy the sample config:

cp .yardmaster.yaml.sample .yardmaster.yaml

Then edit it with your values.

Configuration

Yardmaster looks for .yardmaster.yaml in the current directory by default. You can override this with:

  • YARDMASTER_CONFIG environment variable:

    export YARDMASTER_CONFIG=~/my-project/.yardmaster.yaml
    yardmaster status
    
  • -c flag (takes precedence over the env var):

    yardmaster -c /path/to/config.yaml status
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yardmaster-0.1.5.tar.gz (152.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yardmaster-0.1.5-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file yardmaster-0.1.5.tar.gz.

File metadata

  • Download URL: yardmaster-0.1.5.tar.gz
  • Upload date:
  • Size: 152.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yardmaster-0.1.5.tar.gz
Algorithm Hash digest
SHA256 6942441ffd63a640f8b8f96ce66fc09ea526e54278432332444f315891aeb2aa
MD5 4aa402b8d2ce4ba5635b629599dc364c
BLAKE2b-256 340541e89015a547a15b799348444b91e4d19674b0e9d0b5e0466d0afc7ce2ce

See more details on using hashes here.

File details

Details for the file yardmaster-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: yardmaster-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yardmaster-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b0dcf48e600fc4a18a38143531b1cfe0a3b06f8bc2d6b2661530dbc87e463d23
MD5 bea45a52447b33f93e0c9d11ba4b25f9
BLAKE2b-256 da880a79f251a5c7f1bbef32813690db8f0f0060bacc2c8d56e027e65a62c8ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page