浏览代码

Merge pull request #32187 from tianon/tini-version-parsing

Update "tini --version" parsing to be more forgiving of Tini's output format (release build vs git build)
Sebastiaan van Stijn 8 年之前
父节点
当前提交
d9c4261964
共有 1 个文件被更改,包括 14 次插入11 次删除
  1. 14 11
      daemon/info_unix.go

+ 14 - 11
daemon/info_unix.go

@@ -56,20 +56,23 @@ func (daemon *Daemon) FillPlatformInfo(v *types.Info, sysInfo *sysinfo.SysInfo)
 
 	v.InitCommit.Expected = dockerversion.InitCommitID
 	if rv, err := exec.Command(DefaultInitBinary, "--version").Output(); err == nil {
+		// examples of how Tini outputs version info:
+		//   "tini version 0.13.0 - git.949e6fa"
+		//   "tini version 0.13.2"
 		parts := strings.Split(strings.TrimSpace(string(rv)), " - ")
-		if len(parts) == 2 {
-			if dockerversion.InitCommitID[0] == 'v' {
-				vs := strings.TrimPrefix(parts[0], "tini version ")
-				v.InitCommit.ID = "v" + vs
-			} else {
-				// Get the sha1
-				gitParts := strings.Split(parts[1], ".")
-				if len(gitParts) == 2 && gitParts[0] == "git" {
-					v.InitCommit.ID = gitParts[1]
-					v.InitCommit.Expected = dockerversion.InitCommitID[0:len(gitParts[1])]
-				}
+
+		v.InitCommit.ID = ""
+		if v.InitCommit.ID == "" && len(parts) >= 2 {
+			gitParts := strings.Split(parts[1], ".")
+			if len(gitParts) == 2 && gitParts[0] == "git" {
+				v.InitCommit.ID = gitParts[1]
+				v.InitCommit.Expected = dockerversion.InitCommitID[0:len(v.InitCommit.ID)]
 			}
 		}
+		if v.InitCommit.ID == "" && len(parts) >= 1 {
+			vs := strings.TrimPrefix(parts[0], "tini version ")
+			v.InitCommit.ID = "v" + vs
+		}
 
 		if v.InitCommit.ID == "" {
 			logrus.Warnf("failed to retrieve %s version: unknown output format: %s", DefaultInitBinary, string(rv))