Start with CONTRIBUTING.md for the canonical onboarding flow. This file is retained as deeper local-setup reference for tool installation, IDE notes, and troubleshooting.
- Go 1.25.6 (managed via mise - see below)
- Git (version control)
- Make (build automation)
- mise (version manager) - Recommended
mise ensures all developers use Go 1.25.6 (same as CI/CD).
macOS/Linux:
curl https://mise.jdx.dev/install.sh | shAlternative: brew install mise (macOS)
Activate mise - Add to shell config (~/.bashrc, ~/.zshrc, etc.):
eval "$(mise activate bash)" # or zsh, fishRestart shell or run: source ~/.bashrc
git clone https://github.com/dynatrace-oss/ai-config-manager.git
cd ai-config-managermise auto-detects .mise.toml and prompts to install Go 1.25.6:
cd ai-config-manager # Prompts to install Go
# Or manually: mise install# Check Go version (should show 1.25.6)
go version
# Check CGO is disabled
mise env | grep CGO_ENABLED # Should show CGO_ENABLED="0"
# Build and test
make build
make test# Build & Install
make build # Build binary to ./aimgr
make os-info # Show the OS-specific install path
make install # Build and install to the path reported by make os-info
# Testing
make test # Baseline contributor checks (vet → unit → integration)
make unit-test # Fast unit tests only
make integration-test # Integration tests
make e2e-test # E2E tests
# Code Quality
make fmt # Format all Go code
make vet # Run go vet (static analysis)
# Cleanup
make clean # Remove build artifacts
# Help
make help # Show all targetsLocal baseline checks run in this order:
- vet - Static analysis (catches syntax errors)
- unit-test - Fast tests, no external dependencies
- integration-test - Slower tests, uses git/network
make e2e-test is a separate check. In CI, .github/workflows/build.yml also runs E2E coverage in its own job after the main test job.
# Linux (default)
make build
# macOS
GOOS=darwin GOARCH=amd64 make build
# Windows
GOOS=windows GOARCH=amd64 make buildLocal setup stays close to CI, but CI still adds a few extra validations:
| Aspect | Local (mise) | CI (GitHub Actions) |
|---|---|---|
| Go Version | 1.25.6 | 1.25.6 |
| CGO | Disabled (0) | Disabled (0) |
| Baseline Checks | make test |
make vet + go test -race ./... |
| E2E | make e2e-test when needed |
Separate e2e-test job |
| Linter | make vet |
make vet + golangci-lint |
| Script validation | optional local spot-checks | bash -n scripts/install.sh + PowerShell parse for scripts/install.ps1 |
| Build | make build |
make build + multi-platform build job |
Result: Passing local checks reduces CI risk, but CI still adds race-test, lint, script-validation, and build-matrix coverage.
After installation:
- Restart terminal
- Verify mise in PATH:
which mise - Re-run activation for your shell
mise install # Reload mise
mise doctor # Check mise status
mise which go # Verify Go managed by mise- Ensure Go 1.25.6:
go version - Clean and rebuild:
make clean && make build - Run baseline local checks:
make test && make build - Add
make e2e-testif the change affects end-to-end workflows - Check for uncommitted changes:
git status
If not using mise, install Go 1.25.6 manually:
- Download from: https://go.dev/dl/
- Set CGO manually:
export CGO_ENABLED=0 - Verify:
go version
Note: Manual setup is error-prone. We recommend mise.
Recommended extensions:
- Go (golang.go)
- mise (jdxcode.mise)
Settings (.vscode/settings.json):
{
"go.useLanguageServer": true,
"go.lintTool": "golangci-lint",
"go.lintOnSave": "package"
}- Settings → Go → GOROOT
- Select mise-managed Go (
~/.local/share/mise/installs/go/1.25.6) - Enable "Go Modules"
- Read CONTRIBUTING.md for contribution guidelines
- Check release-process.md for release workflow
- See AGENTS.md for AI agent guidelines
- mise: https://mise.jdx.dev/
- Go: https://go.dev/doc/
- Repository: https://github.com/dynatrace-oss/ai-config-manager