|
| 1 | +VERSION ?= 0.1.0-$(GIT_COMMIT_SHORT) |
| 2 | +GO_CONTAINER_IMAGE ?= docker.io/golang:1.25.3 |
| 3 | + |
| 4 | +CONTAINER_RUNTIME ?= $(shell command -v podman 2>/dev/null || command -v docker 2>/dev/null) |
| 5 | +ifeq ($(CONTAINER_RUNTIME),) |
| 6 | +$(error No container runtime found. Please install podman or docker) |
| 7 | +endif |
| 8 | + |
| 9 | +GIT_COMMIT_SHORT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") |
| 10 | + |
| 11 | +# Container image configuration. |
| 12 | +IMAGE_REGISTRY ?= ghcr.io/oxidecomputer |
| 13 | +IMAGE_NAME ?= oxide-cloud-controller-manager |
| 14 | +IMAGE_TAG ?= $(VERSION) |
| 15 | +IMAGE_FULL ?= $(if $(IMAGE_REGISTRY),$(IMAGE_REGISTRY)/)$(IMAGE_NAME):$(IMAGE_TAG) |
| 16 | + |
| 17 | +.PHONY: test |
| 18 | +test: |
| 19 | + @echo "Running tests in container..." |
| 20 | + $(CONTAINER_RUNTIME) build \ |
| 21 | + --build-arg GO_CONTAINER_IMAGE=$(GO_CONTAINER_IMAGE) \ |
| 22 | + --build-arg VERSION=$(VERSION) \ |
| 23 | + --target builder \ |
| 24 | + -t $(IMAGE_NAME)-builder:$(IMAGE_TAG) \ |
| 25 | + . |
| 26 | + $(CONTAINER_RUNTIME) run --rm $(IMAGE_NAME)-builder:$(IMAGE_TAG) go test -v ./... |
| 27 | + |
| 28 | +.PHONY: image-build |
| 29 | +image-build: |
| 30 | + @echo "Building container image: $(IMAGE_FULL)" |
| 31 | + $(CONTAINER_RUNTIME) build \ |
| 32 | + --build-arg GO_CONTAINER_IMAGE=$(GO_CONTAINER_IMAGE) \ |
| 33 | + --build-arg VERSION=$(VERSION) \ |
| 34 | + -t $(IMAGE_FULL) \ |
| 35 | + . |
| 36 | + |
| 37 | +.PHONY: image-push |
| 38 | +image-push: |
| 39 | + @if [ -z "$(IMAGE_REGISTRY)" ]; then \ |
| 40 | + echo "Error: IMAGE_REGISTRY must be set to push images"; \ |
| 41 | + echo "Example: make image-push IMAGE_REGISTRY=ghcr.io/oxidecomputer"; \ |
| 42 | + exit 1; \ |
| 43 | + fi |
| 44 | + @echo "Pushing container image: $(IMAGE_FULL)" |
| 45 | + $(CONTAINER_RUNTIME) push $(IMAGE_FULL) |
0 commit comments