mirror of
https://github.com/rodneyosodo/gophercon-africa-2024.git
synced 2026-06-23 04:10:06 +00:00
b4369be774
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
79 lines
1.8 KiB
Makefile
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"
|