Skip to content

chore: migrate build tooling from mage to mise#5504

Merged
markphelps merged 6 commits intov2from
chore/migrate-to-mise
Mar 8, 2026
Merged

chore: migrate build tooling from mage to mise#5504
markphelps merged 6 commits intov2from
chore/migrate-to-mise

Conversation

@markphelps
Copy link
Copy Markdown
Collaborator

@markphelps markphelps commented Mar 6, 2026

Summary

  • Adds .mise.toml with tool versions (Go 1.26, Node 20, golangci-lint 2.9.0, buf 1.56.0) and all mage tasks migrated to mise tasks
  • Moves golangci-lint and buf from Go tool dependencies to mise-managed tools, removing many transitive dependencies
  • Updates all documentation to reference mise run commands instead of mage
  • Retains magefile.go for CI workflows until follow-up PR migrates those
  • Adds go:fuzz mise task to run all fuzz tests across the multi-module repo
  • Fixes failing fuzz tests (FuzzEnvSubst, FuzzDecodeHooks) caused by invalid env var inputs

Aliases are provided for common tasks: mise run test, mise run fmt, mise run lint, mise run bench, mise run proto, mise run fuzz.

Changes

  • Added .mise.toml: Tool versions and 21 mise tasks covering bootstrap, build, test, lint, format, proto generation, fuzz testing, and UI workflows
  • Updated go.mod/go.sum: Removed buf/cmd/buf, protoc-gen-buf-breaking, protoc-gen-buf-lint, and golangci-lint from Go tool deps
  • Updated AGENTS.md: Quality checklist references
  • Updated DEVELOPMENT.md: Requirements, setup instructions, and workflow commands
  • Updated build/CLAUDE.md: Pre-commit checks and troubleshooting
  • Updated ui/AGENTS.md: UI dev/build commands
  • Updated ui/ARCHITECTURE.md: Test command
  • Fixed internal/config/config_fuzz_test.go: Added validEnvVar helper to skip fuzz inputs with empty names, null bytes, or = characters; removed invalid seed corpus entries

Closes #5502

Add .mise.toml with tool versions (Go 1.26, Node 20) and all mage
tasks migrated to mise tasks. This provides a single source of truth
for tool versions and replaces mage as the task runner.

Task aliases are provided for common operations:
  mise run test  -> go:test
  mise run fmt   -> go:fmt
  mise run lint  -> go:lint
  mise run bench -> go:bench
  mise run proto -> go:proto

The magefile.go is retained for now as CI workflows still reference
it. CI migration will follow in a separate PR.

Closes #5502

Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
@markphelps markphelps requested a review from a team as a code owner March 6, 2026 22:01
@markphelps markphelps added the v2 Flipt v2 label Mar 6, 2026
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 6, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 6, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 60.40%. Comparing base (fd02462) to head (6cdc49e).
⚠️ Report is 1 commits behind head on v2.

Additional details and impacted files
@@            Coverage Diff             @@
##               v2    #5504      +/-   ##
==========================================
- Coverage   60.44%   60.40%   -0.05%     
==========================================
  Files         141      141              
  Lines       13995    13995              
==========================================
- Hits         8459     8453       -6     
- Misses       4816     4821       +5     
- Partials      720      721       +1     
Flag Coverage Δ
integrationtests 34.32% <ø> (-0.06%) ⬇️
unittests 51.52% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

- Add `go:fuzz` mise task (aliased as `fuzz`) to run all fuzz tests
  across the multi-module repo. Duration controllable via FLIPT_FUZZ_TIME
  env var (default 10s per target).
- Fix FuzzEnvSubst and FuzzDecodeHooks failures caused by null bytes
  and '=' characters in fuzzed env var names/values. These are invalid
  for t.Setenv and are now skipped.
- Remove failing seed corpus entry for FuzzEnvSubst.

Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
@erka
Copy link
Copy Markdown
Contributor

erka commented Mar 6, 2026

we probably could use golangci-lang and buf with mise too and remove them from go tools

Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
- Add golangci-lint 2.9.0 and buf 1.56.0 as mise-managed tools instead
  of Go tool dependencies. This removes buf/cmd/buf,
  protoc-gen-buf-breaking, protoc-gen-buf-lint, and golangci-lint from
  go.mod, shedding many transitive dependencies.
- Simplify lint and proto tasks to use mise-managed binaries directly.
- Add validEnvVar helper to consolidate env var validation in fuzz tests.
- Fix FuzzDecodeHooks failing on empty env var names (e.g. input "${}")

Signed-off-by: Mark Phelps <209477+markphelps@users.noreply.github.com>
@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Mar 7, 2026
@markphelps markphelps requested a review from erka March 7, 2026 00:03
@markphelps markphelps merged commit 2152073 into v2 Mar 8, 2026
32 of 33 checks passed
@markphelps markphelps deleted the chore/migrate-to-mise branch March 8, 2026 02:12
@github-project-automation github-project-automation Bot moved this to Done in Flipt V2 Mar 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL This PR changes 500-999 lines, ignoring generated files. v2 Flipt v2

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

chore: migrate build tooling to mise for dependency and task management

2 participants