mirror of
https://github.com/google/ax.git
synced 2026-10-21 05:49:14 +08:00
Transition the AX architecture from asynchronous event queues (Redis Streams and the `ax-controller` worker pool) to direct, synchronous reconciliation in `ax-server` guarded by fine-grained distributed locks. Key changes: - Implement per-resource locking (`lock:task`, `lock:workspace`, `lock:model`) using Redis distributed locks (`SET NX PX` with token validation) and an in-memory locker for testing. - Move Substrate reconciliation directly into `ax-server` for Task, Workspace, and Model lifecycle methods (`Create`, `Resume`, `Suspend`, `Delete`). - Decommission `ax-controller`, `deploy/ax-controller.yaml`, and Redis Stream event publishing/consuming interfaces. - Simplify `ax delete` and `ax watch` in the CLI to eliminate two-phase polling loops now that operations complete synchronously. - Update `demo.sh`, build configurations (`Makefile`, `.ko.yaml`), and documentation to reflect the single-binary control plane architecture.
30 lines
805 B
Markdown
30 lines
805 B
Markdown
# Development
|
|
|
|
## Prerequisites
|
|
|
|
- Go 1.27+
|
|
- [`ko`](https://ko.build/) for building and deploying control plane images
|
|
- Docker or Podman for the task runner image
|
|
- A Kubernetes cluster and kubeconfig
|
|
|
|
## Build
|
|
|
|
```bash
|
|
make build # bin/ax, bin/ax-server
|
|
make install # install the ax CLI into $(go env GOPATH)/bin
|
|
make build-task-runner # cross-compile the runner for linux/amd64 and build its image
|
|
make push-task-runner # ...and push it (set TASK_RUNNER_REPO)
|
|
```
|
|
|
|
## Test
|
|
|
|
Runs everything, including the mock Substrate gRPC server, in-memory store validation, and API server tests:
|
|
|
|
```bash
|
|
make test # or: go test -v ./...
|
|
```
|
|
|
|
## Contributing
|
|
|
|
See [CONTRIBUTING.md](../CONTRIBUTING.md) for contribution guidelines, CLA requirements, and PR workflows.
|