# Переменные # Имя бинарника (измените на ваше) BINARY_NAME := learn # Выходной каталог BUILD_DIR := bin # Директория с конфигами (например, config.yaml) CONFIG_DIR := config # Все Go-файлы GO_SRC := $(shell find . -name '*.go') GO_MOD := go.mod go.sum VERSION := $(shell git describe --tags --always) # Цель по умолчанию: сборка all: build # Сборка бинарника и копирование файлов build: $(BUILD_DIR)/$(BINARY_NAME) @echo "Build completed" $(BUILD_DIR)/$(BINARY_NAME): $(GO_SRC) $(GO_MOD) @mkdir -p $(BUILD_DIR) # Измените ./cmd/myapp на путь к main.go CGO_ENABLED=0 GOARCH=amd64 go build -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/app/main.go # Копируем конфиги (добавьте другие файлы по аналогии, e.g. cp static/* $(BUILD_DIR)/) @mkdir $(BUILD_DIR)/$(CONFIG_DIR)/ @cp -r $(CONFIG_DIR)/*.yml $(BUILD_DIR)/$(CONFIG_DIR)/ # Тестирование test: go test -v ./... # Очистка clean: rm -rf $(BUILD_DIR) go clean # Docker-сборка (пример, если нужно собрать образ) docker-build: build docker build -t $(BINARY_NAME):latest -f Dockerfile . docker build -t $(BINARY_NAME):$(VERSION) -f Dockerfile . .PHONY: all build test clean docker-build