mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-14 01:15:52 +08:00
refactor(query-service): ♻️ Update ldflags and Makefile for dynamic versioning (#655)
* refactor(query-service): ♻️ Update ldflags and Makefile for dynamic versioning Signed-off-by: Prashant Shahi <prashant@signoz.io> * chore: 🎨 Use blacnk spaces indentation in build details * chore(query-service): 🎨 small build details format changes * refactor(query-service): ♻️ refactor ldflags for go build
This commit is contained in:
parent
ebb1c2ac79
commit
48ac20885f
31
Makefile
31
Makefile
@ -1,7 +1,14 @@
|
|||||||
|
#
|
||||||
# Reference Guide - https://www.gnu.org/software/make/manual/make.html
|
# Reference Guide - https://www.gnu.org/software/make/manual/make.html
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Build variables
|
||||||
|
BUILD_VERSION ?= $(shell git describe --always --tags)
|
||||||
|
BUILD_HASH ?= $(shell git rev-parse --short HEAD)
|
||||||
|
BUILD_TIME ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
BUILD_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
# Internal variables or constants.
|
# Internal variables or constants.
|
||||||
#
|
|
||||||
FRONTEND_DIRECTORY ?= frontend
|
FRONTEND_DIRECTORY ?= frontend
|
||||||
FLATTENER_DIRECTORY ?= pkg/processors/flattener
|
FLATTENER_DIRECTORY ?= pkg/processors/flattener
|
||||||
QUERY_SERVICE_DIRECTORY ?= pkg/query-service
|
QUERY_SERVICE_DIRECTORY ?= pkg/query-service
|
||||||
@ -13,6 +20,15 @@ FRONTEND_DOCKER_IMAGE ?= frontend
|
|||||||
QUERY_SERVICE_DOCKER_IMAGE ?= query-service
|
QUERY_SERVICE_DOCKER_IMAGE ?= query-service
|
||||||
FLATTERNER_DOCKER_IMAGE ?= flattener-processor
|
FLATTERNER_DOCKER_IMAGE ?= flattener-processor
|
||||||
|
|
||||||
|
# Build-time Go variables
|
||||||
|
PACKAGE?=go.signoz.io/query-service
|
||||||
|
buildVersion=${PACKAGE}/version.buildVersion
|
||||||
|
buildHash=${PACKAGE}/version.buildHash
|
||||||
|
buildTime=${PACKAGE}/version.buildTime
|
||||||
|
gitBranch=${PACKAGE}/version.gitBranch
|
||||||
|
|
||||||
|
LD_FLAGS="-X ${buildHash}=${BUILD_HASH} -X ${buildTime}=${BUILD_TIME} -X ${buildVersion}=${BUILD_VERSION} -X ${gitBranch}=${BUILD_BRANCH}"
|
||||||
|
|
||||||
all: build-push-frontend build-push-query-service build-push-flattener
|
all: build-push-frontend build-push-query-service build-push-flattener
|
||||||
# Steps to build and push docker image of frontend
|
# Steps to build and push docker image of frontend
|
||||||
.PHONY: build-frontend-amd64 build-push-frontend
|
.PHONY: build-frontend-amd64 build-push-frontend
|
||||||
@ -47,7 +63,9 @@ build-query-service-amd64:
|
|||||||
@echo "--> Building query-service docker image for amd64"
|
@echo "--> Building query-service docker image for amd64"
|
||||||
@echo "------------------"
|
@echo "------------------"
|
||||||
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
||||||
docker build -f Dockerfile --no-cache -t $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG) . --build-arg TARGETPLATFORM="linux/amd64"
|
docker build -f Dockerfile --no-cache -t $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG) . \
|
||||||
|
--build-arg TARGETPLATFORM="linux/amd64" \
|
||||||
|
--build-arg LD_FLAGS=$(LD_FLAGS)
|
||||||
|
|
||||||
# Step to build and push docker image of query in amd64 and arm64 (used in push pipeline)
|
# Step to build and push docker image of query in amd64 and arm64 (used in push pipeline)
|
||||||
build-push-query-service:
|
build-push-query-service:
|
||||||
@ -56,10 +74,15 @@ build-push-query-service:
|
|||||||
@echo "------------------"
|
@echo "------------------"
|
||||||
ifndef DOCKER_SECOND_TAG
|
ifndef DOCKER_SECOND_TAG
|
||||||
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
||||||
docker buildx build --file Dockerfile --progress plane --no-cache --push --platform linux/arm64,linux/amd64 --tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG) .
|
docker buildx build --file Dockerfile --progress plane --no-cache --push \
|
||||||
|
--platform linux/arm64,linux/amd64 . \
|
||||||
|
--build-arg LD_FLAGS=$(LD_FLAGS) \
|
||||||
|
--tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG)
|
||||||
else
|
else
|
||||||
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
@cd $(QUERY_SERVICE_DIRECTORY) && \
|
||||||
docker buildx build --file Dockerfile --progress plane --no-cache --push --platform linux/arm64,linux/amd64 . \
|
docker buildx build --file Dockerfile --progress plane --no-cache \
|
||||||
|
--push --platform linux/arm64,linux/amd64 . \
|
||||||
|
--build-arg LD_FLAGS=$(LD_FLAGS) \
|
||||||
--tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG) \
|
--tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_TAG) \
|
||||||
--tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_SECOND_TAG)
|
--tag $(REPONAME)/$(QUERY_SERVICE_DOCKER_IMAGE):$(DOCKER_SECOND_TAG)
|
||||||
endif
|
endif
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
FROM golang:1.14-buster AS builder
|
FROM golang:1.14-buster AS builder
|
||||||
|
|
||||||
# Add Maintainer Info
|
# LD_FLAGS is passed as argument from Makefile. It will be empty, if no argument passed
|
||||||
LABEL maintainer="signoz"
|
ARG LD_FLAGS
|
||||||
|
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
ENV CGO_ENABLED=1
|
ENV CGO_ENABLED=1
|
||||||
@ -21,15 +20,22 @@ RUN go mod download -x
|
|||||||
|
|
||||||
# Add the sources and proceed with build
|
# Add the sources and proceed with build
|
||||||
ADD . .
|
ADD . .
|
||||||
RUN go build -a -ldflags "-linkmode external -extldflags '-static' -s -w" -o ./bin/query-service ./main.go
|
RUN go build -a -ldflags "-linkmode external -extldflags '-static' -s -w $LD_FLAGS" -o ./bin/query-service ./main.go
|
||||||
RUN chmod +x ./bin/query-service
|
RUN chmod +x ./bin/query-service
|
||||||
|
|
||||||
|
|
||||||
# use a minimal alpine image
|
# use a minimal alpine image
|
||||||
FROM alpine:3.7
|
FROM alpine:3.7
|
||||||
|
|
||||||
|
# Add Maintainer Info
|
||||||
|
LABEL maintainer="signoz"
|
||||||
|
|
||||||
# add ca-certificates in case you need them
|
# add ca-certificates in case you need them
|
||||||
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
|
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# set working directory
|
# set working directory
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
|
|
||||||
# copy the binary from builder
|
# copy the binary from builder
|
||||||
COPY --from=builder /go/src/github.com/signoz/signoz/pkg/query-service/bin/query-service .
|
COPY --from=builder /go/src/github.com/signoz/signoz/pkg/query-service/bin/query-service .
|
||||||
|
|
||||||
@ -37,7 +43,8 @@ COPY config/prometheus.yml /root/config/prometheus.yml
|
|||||||
|
|
||||||
# run the binary
|
# run the binary
|
||||||
ENTRYPOINT ["./query-service"]
|
ENTRYPOINT ["./query-service"]
|
||||||
|
|
||||||
CMD ["-config", "/root/config/prometheus.yml"]
|
CMD ["-config", "/root/config/prometheus.yml"]
|
||||||
# CMD ["./query-service -config /root/config/prometheus.yml"]
|
# CMD ["./query-service -config /root/config/prometheus.yml"]
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"go.signoz.io/query-service/app"
|
"go.signoz.io/query-service/app"
|
||||||
"go.signoz.io/query-service/constants"
|
"go.signoz.io/query-service/constants"
|
||||||
|
"go.signoz.io/query-service/version"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
@ -31,7 +32,7 @@ func main() {
|
|||||||
defer loggerMgr.Sync() // flushes buffer, if any
|
defer loggerMgr.Sync() // flushes buffer, if any
|
||||||
|
|
||||||
logger := loggerMgr.Sugar()
|
logger := loggerMgr.Sugar()
|
||||||
logger.Debug("STARTING!")
|
version.PrintVersion()
|
||||||
|
|
||||||
serverOptions := &app.ServerOptions{
|
serverOptions := &app.ServerOptions{
|
||||||
// HTTPHostPort: v.GetString(app.HTTPHostPort),
|
// HTTPHostPort: v.GetString(app.HTTPHostPort),
|
||||||
|
@ -1,24 +1,48 @@
|
|||||||
package version
|
package version
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// These fields are set during an official build
|
// These fields are set during an official build
|
||||||
// Global vars set from command-line arguments
|
// Global vars set from command-line arguments
|
||||||
var (
|
var (
|
||||||
version = "--"
|
buildVersion = "--"
|
||||||
buildhash = "--"
|
buildHash = "--"
|
||||||
buildtime = "--"
|
buildTime = "--"
|
||||||
|
gitBranch = "--"
|
||||||
)
|
)
|
||||||
|
|
||||||
//PrintVersionInfo displays the kyverno version - git version
|
// BuildDetails returns a string containing details about the SigNoz query-service binary.
|
||||||
func PrintVersionInfo() {
|
func BuildDetails() string {
|
||||||
zap.S().Info("Version: ", version)
|
licenseInfo := `Licensed under the MIT License`
|
||||||
zap.S().Info("BuildHash: ", buildhash)
|
|
||||||
zap.S().Info("BuildTime: ", buildtime)
|
return fmt.Sprintf(`
|
||||||
|
SigNoz version : %v
|
||||||
|
Commit SHA-1 : %v
|
||||||
|
Commit timestamp : %v
|
||||||
|
Branch : %v
|
||||||
|
Go version : %v
|
||||||
|
|
||||||
|
For SigNoz Official Documentation, visit https://signoz.io/docs
|
||||||
|
For SigNoz Community Slack, visit http://signoz.io/slack
|
||||||
|
For discussions about SigNoz, visit https://community.signoz.io
|
||||||
|
|
||||||
|
%s.
|
||||||
|
Copyright 2022 SigNoz
|
||||||
|
`,
|
||||||
|
buildVersion, buildHash, buildTime, gitBranch,
|
||||||
|
runtime.Version(), licenseInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrintVersion prints version and other helpful information.
|
||||||
|
func PrintVersion() {
|
||||||
|
zap.S().Infof("\n%s\n", BuildDetails())
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetVersion() string {
|
func GetVersion() string {
|
||||||
return version
|
return buildVersion
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user