Skip to content

Commit

Permalink
Display buildkit version in nerdctl
Browse files Browse the repository at this point in the history
Fixes#1082

Signed-off-by: Manu Gupta <manugupt1@gmail.com>
  • Loading branch information
manugupt1 committed Jul 9, 2022
1 parent b1ae460 commit de45837
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
1 change: 1 addition & 0 deletions cmd/nerdctl/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ func versionAction(cmd *cobra.Command, args []string) error {
}
}
}
fmt.Fprintf(w, "\n")
return vErr
}

Expand Down
50 changes: 49 additions & 1 deletion pkg/infoutil/infoutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,14 @@ import (
"context"
"fmt"
"os"
"os/exec"
"runtime"
"strings"
"time"

"github.com/containerd/nerdctl/pkg/buildkitutil"
"github.com/sirupsen/logrus"

"github.com/Masterminds/semver/v3"
"github.com/containerd/containerd"
ptypes "github.com/containerd/containerd/protobuf/types"
Expand Down Expand Up @@ -133,8 +137,9 @@ func ServerVersion(ctx context.Context, client *containerd.Client) (*dockercompa
Version: daemonVersion.Version,
Details: map[string]string{"GitCommit": daemonVersion.Revision},
},
getBuildKitVersion(),
getRuncVersion(),
},
// TODO: add runc version
}
return v, nil
}
Expand All @@ -150,3 +155,46 @@ func ServerSemVer(ctx context.Context, client *containerd.Client) (*semver.Versi
}
return sv, nil
}

func getBuildKitVersion() dockercompat.ComponentVersion {
buildctlBinary, err := buildkitutil.BuildctlBinary()
if err != nil {
logrus.Warnf("unable to determine buildkit version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "buildkit"}
}

stdout, err := exec.Command(buildctlBinary, "--version").Output()
if err != nil {
logrus.Warnf("unable to determine buildkit version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "buildkit"}
}

versionStr := strings.Fields(strings.TrimSpace(string(stdout)))

return dockercompat.ComponentVersion{
Name: "buildkit",
Version: versionStr[2],
Details: map[string]string{"GitCommit": versionStr[3]},
}
}

func getRuncVersion() dockercompat.ComponentVersion {
stdout, err := exec.Command("runc", "--version").Output()
if err != nil {
logrus.Warnf("unable to determine runc version: %s", err.Error())
return dockercompat.ComponentVersion{Name: "runc"}
}

var versionList = strings.Split(string(stdout), "\n")

return dockercompat.ComponentVersion{
Name: "runc",
Version: strings.Fields(versionList[0])[2],
Details: map[string]string{
"GitCommit": strings.Fields(versionList[1])[1],
"spec": strings.Fields(versionList[2])[1],
"go": strings.Fields(versionList[3])[1],
"libseccomp": strings.Fields(versionList[4])[1],
},
}
}

0 comments on commit de45837

Please sign in to comment.