Purpose: For developers, provides complete reference of available mise tasks for development, testing, and building.
This reference lists all mise tasks defined in .mise.toml for openCenter CLI development.
Overview
Mise is the task automation tool for openCenter CLI. All development operations use mise tasks instead of raw commands for consistency and discoverability.
Critical Rule: Always use mise run <task> instead of raw commands (go, terraform, etc.).
Complete Task Inventory
| Task | Category | Description |
| --- | --- | --- |
| build | Build | Build both CLI and local plugin (chains build-cli + build-local-plugin) |
| build-cli | Build | Build the opencenter CLI binary with version info |
| build-local-plugin | Build | Build the local workflow plugin (bin/opencenter-local) |
| build-linux | Build | Cross-compile for Linux amd64 |
| build-all | Build | Build for multiple platforms |
| local-install | Build | Build and install to local bin directory |
| release | Release | Build release binaries + generate release notes |
| publish | Release | Publish release to GitHub |
| fmt | Quality | Format all Go source files |
| lint | Quality | Lint Go source files |
| tidy | Quality | Tidy Go module dependencies |
| upgrade-deps | Quality | Upgrade all Go dependencies |
| test | Test | Run unit tests (config, cmd, cloud packages) |
| test-race | Test | Run Go race detector |
| test-all | Test | Run all tests: unit + BDD + property |
| godog | Test | Run BDD tests (non-@wip scenarios) |
| godog-wip | Test | Run only @wip BDD scenarios |
| godog-tag | Test | Run BDD scenarios filtered by tag |
| property | Test | Run property-based tests |
| integration | Test | Run integration tests |
| perf | Test | Run performance-tagged checks |
| govulncheck | Test | Run Go vulnerability analysis |
| verify | Test | Local verification checks (catches CI regressions) |
| schema | Schema | Generate cluster JSON schema |
| schema-gen | Schema | Generate JSON schema from Go struct definitions |
| schema-v2 | Schema | Regenerate v2 JSON schema from Go types |
| schema-verify | Schema | Comprehensive schema change verification |
| validate | Schema | Validate cluster configuration |
| docs-gen | Docs | Generate CLI documentation |
| tag-wip-failures | Docs | Detect failing BDD scenarios and tag with @wip |
| gitea-up | Local Dev | Start and configure local Gitea for testing |
| gitea-cleanup | Local Dev | Tear down local Gitea instance |
| active | Local Dev | Show current active cluster status |
| terraform-generate | Local Dev | Generate Terraform main.tf from cluster config |
| preflight | Local Dev | Preflight checks for cluster deployment |
| install-shell-integration | Local Dev | Install shell integration (prompt, completions) |
| install-hooks | Local Dev | Install git hooks for development |
| clean | Cleanup | Remove build artifacts and generated files |
| kind-cleanup | Cleanup | Destroy local Kind cluster and Gitea |
| demo-cleanup | Cleanup | Full demo teardown (Kind + Gitea + artifacts) |
| openstack-reset | OpenStack | Reset an OpenStack project to clean state |
Build Tasks
build
Build both the opencenter CLI and the local workflow plugin.
Usage:
mise run build
What it does:
-
Runs
build-clithenbuild-local-plugin -
Compiles Go code with version information via ldflags
-
Creates binaries in
bin/
Output: bin/opencenter + bin/opencenter-local (current platform)
Evidence: .kiro/steering/tech.md:52
build-linux
Build binary for Linux platform.
Usage:
mise run build-linux
What it does:
-
Cross-compiles for Linux amd64
-
Injects version information
-
Creates binary in
bin/opencenter-linux-amd64
Output: bin/opencenter-linux-amd64
Evidence: .kiro/steering/tech.md:55
build-all
Build binaries for the supported release platforms.
Usage:
mise run build-all
What it does:
-
Builds for Linux and macOS
-
Creates binaries for amd64 and arm64
-
Injects version information
Output:
-
bin/opencenter-linux-amd64 -
bin/opencenter-linux-arm64 -
bin/opencenter-darwin-amd64 -
bin/opencenter-darwin-arm64
For official releases, push a v* tag and let .github/workflows/release.yml publish the signed artifacts. Use mise run release only for local preflight builds.
Evidence: .kiro/steering/tech.md:58
Test Tasks
test
Run the deterministic GA test gate.
Usage:
mise run test
What it does:
-
Runs the default CLI/config/cloud verification lane
-
Covers
./internal/config/…,./cmd/…, and./internal/cloud/… -
Excludes perf-tagged coverage
property
Run opt-in property-based coverage.
Usage:
mise run property
What it does:
-
Runs tests selected by
-run "TestProperty" -
Keeps exploratory/property coverage separate from the default gate
integration
Run the opt-in integration lane.
Usage:
mise run integration
What it does:
-
Runs integration-oriented command and subsystem tests
-
Intended for deeper pre-release verification
perf
Run perf-tagged checks.
Usage:
mise run perf
What it does:
-
Runs
perfbuild-tag coverage such as memory-regression checks -
Keeps noisy or long-running performance tests out of the default lane
Code Quality Tasks
fmt
Format code with gofmt.
Usage:
mise run fmt
What it does:
-
Runs
gofmt -won all Go files -
Formats code to Go standards
-
Must be run before committing
Evidence: .kiro/steering/tech.md:73
Schema Tasks
Validation Tasks
Pre-Commit Workflow
Required tasks before committing:
# 1. Build to verify compilation
mise run build
# 2. Format code
mise run fmt
# 3. Run tests
mise run test
# 4. Run BDD tests (if applicable)
mise run godog
Evidence: .kiro/steering/tech.md:103-118
Task Chaining
Mise tasks can be chained for complex workflows:
# Full pre-commit check
mise run fmt && mise run test && mise run godog && mise run build
# Schema update workflow
mise run schema && mise run schema-verify
# Full build and test
mise run build-all && mise run test && mise run godog
Custom Task Creation
To add new tasks, edit .mise.toml:
[tasks]
# Task description
task-name = "command to run"
# Task with multiple commands
multi-step = [
"command 1",
"command 2",
"command 3"
]
# Task with dependencies
dependent-task = { depends = ["task1", "task2"], run = "command" }
Evidence: .kiro/steering/tech.md:120-135
Environment Variables
Mise tasks can use environment variables:
# Set environment variable for task
OPENCENTER_CONFIG_DIR=/tmp/config mise run validate
# Or export for multiple tasks
export OPENCENTER_CONFIG_DIR=/tmp/config
mise run validate
mise run build
Task Output
Tasks output to stdout/stderr:
# Capture output
mise run build > build.log 2>&1
# Pipe output
mise run test | grep PASS
# Quiet mode (suppress output)
mise run build --quiet
Common Task Combinations
Development Workflow
# Start development
mise install # Install tools
mise run build # Build binary
# Make changes
vim internal/config/manager.go
# Test changes
mise run fmt # Format
mise run test # Unit tests
mise run build # Verify compilation
# Commit
git add .
git commit -m "feat: add new feature"
Troubleshooting
Task Not Found
Error: Task 'xyz' not found
Solution:
# List available tasks
mise tasks
# Check .mise.toml for task definition
cat .mise.toml | grep -A 5 "\[tasks\]"
Best Practices
-
Always use mise tasks: Never use raw commands in documentation or scripts
-
Run fmt before commit: Ensure code is formatted
-
Run tests before commit: Catch errors early
-
Use task chaining: Combine tasks for complex workflows
-
Document custom tasks: Add comments in .mise.toml
-
Keep tasks simple: One task, one purpose
-
Use descriptive names:
test-integrationnotti
Related Topics
-
../contributing/development-setup.md[Development Setup] - Set up development environment
-
../contributing/testing-guide.md[Testing Guide] - Write and run tests
-
../contributing/build-system.md[Build System] - Understand mise-based build system
-
../contributing/contributing.md[Contributing] - Contribute code