簡體   English   中英

如何使用語義版本構建 Go Module?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM