PHpullh
학습 라이브러리/Go/빌드 & 배포 자동화

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 처럼 전체 경로를 사용하세요.