Documentation
¶
Overview ¶
Package version 애플리케이션의 빌드 및 버저닝 정보를 관리하는 패키지입니다.
시스템의 빌드 시점(Build-Time)에 주입된 메타데이터(버전, 커밋 해시, 빌드 시간 등)와 실행 시점(Run-Time)의 환경 정보(Go 버전, OS, 아키텍처)를 통합하여 제공합니다.
주요 기능:
- 빌드 정보 주입: 링커 플래그(-ldflags)를 통해 외부에서 버전을 주입받습니다.
- 런타임 정보 통합: 실행 환경의 정보를 자동으로 감지하여 추가합니다.
- Thread-Safe 접근: 전역적으로 안전하게 정보를 조회할 수 있는 메서드를 제공합니다.
Example ¶
// 1. 빌드 정보 조회
// 실제 환경에서 버전 정보는 링커 플래그(-ldflags)를 통해 주입됩니다.
// 따라서 별도의 설정 없이 Get() 함수를 호출하여 안전하게 정보를 조회할 수 있습니다.
current := Get()
// 예시 출력을 위한 가상 데이터 설정 (실제 코드에서는 불필요)
// 이 부분은 문서화된 예제 실행을 위해 임의로 값을 보여주는 것입니다.
if current.Version == "unknown" {
fmt.Printf("App Version: %s\n", current.Version)
} else {
// 테스트 환경에 따라 버전이 다를 수 있으므로 포맷만 확인
fmt.Printf("App Version: <checked>\n")
}
Output: App Version: unknown
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Info ¶
type Info struct {
Version string `json:"version"` // 애플리케이션의 버전 (예: v1.0.1-155-gf25b8bf)
Commit string `json:"commit"` // Git 커밋 해시 (예: f25b8bf)
BuildDate string `json:"build_date"` // 빌드 날짜 (ISO 8601 형식 권장, 예: "2025-12-05T11:30:00Z")
BuildNumber string `json:"build_number"` // CI/CD 빌드 번호 (예: "456")
GoVersion string `json:"go_version"` // 빌드에 사용된 Go 컴파일러 버전 (예: "go1.21.0")
OS string `json:"os"` // 실행 중인 운영체제 (예: "linux", "darwin", "windows")
Arch string `json:"arch"` // 실행 중인 시스템 아키텍처 (예: "amd64")
DirtyBuild bool `json:"dirty_build"` // 빌드 시점에 로컬 소스코드에서 변경사항이 있었는지의 여부
}
Info 애플리케이션의 빌드 정보를 담고 있습니다.
이 구조체는 애플리케이션의 버전, 빌드 날짜, 빌드 번호 등의 메타데이터를 저장합니다. 주로 /version API 엔드포인트나 로그 출력에 사용됩니다.
Click to show internal directories.
Click to hide internal directories.