Quick guide to get you building and testing the next OCM reference library, cli and controllers.
- Go 1.25+
- Task — our build runner
- Docker — for integration tests
# Clone
git clone https://github.com/open-component-model/open-component-model.git
cd open-component-model
# Verify everything builds
task.
├── bindings/go/ # Go library modules (see bindings/go/README.md)
├── cli/ # OCM CLI
├── kubernetes/ # Kubernetes controller, this has special setup instructions (see kubernetes/controller/README.md)
├── docs/
│ ├── adr/ # Architecture Decision Records
│ ├── community/ # Community & SIG docs
│ └── steering/ # Governance
└── Taskfile.yml # Build automation
# List all available tasks
task --list
# Run all unit tests
task test
# Run integration tests (requires Docker)
task test/integration
# Run tests for a specific module
task bindings/go/oci:test
# Run code generators
task generate
# Run lint
task tools:lint
# Build CLI
task cli:buildThis is a multi-module Go workspace. Each module in bindings/go/ has its own:
go.modTaskfile.ymlwithtest,test/integration(if applicable)
To work on a specific module:
cd bindings/go/oci
task test- Run
golangci-lintbefore committing (CI enforces this)- Convenience task to run over all modules:
task tools:lint - If you want to apply auto-fixing:
task tools:lint -- --fix
- Convenience task to run over all modules:
- Generated code lives alongside source — run
task generateif you change schemas
- Fork the repo
- Create a feature branch
- Make your changes
- Run
task testand fix any failures - Submit PR against
main
CI will run linting, tests, and CodeQL analysis automatically.
Design decisions are documented in docs/adr/. If you're proposing a significant change, consider writing
an ADR first.
- Check existing issues
- See the community docs for SIGs and meetings or check out how to engage with us on our website!
- Review the Code of Conduct
| Variable | Default | Description |
|---|---|---|
IMAGE_REGISTRY |
localhost:5001 |
Registry URL for pushing/pulling images |
IMAGE_PREFIX |
acme.org/sovereign |
Image name prefix/organization |
PUSH_IMAGE |
true |
Whether to push images to registry |
VERSION |
1.0.0 |
Component version |
POSTGRES_VERSION |
15 |
PostgreSQL version to use |