govvv

by ahmetb

ahmetb /govvv

"go build" wrapper to add version info to Golang applications

456 Stars 27 Forks Last release: about 4 years ago (v0.2.0) Apache License 2.0 58 Commits 3 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

govvv

The simple Go binary versioning tool that wraps the

go build
command.

Stop worrying about

-ldflags
and
go get github.com/ahmetb/govvv
now.

Build Variables

| Variable | Description | Example | |----------|-------------|---------| |

main.GitCommit
| short commit hash of source tree |

0b5ed7a
| |
main.GitBranch
| current branch name the code is built off |
master
| |
main.GitState
| whether there are uncommitted changes |
clean
or
dirty
| |
main.GitSummary
| output of
git describe --tags --dirty --always
|
v1.0.0
,
v1.0.1-5-g585c78f-dirty
,
fbd157c
| |
main.BuildDate
| RFC3339 formatted UTC date |
2016-08-04T18:07:54Z
| |
main.Version
| contents of
./VERSION
file, if exists, or the value passed via the
-version
option |
2.0.0
|

Using govvv is easy

Just add the build variables you want to the

main
package and run:

| old | :sparkles: new :sparkles: | | -------------|-----------------| |

go build
|
govvv build
| |
go install
|
govvv install
|

Version your app with govvv

Create a

VERSION
file in your build root directory and add a
Version
variable to your
main
package.

Do you have your own way of specifying

Version
? No problem:

govvv lets you specify custom
-ldflags

Your existing

-ldflags
argument will still be preserved:
govvv build -ldflags "-X main.BuildNumber=$buildnum" myapp

and the

-ldflags
constructed by govvv will be appended to your flag.

Don’t want to depend on
govvv
? It’s fine!

You can just pass a

-print
argument and
govvv
will just print the
go build
command with
-ldflags
for you and will not execute the go tool:
$ govvv build -print
go build \
    -ldflags \
    "-X main.GitCommit=57b9870 -X main.GitBranch=dry-run -X main.GitState=dirty -X main.Version=0.1.0 -X main.BuildDate=2016-08-08T20:50:21Z"

Still don’t want to wrap the

go
tool? Well, try
-flags
to retrieve the LDFLAGS govvv prepares:
$ go build -ldflags="$(govvv -flags)"

Want to use a different package?

You can pass a

-pkg
argument with the full package name, and
govvv
will set the build variables in that package instead of
main
. For example:
# build with govvv
$ govvv build -pkg github.com/myacct/myproj/mypkg

build with go

$ go build -ldflags="$(govvv -flags -pkg $(go list ./mypkg))"

Want to use a different version?

You can pass a

-version
argument with the desired version, and
govvv
will use the specified version instead of obtaining it from the
./VERSION
file. For example:
# build with govvv
$ govvv build -version 1.2.3

build with go

$ go build -ldflags="$(govvv -flags -version 1.2.3)"

Try govvv today

$ go get github.com/ahmetb/govvv

govvv is distributed under Apache 2.0 License.

Copyright 2016 Ahmet Alp Balkan


Build Status

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.