GO · Hello World
빌드 & 배포 자동화
Makefile과 go build 플래그를 조합하여 빌드/테스트/배포를 자동화합니다. 버전 정보를 -ldflags로 바이너리에 주입합니다.
Hello World중급buildldflagsmakefiledeploy
핵심 설명
Makefile과 go build 플래그를 조합하여 빌드/테스트/배포를 자동화합니다. 버전 정보를 -ldflags로 바이너리에 주입합니다.
Go code
package main
import "fmt"
// -ldflags로 주입되는 변수
var (
Version = "dev"
BuildTime = "unknown"
GitCommit = "none"
)
func main() {
fmt.Printf("Version: %s\n", Version)
fmt.Printf("BuildTime: %s\n", BuildTime)
fmt.Printf("GitCommit: %s\n", GitCommit)
// Makefile 예시:
// build:
// go build -ldflags "-X main.Version=1.0.0 \
// -X main.BuildTime=$(date -u +%Y%m%d%H%M%S) \
// -X main.GitCommit=$(git rev-parse --short HEAD)" \
// -o bin/app ./cmd/server
}학습 팁
-ldflags의 -X 플래그는 main.변수명=값 형식으로 문자열 변수만 주입할 수 있습니다. 패키지 경로를 정확히 지정하세요.
주의할 점
-ldflags에서 변수 이름을 패키지 경로 없이 쓰면 주입되지 않습니다. main.Version처럼 전체 경로를 사용하세요.
자주 묻는 질문
빌드 & 배포 자동화란 무엇인가요?
Makefile과 go build 플래그를 조합하여 빌드/테스트/배포를 자동화합니다. 버전 정보를 -ldflags 로 바이너리에 주입합니다.
빌드 & 배포 자동화 학습 시 주의할 점은 무엇인가요?
-ldflags 에서 변수 이름을 패키지 경로 없이 쓰면 주입되지 않습니다. main.Version 처럼 전체 경로를 사용하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.