-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
125 lines (111 loc) · 3.81 KB
/
Makefile
File metadata and controls
125 lines (111 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Archestra Coding Agent Makefile
#
# Usage:
# make build - Build multi-arch Docker image (amd64 + arm64)
# make build-local - Build for local architecture only
# make push - Build multi-arch and push to GCP Artifact Registry
# make run - Run the container locally (requires GITHUB_TOKEN)
# make test - Run tests
# make clean - Remove local Docker images
# Configuration
IMAGE_REGISTRY := europe-west1-docker.pkg.dev/friendly-path-465518-r6/archestra-public
IMAGE_NAME := archestra-coding-agent
VERSION ?= 0.0.3
PLATFORMS := linux/amd64,linux/arm64
BUILDER_NAME := archestra-multiarch
# Full image name
FULL_IMAGE_NAME := $(IMAGE_REGISTRY)/$(IMAGE_NAME)
# Default target
.PHONY: all
all: build
# Ensure buildx builder exists
.PHONY: setup-builder
setup-builder:
@if ! docker buildx inspect $(BUILDER_NAME) > /dev/null 2>&1; then \
echo "Creating buildx builder '$(BUILDER_NAME)'..."; \
docker buildx create --name $(BUILDER_NAME) --use --bootstrap; \
else \
docker buildx use $(BUILDER_NAME); \
fi
# Build multi-arch Docker image (loads to local docker for testing)
# Note: Multi-arch builds can only be loaded if building for single platform
# Use 'make push' to build and push multi-arch images
.PHONY: build
build: setup-builder
@echo "Building $(FULL_IMAGE_NAME):$(VERSION) for $(PLATFORMS)..."
docker buildx build \
--platform $(PLATFORMS) \
-t $(FULL_IMAGE_NAME):$(VERSION) \
-t $(FULL_IMAGE_NAME):latest \
--push \
.
@echo "Build and push complete!"
# Build for local architecture only (faster for development)
.PHONY: build-local
build-local:
@echo "Building $(FULL_IMAGE_NAME):$(VERSION) for local architecture..."
docker build -t $(FULL_IMAGE_NAME):$(VERSION) .
docker tag $(FULL_IMAGE_NAME):$(VERSION) $(FULL_IMAGE_NAME):latest
@echo "Build complete!"
# Push to GCP Artifact Registry (multi-arch)
.PHONY: push
push: build
@echo "Images already pushed during build (buildx --push)"
# Run the container locally
.PHONY: run
run:
ifndef GITHUB_TOKEN
$(error GITHUB_TOKEN is required. Set it with: export GITHUB_TOKEN=your-token)
endif
@echo "Starting Archestra Coding Agent..."
docker run -it --rm \
-e GITHUB_TOKEN=$(GITHUB_TOKEN) \
-v $(PWD)/workspace:/workspace \
-p 9121:9121 \
$(FULL_IMAGE_NAME):$(VERSION)
# Run interactively with shell
.PHONY: shell
shell:
@echo "Starting shell in container..."
docker run -it --rm \
-e GITHUB_TOKEN=$(GITHUB_TOKEN) \
-v $(PWD)/workspace:/workspace \
$(FULL_IMAGE_NAME):$(VERSION) \
/bin/bash
# Run tests
.PHONY: test
test:
@echo "Running tests..."
pip install -r requirements.txt pytest
PYTHONPATH=. pytest tests/ -v
# Clean up local images and builder
.PHONY: clean
clean:
@echo "Removing local Docker images..."
-docker rmi $(FULL_IMAGE_NAME):$(VERSION)
-docker rmi $(FULL_IMAGE_NAME):latest
@echo "Clean complete!"
# Remove buildx builder
.PHONY: clean-builder
clean-builder:
@echo "Removing buildx builder..."
-docker buildx rm $(BUILDER_NAME)
@echo "Builder removed!"
# Show help
.PHONY: help
help:
@echo "Archestra Coding Agent Makefile"
@echo ""
@echo "Usage:"
@echo " make build - Build multi-arch image (amd64+arm64) and push to registry"
@echo " make build-local - Build for local architecture only (faster for dev)"
@echo " make push - Alias for 'make build' (multi-arch build+push)"
@echo " make run - Run the container locally (requires GITHUB_TOKEN)"
@echo " make shell - Start an interactive shell in the container"
@echo " make test - Run tests"
@echo " make clean - Remove local Docker images and buildx builder"
@echo ""
@echo "Variables:"
@echo " VERSION - Image version tag (default: 0.0.1)"
@echo " GITHUB_TOKEN - GitHub personal access token (required for run)"
@echo " PLATFORMS - Target platforms (default: linux/amd64,linux/arm64)"