IMAGE_NAME ?= ravenclaws
REGISTRY ?= ghcr.io/egkristi
VERSION ?= $(shell cargo metadata --format-version 1 --no-deps | \
python3 -c "import sys,json; print(json.load(sys.stdin)['packages'][0]['version'])" 2>/dev/null || echo "dev")
.PHONY: help build buildx scan sbom clean
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
build:
docker build -t $(IMAGE_NAME):latest .
buildx:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t $(IMAGE_NAME):latest \
-t $(REGISTRY)/$(IMAGE_NAME):$(VERSION) \
--load \
.
push:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t $(REGISTRY)/$(IMAGE_NAME):latest \
-t $(REGISTRY)/$(IMAGE_NAME):$(VERSION) \
--push \
.
scan:
trivy image --severity CRITICAL,HIGH --exit-code 1 $(IMAGE_NAME):latest
sbom:
syft $(IMAGE_NAME):latest -o spdx-json=sbom.spdx.json
compose-up:
docker compose up -d
compose-down:
docker compose down
compose-logs:
docker compose logs -f
clean:
docker builder prune -f