Stamp the tag or short commit in a plain docker build (closes #211)
A plain `docker build .` stamped `dev`: `.dockerignore` left out `.git` and the Dockerfile defaulted VERSION to `dev`. `.dockerignore` now sends `.git` without `.git/config`. Given no build arguments, the builder stamps `git describe --tags --always` and the commit and date from git, and fails if `.git` is present but yields no version. The empty CHECK_EPOCH refusal is gone so the plain build succeeds. `script/version` now prints `git describe --tags --always --dirty`, so make, the scripts and a plain build agree. `vaultik version` treats the short commit, tag-N-gHASH forms and any version ending in `-dirty` as development builds, so they keep the development-build notice. Model: opus-5-5
This commit was merged in pull request #212.
This commit is contained in:
@@ -34,10 +34,11 @@ func TestGlobalsNew(t *testing.T) {
|
||||
}
|
||||
|
||||
// TestIsDevVersion covers the boundary that matters: everything
|
||||
// script/version and goreleaser's snapshot template can emit for an
|
||||
// untagged build must be recognised as a development build, and a real
|
||||
// tag must not be. A plain equality check against "dev" used to decide
|
||||
// this, which classified every commit-stamped dev build as a release.
|
||||
// script/version, a plain docker build and goreleaser's snapshot
|
||||
// template can emit for an untagged build must be recognised as a
|
||||
// development build, and a real tag must not be. A plain equality check
|
||||
// against "dev" used to decide this, which classified every
|
||||
// commit-stamped dev build as a release.
|
||||
func TestIsDevVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@@ -49,8 +50,17 @@ func TestIsDevVersion(t *testing.T) {
|
||||
{"dev", true},
|
||||
{"dev-b6e4a218a39e", true},
|
||||
{"dev-b6e4a218a39e-dirty", true},
|
||||
// What a tagged build produces (script/version strips the
|
||||
// leading "v", matching goreleaser's .Version).
|
||||
// What `git describe --tags --always --dirty` produces with no
|
||||
// tag reachable, and on a commit after a tag.
|
||||
{"877eb2f", true},
|
||||
{"877eb2f-dirty", true},
|
||||
{"v1.0.0-3-g877eb2f", true},
|
||||
{"v1.0.0-3-g877eb2f-dirty", true},
|
||||
{"1.0.0-rc.1-12-g877eb2f", true},
|
||||
// A tagged commit with uncommitted changes is not that tag.
|
||||
{"v1.0.0-dirty", true},
|
||||
// What a tagged build produces (goreleaser's .Version strips
|
||||
// the leading "v"; script/version keeps it).
|
||||
{"1.0.0", false},
|
||||
{"0.1.0", false},
|
||||
{"1.0.0-rc.1", false},
|
||||
|
||||
Reference in New Issue
Block a user