diff options
author | Jason Plum <jplum@gitlab.com> | 2019-01-26 00:05:17 +0300 |
---|---|---|
committer | Jason Plum <jplum@gitlab.com> | 2019-02-13 17:00:17 +0300 |
commit | c4953a57bb7dcb053d887d34c60cbdfec3f5757a (patch) | |
tree | 6a07f9fdacffa335d64f2f6634d0d0211f19cbfc | |
parent | 532be49f10424e7dd86837052382635c0140aaf9 (diff) |
Use VERSION file to detect version as fallback
This ensures a proper version is generated in the event of
building from non-git source.
- Attempt existing detection from git
- Attempt to read `VERSION` (`../VERSION` when in `_build/`)
- If both fail, use `unknown`
Refact `GitalyMake::VersionPrefixed` to make to call
`gm.VersionFromGit`, if that returns `unknown`, call
`gm.VersionFromFile`, and return whatever that does.
`VersionFromGit` takes the original functionality of `VersionPrefixed`,
and `VersionFromFile` looks for `../VERSION` file.
-rw-r--r-- | _support/makegen.go | 27 | ||||
-rw-r--r-- | changelogs/unreleased/1365-version-fallback-file.yml | 5 |
2 files changed, 27 insertions, 5 deletions
diff --git a/_support/makegen.go b/_support/makegen.go index c381b149b..f4685760a 100644 --- a/_support/makegen.go +++ b/_support/makegen.go @@ -145,21 +145,38 @@ func (gm *gitalyMake) GoLdFlags() string { return fmt.Sprintf("-ldflags '-X %s/internal/version.version=%s -X %s/internal/version.buildtime=%s'", gm.Pkg(), gm.Version(), gm.Pkg(), gm.BuildTime()) } -func (gm *gitalyMake) VersionPrefixed() string { - if len(gm.versionPrefixed) > 0 { - return gm.versionPrefixed +func (gm *gitalyMake) VersionFromFile() string { + data, err := ioutil.ReadFile("../VERSION") + if err != nil { + log.Printf("Error: %v", err) + log.Printf("Unable to obtain version from VERSION file.") + return "unknown" } + return fmt.Sprintf("v%s",strings.TrimSpace(string(data))) +} +func (gm *gitalyMake) VersionFromGit() string { cmd := exec.Command("git", "describe") cmd.Stderr = os.Stderr out, err := cmd.Output() if err != nil { log.Printf("%s: %v", strings.Join(cmd.Args, " "), err) - gm.versionPrefixed = "unknown" + return "unknown" + } + return strings.TrimSpace(string(out)) +} + +func (gm *gitalyMake) VersionPrefixed() string { + if len(gm.versionPrefixed) > 0 { return gm.versionPrefixed } - gm.versionPrefixed = strings.TrimSpace(string(out)) + version := gm.VersionFromGit() + if version == "unknown" { + log.Printf("Unable to determine version from Git. Attempting VERSION file") + version = gm.VersionFromFile() + } + gm.versionPrefixed = version return gm.versionPrefixed } diff --git a/changelogs/unreleased/1365-version-fallback-file.yml b/changelogs/unreleased/1365-version-fallback-file.yml new file mode 100644 index 000000000..3f0080715 --- /dev/null +++ b/changelogs/unreleased/1365-version-fallback-file.yml @@ -0,0 +1,5 @@ +--- +title: Allow version detection from file, if git fails +merge_request: 1056 +author: +type: fixed |