Как собрать Go Module с семантической версией? - PullRequest
1 голос
/ 18 июня 2019

Вот шаги bash, чтобы настроить новый минимальный проект модуля Go с git-репо, зафиксировать его и пометить его аннотированным тегом семантической версии:

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=

Я надеялся увидеть семантическую версию, которой я пометил хранилище. Вместо этого я получил пустышку. Что не так?

...