Files
gophercon-africa-2024/Makefile
T
Rodney Osodo b4369be774 fix(docker): change docker image name
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
2024-10-17 20:59:47 +03:00

79 lines
1.8 KiB
Makefile

CGO_ENABLED ?= 0
GOOS ?= $(shell go env GOOS)
GOARCH ?= $(shell go env GOARCH)
GOARM ?= $(shell go env GOARM)
BUILD_DIR ?= ./build
SVC = gophercon
DOCKER_IMAGE_NAME ?= ghcr.io/rodneyosodo/gophercon-africa-2024
VERSION ?= $(shell git describe --abbrev=0 --tags 2>/dev/null || echo 'v0.0.0')
define compile_service
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) \
go build -ldflags "-s -w " -o ${BUILD_DIR}/$(SVC) cmd/main.go
endef
define make_docker
docker build \
--build-arg SVC=$(SVC) \
--no-cache \
--tag=$(DOCKER_IMAGE_NAME):$(VERSION) \
--tag=$(DOCKER_IMAGE_NAME):latest \
-f Dockerfile .
endef
define docker_push
docker push $(DOCKER_IMAGE_NAME):$(VERSION)
docker push $(DOCKER_IMAGE_NAME):latest
endef
.PHONY: build
build:
@mkdir -p ${BUILD_DIR}
$(call compile_service)
.PHONY: clean
clean:
rm -rf ${BUILD_DIR}
.PHONY: docker
docker: build
$(call make_docker)
.PHONY: docker-push
docker-push: docker
$(call docker_push)
.PHONY: run-binary
run-binary:
@go run cmd/main.go
.PHONY: run-docker
run-docker:
docker compose --env-file .env up
.PHONY: proto
proto:
@protoc -I. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative calculator/calculator.proto
.PHONY: lint
lint:
@golangci-lint run --config .golangci.yaml
.PHONY: all
all: build docker
.PHONY: help
help:
@echo "Makefile for gophercon"
@echo "Usage:"
@echo " make build - Build the binary"
@echo " make docker - Build the docker image"
@echo " make docker-push - Push the docker image"
@echo " make run-binary - Run the binary"
@echo " make run-docker - Run the docker image"
@echo " make proto - Generate protobuf files"
@echo " make lint - Lint the code"
@echo " make all - Build the binary and docker image"
@echo " make clean - Clean the build directory"