# must create a .env file with info # must have compose installed include .env export OS:=${shell go env GOOS} ARCH=$(shell go env GOARCH) OOSS="linux" ARRCHS="arm 386" DEBUG=1 SERVICE=dolar-grpc VERSION=0.0.0_7 BINAME=$(SERVICE)-$(OS)-amd64-$(VERSION) BINAMEARM=$(SERVICE)-$(OS)-arm64-$(VERSION) # can be docker or podman or whatever CONTAINERS=docker COMPOSE=$(CONTAINERS)-compose # Configure local registry REGADDR=git.maximotejeda.com/maximo # K8SRSNAME=$(shell kubectl get rs --no-headers -o custom-columns=":metadata.name" | grep $(SERVICE)) .phony: all clean build test clean-image build-image build-image-debug run-image run-image-debug run-local build-image: build # here we made the images and push to registry with buildx @$(CONTAINERS) buildx build --build-arg="BINAME=$(BINAMEARM)" --platform linux/arm64 --push -t $(REGADDR)/$(SERVICE):latest . # Here we upload it to local build-test-image: @$(CONTAINERS) buildx build --build-arg="BINAME=$(BINAMEARM)" --platform linux/arm64 --push -t $(REGADDR)/$(SERVICE):latest . run-image: build-image @$(CONTAINERS) compose -f docker-compose.yaml up build-image-debug: clean @$(CONTAINERS) compose -f docker-compose-debug.yaml build run-image-debug: build-image-debug @$(CONTAINERS) compose -f docker-compose-debug.yaml up run-local:clean build @bin/$(BINAME) build: clean #@mkdir dolardb @protoc -I ./proto --go_out ./proto/golang --go_opt paths=source_relative --go-grpc_out ./proto/golang --go-grpc_opt paths=source_relative ./proto/dolar/dolar.proto @env CGO_ENABLED=0 GOOS=$(OS) GOARCH=amd64 go build -o ./bin/$(BINAME) ./cmd/. @env CGO_ENABLED=0 GOOS=$(OS) GOARCH=arm64 go build -o ./bin/$(BINAMEARM) ./cmd/. create-descriptors: @envsubst < k8s/deployment.yml.template > k8s/deployment.yml deploy: build-image create-descriptors @kubectl apply -f k8s/deployment.yml @kubectl scale rs $(K8SRSNAME) --replicas=0 @kubectl scale rs $(K8SRSNAME) --replicas=1 test: @go -count=1 test ./... clean: @rm -rf ./bin clean-image: @$(CONTAINERS) system prune -f