[feat](build): add versioned Docker image build script and version injection

- Introduced `tools/build_server_image.sh` for building versioned server images with support for multi-arch builds.
- Added `VERSION` injection via `-ldflags` in Dockerfile and Go binaries for both server and client.
- Updated workflows and Makefile to ensure consistent version tagging during builds.
This commit is contained in:
dalbodeule
2025-12-09 18:41:00 +09:00
parent 3402616c3e
commit 1336c540d0
6 changed files with 63 additions and 3 deletions

View File

@@ -15,6 +15,10 @@ import (
"github.com/dalbodeule/hop-gate/internal/proxy"
)
// version 은 빌드 시 -ldflags "-X main.version=xxxxxxx" 로 덮어쓰이는 필드입니다.
// 기본값 "dev" 는 로컬 개발용입니다.
var version = "dev"
func getEnvOrPanic(logger logging.Logger, key string) string {
value, exists := os.LookupEnv(key)
if !exists || strings.TrimSpace(value) == "" {
@@ -124,6 +128,7 @@ func main() {
logger.Info("hop-gate client starting", logging.Fields{
"stack": "prometheus-loki-grafana",
"version": version,
"server_addr": finalCfg.ServerAddr,
"domain": finalCfg.Domain,
"local_target": finalCfg.LocalTarget,

View File

@@ -29,6 +29,10 @@ import (
"github.com/dalbodeule/hop-gate/internal/store"
)
// version 은 빌드 시 -ldflags "-X main.version=xxxxxxx" 로 덮어쓰이는 필드입니다.
// 기본값 "dev" 는 로컬 개발용입니다.
var version = "dev"
type dtlsSessionWrapper struct {
sess dtls.Session
mu sync.Mutex
@@ -815,6 +819,7 @@ func main() {
logger.Info("hop-gate server starting", logging.Fields{
"stack": "prometheus-loki-grafana",
"version": version,
"http_listen": cfg.HTTPListen,
"https_listen": cfg.HTTPSListen,
"dtls_listen": cfg.DTLSListen,