[英]How to build Go Module with a semantic version?
以下是使用 git repo 設置新的最小 Go 模塊項目的 bash 步驟,提交它,並使用帶注釋的語義版本標簽對其進行標記:
mkdir gotest
cd gotest
git init
go mod init test.org/simple
cat <<EOT >> app.go
package main
import (
"fmt"
"runtime/debug"
)
func main() {
fmt.Println("hello world")
if bi, ok := debug.ReadBuildInfo(); ok {
fmt.Printf("version=%v. sum=%v\n", bi.Main.Version, bi.Main.Sum)
} else {
fmt.Println("Failed to get build info")
}
}
EOT
echo "simple" >> .gitignore
git add go.mod app.go .gitignore
git commit -am "initial commit"
git tag -am "initial semantic version" v0.1.0
快速驗證它是否正確標記:
git tag -n
git describe --dirty
構建並運行:
go build
./simple
這產生:
hello world
version=(devel). sum=
我希望看到我標記存儲庫的語義版本。 相反,我得到了虛擬占位符版本。 怎么了?
go
命令不會查詢版本控制來確定您的存儲庫是否是語義版本(即https://golang.org/issue/29228 )的原始檢出。
如果您使用其他模塊作為主模塊構建二進制文件,那么go
命令應該知道正在使用的模塊版本並將其嵌入到生成的二進制文件中:
go.mod
:
module example.com/other
require test.org/simple v0.1.0
go build test.org/simple && ./simple
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.