-
Notifications
You must be signed in to change notification settings - Fork 45
make workloadmanager build more explicit #264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,7 +22,8 @@ SHELL = /usr/bin/env bash -o pipefail | |
| .SHELLFLAGS = -ec | ||
|
|
||
| .PHONY: all | ||
| all: build | ||
| .PHONY: all build-all build-workloadmanager build-agentd build-router clean test deps | ||
| all: build-all | ||
|
|
||
| ##@ General | ||
|
|
||
|
|
@@ -68,7 +69,7 @@ gen-check: gen-all ## Check if generated code is up to date | |
| .PHONY: build run clean test deps | ||
|
|
||
| # Build targets | ||
| build: generate ## Build workloadmanager binary | ||
| build-workloadmanager: generate ## Build workloadmanager binary | ||
| @echo "Building workloadmanager..." | ||
| go build -o bin/workloadmanager ./cmd/workload-manager | ||
|
|
||
|
|
@@ -80,37 +81,12 @@ build-router: generate ## Build agentcube-router binary | |
| @echo "Building agentcube-router..." | ||
| go build -o bin/agentcube-router ./cmd/router | ||
|
|
||
| build-all: build build-agentd build-router ## Build all binaries | ||
|
|
||
| # Run server (development mode) | ||
| run: | ||
| @echo "Running workloadmanager..." | ||
| go run ./cmd/workload-manager/main.go \ | ||
| --port=8080 \ | ||
| --ssh-username=sandbox \ | ||
| --ssh-port=22 | ||
|
|
||
| # Run server (with kubeconfig) | ||
| run-local: | ||
| @echo "Running workloadmanager with local kubeconfig..." | ||
| go run ./cmd/workload-manager/main.go \ | ||
| --port=8080 \ | ||
| --kubeconfig=${HOME}/.kube/config \ | ||
| --ssh-username=sandbox \ | ||
| --ssh-port=22 | ||
|
|
||
| # Run router (development mode) | ||
| run-router: | ||
| @echo "Running agentcube-router..." | ||
| go run ./cmd/router/main.go \ | ||
| --port=8080 \ | ||
| --debug | ||
| build-all: build-workloadmanager build-agentd build-router | ||
|
||
|
|
||
| # Clean build artifacts | ||
| clean: | ||
| @echo "Cleaning..." | ||
| rm -rf bin/ | ||
| rm -f workloadmanager agentd agentcube-router | ||
|
|
||
| # Install dependencies | ||
| deps: | ||
|
|
@@ -149,62 +125,51 @@ gen-copyright: | |
| @echo "Adding copyright headers..." | ||
| @hack/update-copyright.sh | ||
|
|
||
| # Install to system | ||
| install: build | ||
| @echo "Installing workloadmanager..." | ||
| sudo cp bin/workloadmanager /usr/local/bin/ | ||
|
|
||
| # Docker image variables | ||
| WORKLOAD_MANAGER_IMAGE ?= workloadmanager:latest | ||
| ROUTER_IMAGE ?= agentcube-router:latest | ||
| PICOD_IMAGE ?= picod:latest | ||
| IMAGE_REGISTRY ?= "" | ||
|
|
||
| # Docker and Kubernetes targets | ||
| docker-build: | ||
| docker-build-workloadmanager: | ||
| @echo "Building Docker image..." | ||
| docker build -f docker/Dockerfile -t $(WORKLOAD_MANAGER_IMAGE) . | ||
|
|
||
| # Multi-architecture build (supports amd64, arm64) | ||
| docker-buildx: | ||
| @echo "Building multi-architecture Docker image..." | ||
| docker buildx build -f docker/Dockerfile --platform linux/amd64,linux/arm64 -t $(WORKLOAD_MANAGER_IMAGE) . | ||
| docker build -f docker/Dockerfile.workloadmanager -t $(WORKLOAD_MANAGER_IMAGE) . | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The # Multi-architecture build (supports amd64, arm64)
docker-buildx-workloadmanager:
@echo "Building multi-architecture Docker image..."
docker buildx build -f docker/Dockerfile.workloadmanager --platform linux/amd64,linux/arm64 -t $(WORKLOAD_MANAGER_IMAGE) .Similar targets could be added for |
||
|
|
||
| # Multi-architecture build and push | ||
| docker-buildx-push: | ||
| docker-buildx-push-workloadmanager: | ||
| @if [ -z "$(IMAGE_REGISTRY)" ]; then \ | ||
| echo "Error: IMAGE_REGISTRY not set. Usage: make docker-buildx-push IMAGE_REGISTRY=your-registry.com"; \ | ||
| echo "Error: IMAGE_REGISTRY not set. Usage: make docker-buildx-push-workloadmanager IMAGE_REGISTRY=your-registry.com"; \ | ||
| exit 1; \ | ||
| fi | ||
| @echo "Building and pushing multi-architecture Docker image to $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)..." | ||
| docker buildx build -f docker/Dockerfile --platform linux/amd64,linux/arm64 \ | ||
| docker buildx build -f docker/Dockerfile.workloadmanager --platform linux/amd64,linux/arm64 \ | ||
| -t $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE) \ | ||
| --push . | ||
|
Comment on lines
139
to
148
|
||
|
|
||
| docker-push: docker-build | ||
| docker-push-workloadmanager: docker-build-workloadmanager | ||
| @if [ -z "$(IMAGE_REGISTRY)" ]; then \ | ||
| echo "Error: IMAGE_REGISTRY not set. Usage: make docker-push IMAGE_REGISTRY=your-registry.com"; \ | ||
| echo "Error: IMAGE_REGISTRY not set. Usage: make docker-push-workloadmanager IMAGE_REGISTRY=your-registry.com"; \ | ||
| exit 1; \ | ||
| fi | ||
| @echo "Tagging and pushing Docker image to $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE)..." | ||
| docker tag $(WORKLOAD_MANAGER_IMAGE) $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE) | ||
| docker push $(IMAGE_REGISTRY)/$(WORKLOAD_MANAGER_IMAGE) | ||
|
|
||
| # Load image to kind cluster | ||
| # Load images to kind cluster | ||
| kind-load: | ||
| @echo "Loading image to kind..." | ||
| @echo "Loading workload manager image to kind..." | ||
| kind load docker-image $(WORKLOAD_MANAGER_IMAGE) | ||
| @echo "Loading router image to kind..." | ||
| kind load docker-image $(ROUTER_IMAGE) | ||
| @echo "Loading picod image to kind..." | ||
| kind load docker-image $(PICOD_IMAGE) | ||
|
|
||
| # Router Docker targets | ||
| docker-build-router: | ||
| @echo "Building Router Docker image..." | ||
| docker build -f docker/Dockerfile.router -t $(ROUTER_IMAGE) . | ||
|
|
||
| # Multi-architecture build for router (supports amd64, arm64) | ||
| docker-buildx-router: | ||
| @echo "Building multi-architecture Router Docker image..." | ||
| docker buildx build -f docker/Dockerfile.router --platform linux/amd64,linux/arm64 -t $(ROUTER_IMAGE) . | ||
|
|
||
| # Multi-architecture build and push for router | ||
| docker-buildx-push-router: | ||
| @if [ -z "$(IMAGE_REGISTRY)" ]; then \ | ||
|
|
@@ -225,21 +190,11 @@ docker-push-router: docker-build-router | |
| docker tag $(ROUTER_IMAGE) $(IMAGE_REGISTRY)/$(ROUTER_IMAGE) | ||
| docker push $(IMAGE_REGISTRY)/$(ROUTER_IMAGE) | ||
|
|
||
| # Load router image to kind cluster | ||
| kind-load-router: | ||
| @echo "Loading router image to kind..." | ||
| kind load docker-image $(ROUTER_IMAGE) | ||
|
|
||
| # Picod Docker targets | ||
| docker-build-picod: | ||
| @echo "Building Picod Docker image..." | ||
| docker build -f docker/Dockerfile.picod -t $(PICOD_IMAGE) . | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To improve developer experience, consider adding a target to build all docker images at once, similar to docker-build-all: docker-build-workloadmanager docker-build-router docker-build-picod ## Build all docker images |
||
|
|
||
| # Multi-architecture build for picod (supports amd64, arm64) | ||
| docker-buildx-picod: | ||
| @echo "Building multi-architecture Picod Docker image..." | ||
| docker buildx build -f docker/Dockerfile.picod --platform linux/amd64,linux/arm64 -t $(PICOD_IMAGE) . | ||
|
|
||
| # Multi-architecture build and push for picod | ||
| docker-buildx-push-picod: | ||
| @if [ -z "$(IMAGE_REGISTRY)" ]; then \ | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -42,4 +42,4 @@ USER apiserver | |
| EXPOSE 8080 | ||
|
|
||
| ENTRYPOINT ["/app/workloadmanager"] | ||
| CMD ["--port=8080"] | ||
| CMD ["--port=8080"] | ||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -35,45 +35,25 @@ Binaries will be placed in the `bin/` directory. | |||||||||
|
|
||||||||||
| ### Build Specific Components | ||||||||||
|
|
||||||||||
| - **Workload Manager**: `make build` | ||||||||||
| - **Workload Manager**: `make build-workloadmanager` | ||||||||||
|
||||||||||
| - **Workload Manager**: `make build-workloadmanager` | |
| - **Workload Manager**: `make build` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be more convenient for users to build all Docker images with a single command. I've made a suggestion on the Makefile to add a docker-build-all target. If that is implemented, this documentation can be simplified.
| make docker-build-workloadmanager | |
| make docker-build-router | |
| make docker-build-picod | |
| make docker-build-all |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
.PHONYdeclaration still listsbuildandrun, but those targets no longer exist. This can be confusing for maintainers and makes it harder to reason about intended targets; update the.PHONYlist to match the current target set.