Skip to content

Commit

Permalink
Improve logs and error handling in the storage package
Browse files Browse the repository at this point in the history
  • Loading branch information
demdxx committed Apr 22, 2024
1 parent ad7b4c0 commit f6e6e17
Show file tree
Hide file tree
Showing 10 changed files with 1,586 additions and 227 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Run linters
uses: golangci/golangci-lint-action@v3
with:
version: v1.56.2
version: v1.57
skip-cache: true
args: --fix

Expand Down
126 changes: 2 additions & 124 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,83 +1,14 @@
include .env
export

SHELL := /bin/bash -o pipefail
include deploy/build.mk

BUILD_GOOS ?= $(or ${DOCKER_DEFAULT_GOOS},linux)
BUILD_GOARCH ?= $(or ${DOCKER_DEFAULT_GOARCH},amd64)
# https://github.com/golang/go/wiki/MinimumRequirements#amd64
BUILD_GOAMD64 ?= $(or ${DOCKER_DEFAULT_GOAMD64},1)
BUILD_GOAMD64_LIST ?= $(or ${DOCKER_DEFAULT_GOAMD64_LIST},1)
BUILD_GOARM ?= $(or ${DOCKER_DEFAULT_GOARM},7)
BUILD_GOARM_LIST ?= 6 7
BUILD_CGO_ENABLED ?= 0
DOCKER_BUILDKIT ?= 1

LOCAL_TARGETPLATFORM=${BUILD_GOOS}/${BUILD_GOARCH}
ifeq (${BUILD_GOARCH},arm)
LOCAL_TARGETPLATFORM=${BUILD_GOOS}/${BUILD_GOARCH}/v${BUILD_GOARM}
endif

COMMIT_NUMBER ?= $(or ${DEPLOY_COMMIT_NUMBER},)
ifeq (${COMMIT_NUMBER},)
COMMIT_NUMBER = $(shell git log -1 --pretty=format:%h)
endif

TAG_VALUE ?= $(or ${DEPLOY_TAG_VALUE},)
ifeq (${TAG_VALUE},)
TAG_VALUE = $(shell git describe --exact-match --tags `git log -n1 --pretty='%h'`)
endif
ifeq (${TAG_VALUE},)
TAG_VALUE = commit-${COMMIT_NUMBER}
endif

OS_LIST ?= $(or ${DEPLOY_OS_LIST},linux darwin)
ARCH_LIST ?= $(or ${DEPLOY_ARCH_LIST},amd64 arm64 arm)
APP_TAGS ?= $(or ${APP_BUILD_TAGS},pgx)

export GO111MODULE := on
export PATH := $(GOBIN):$(PATH)
export GOSUMDB := off
export GOFLAGS=-mod=mod
# Go 1.13 defaults to TLS 1.3 and requires an opt-out. Opting out for now until certs can be regenerated before 1.14
# https://golang.org/doc/go1.12#tls_1_3
export GODEBUG := tls13=0

define build_platform_list
for os in $(OS_LIST); do \
for arch in $(ARCH_LIST); do \
if [ "$$os/$$arch" != "darwin/arm" ]; then \
if [ "$$arch" = "arm" ]; then \
for armv in $(BUILD_GOARM_LIST); do \
i="$${os}/$${arch}/v$${armv}"; \
echo -n "$${i},"; \
done; \
else \
if [ "$$arch" = "amd64" ]; then \
for amd64v in $(BUILD_GOAMD64_LIST); do \
if [ "$$amd64v" == "1" ]; then \
i="$${os}/$${arch}"; \
else \
i="$${os}/$${arch}/v$${amd64v}"; \
fi; \
echo -n "$${i},"; \
done; \
else \
i="$${os}/$${arch}"; \
echo -n "$${i},"; \
fi; \
fi; \
fi; \
done; \
done;
endef
SHELL := /bin/bash -o pipefail

PROJECT_WORKSPACE := redify
DOCKER_COMPOSE := docker-compose -p $(PROJECT_WORKSPACE) -f deploy/develop/docker-compose.yml
DOCKER_BUILDKIT := 1
CONTAINER_IMAGE := demdxx/redify
DOCKER_PLATFORM_LIST := $(shell $(call build_platform_list))
DOCKER_PLATFORM_LIST := $(shell echo $(DOCKER_PLATFORM_LIST) | sed 's/.$$//')


.PHONY: generate-code
Expand Down Expand Up @@ -124,58 +55,6 @@ run: ## Run current server
go run -tags ${APP_TAGS} cmd/main.go


define do_build
@for os in $(OS_LIST); do \
for arch in $(ARCH_LIST); do \
if [ "$$os/$$arch" != "darwin/arm" ]; then \
if [ "$$arch" = "arm64" ]; then \
echo "Build $$os/$$arch/v8"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v8/$(2) $(1); \
cp .build/$$os/$$arch/v8/$(2) .build/$$os/$$arch/$(2); \
else \
if [ "$$arch" = "arm" ]; then \
for armv in $(BUILD_GOARM_LIST); do \
echo "Build $$os/$$arch/v$$armv"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOARM=$$armv \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v$$armv/$(2) $(1); \
done; \
else \
if [ "$$arch" = "amd64" ]; then \
for amd64v in $(BUILD_GOAMD64_LIST); do \
if [ "$$amd64v" == "1" ]; then \
echo "Build $$os/$$arch -> v1"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOAMD64=v$$amd64v \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/$(2) $(1); \
else \
echo "Build $$os/$$arch/v$$amd64v"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOAMD64=v$$amd64v \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v$$amd64v/$(2) $(1); \
fi; \
done; \
else \
echo "Build $$os/$$arch"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/$(2) $(1); \
fi; \
fi; \
fi; \
fi; \
done; \
done
endef


.PHONY: build
build: ## Build application
@echo "Build application"
Expand All @@ -187,7 +66,6 @@ build: ## Build application
build-docker-dev: build
echo "Build develop docker image"
DOCKER_BUILDKIT=${DOCKER_BUILDKIT} docker build \
--build-arg TARGETPLATFORM=${LOCAL_TARGETPLATFORM} \
-t ${CONTAINER_IMAGE}:latest -f deploy/develop/Dockerfile .


Expand Down
162 changes: 162 additions & 0 deletions deploy/build.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@

## Detect OS
OSS=$(shell uname)
ifeq ($(OSS),Windows_NT)
OSS=windows
endif
ifeq ($(OSS),Linux)
OSS=linux
endif
ifeq ($(OSS),Darwin)
OSS=darwin
endif

## Detect processor ARCH
ARCH=$(shell uname -m)
ARMV=7
ifeq ($(ARCH),x86_64)
ARCH=amd64
endif
ifeq ($(ARCH),i386)
ARCH=386
endif
ifeq ($(ARCH),i686)
ARCH=386
endif
ifeq ($(ARCH),aarch64)
ARCH=arm64
endif
ifeq ($(ARCH),armv7l)
ARCH=arm
ARMV=7
endif
ifeq ($(ARCH),armv6l)
ARCH=arm
ARMV=6
endif
ifeq ($(ARCH),armv5l)
ARCH=arm
endif

SHELL := /bin/bash -o pipefail

BUILD_GOOS ?= $(or ${DOCKER_DEFAULT_GOOS},${OSS})
BUILD_GOARCH ?= $(or ${DOCKER_DEFAULT_GOARCH},${ARCH})
# https://github.com/golang/go/wiki/MinimumRequirements#amd64
BUILD_GOAMD64 ?= $(or ${DOCKER_DEFAULT_GOAMD64},1)
BUILD_GOAMD64_LIST ?= $(or ${DOCKER_DEFAULT_GOAMD64_LIST},1)
BUILD_GOARM ?= $(or ${DOCKER_DEFAULT_GOARM},7)
BUILD_GOARM_LIST ?= $(or ${DOCKER_DEFAULT_BUILD_GOARM_LIST},${BUILD_GOARM})
BUILD_CGO_ENABLED ?= 0
DOCKER_BUILDKIT ?= 1

LOCAL_TARGETPLATFORM=${BUILD_GOOS}/${BUILD_GOARCH}
ifeq (${BUILD_GOARCH},arm)
LOCAL_TARGETPLATFORM=${BUILD_GOOS}/${BUILD_GOARCH}/v${BUILD_GOARM}
endif
ifeq (${BUILD_GOARCH},arm64)
LOCAL_TARGETPLATFORM=${BUILD_GOOS}/${BUILD_GOARCH}/v8
endif

COMMIT_NUMBER ?= $(or ${DEPLOY_COMMIT_NUMBER},)
ifeq (${COMMIT_NUMBER},)
COMMIT_NUMBER = $(shell git log -1 --pretty=format:%h)
endif

TAG_VALUE ?= $(or ${DEPLOY_TAG_VALUE},)
ifeq (${TAG_VALUE},)
TAG_VALUE = $(shell git describe --exact-match --tags `git log -n1 --pretty='%h'` 2>/dev/null)
endif
ifeq (${TAG_VALUE},)
TAG_VALUE = commit-${COMMIT_NUMBER}
endif

OS_LIST ?= $(or ${DEPLOY_OS_LIST},linux darwin)
ARCH_LIST ?= $(or ${DEPLOY_ARCH_LIST},amd64 arm64 arm)
APP_TAGS ?= $(or ${APP_BUILD_TAGS},pgx)

# Prepare the list of platforms to build
define build_platform_list
for os in $(OS_LIST); do \
for arch in $(ARCH_LIST); do \
if [ "$$os/$$arch" != "darwin/arm" ]; then \
if [ "$$arch" = "arm" ]; then \
for armv in $(BUILD_GOARM_LIST); do \
i="$${os}/$${arch}/v$${armv}"; \
echo -n "$${i},"; \
done; \
else \
if [ "$$arch" = "amd64" ]; then \
for amd64v in $(BUILD_GOAMD64_LIST); do \
if [ "$$amd64v" == "1" ]; then \
i="$${os}/$${arch}"; \
else \
i="$${os}/$${arch}/v$${amd64v}"; \
fi; \
echo -n "$${i},"; \
done; \
else \
i="$${os}/$${arch}"; \
echo -n "$${i},"; \
fi; \
fi; \
fi; \
done; \
done;
endef

# Extract the list of platforms to build
DOCKER_PLATFORM_LIST := $(shell $(call build_platform_list))
DOCKER_PLATFORM_LIST := $(shell echo $(DOCKER_PLATFORM_LIST) | sed 's/.$$//')

# Build for all platforms from build_platform_list
define do_build
@for os in $(OS_LIST); do \
for arch in $(ARCH_LIST); do \
if [ "$$os/$$arch" != "darwin/arm" ]; then \
if [ "$$arch" = "arm64" ]; then \
echo "Build $$os/$$arch/v8"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v8/$(2) $(1); \
cp .build/$$os/$$arch/v8/$(2) .build/$$os/$$arch/$(2); \
else \
if [ "$$arch" = "arm" ]; then \
for armv in $(BUILD_GOARM_LIST); do \
echo "Build $$os/$$arch/v$$armv"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOARM=$$armv \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v$$armv/$(2) $(1); \
done; \
else \
if [ "$$arch" = "amd64" ]; then \
for amd64v in $(BUILD_GOAMD64_LIST); do \
if [ "$$amd64v" == "1" ]; then \
echo "Build $$os/$$arch -> v1"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOAMD64=v$$amd64v \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/$(2) $(1); \
else \
echo "Build $$os/$$arch/v$$amd64v"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} GOAMD64=v$$amd64v \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/v$$amd64v/$(2) $(1); \
fi; \
done; \
else \
echo "Build $$os/$$arch"; \
GOOS=$$os GOARCH=$$arch CGO_ENABLED=${BUILD_CGO_ENABLED} \
go build \
-ldflags "-s -w -X main.appVersion=`date -u +%Y%m%d` -X main.buildCommit=${COMMIT_NUMBER} -X main.buildVersion=${TAG_VALUE} -X main.buildDate=`date -u +%Y%m%d.%H%M%S`" \
-tags "${APP_TAGS}" -o .build/$$os/$$arch/$(2) $(1); \
fi; \
fi; \
fi; \
fi; \
done; \
done
endef

0 comments on commit f6e6e17

Please sign in to comment.