Skip to content

Commit

Permalink
fix: pass docker image version
Browse files Browse the repository at this point in the history
Signed-off-by: Vladislav Sukhin <[email protected]>
  • Loading branch information
vsukhin committed Oct 14, 2024
1 parent 2b8afd4 commit 4f764ac
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
37 changes: 34 additions & 3 deletions cmd/kubectl-testkube/commands/common/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ package common
import (
"bufio"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"os/exec"
"strings"
"time"
Expand Down Expand Up @@ -44,6 +47,7 @@ const (
github = "GitHub"
gitlab = "GitLab"
dockerDaemonPrefixLen = 8
latestReleaseUrl = "https://api.github.com/repos/kubeshop/testkube/releases/latest"
)

func (o HelmOptions) GetApiURI() string {
Expand Down Expand Up @@ -822,12 +826,13 @@ func prepareTestkubeProDockerArgs(options HelmOptions, dockerContainerName, dock
}

// prepareTestkubeUpgradeDockerArgs prepares docker arguments for Testkube Upgrade running.
func prepareTestkubeUpgradeDockerArgs(options HelmOptions, dockerContainerName string) []string {
func prepareTestkubeUpgradeDockerArgs(options HelmOptions, dockerContainerName, latestVersion string) []string {
args := []string{
"exec",
dockerContainerName,
"helm",
"upgrade",
// These arguments are similar to Docker entrypoint script
"testkube",
"testkube/testkube",
"--namespace",
Expand All @@ -842,6 +847,8 @@ func prepareTestkubeUpgradeDockerArgs(options HelmOptions, dockerContainerName s
"testkube-api.cloud.key=" + options.Master.AgentToken,
"--set",
"testkube-api.cloud.url=" + options.Master.URIs.Agent,
"--set",
"testkube-api.dockerImageVersion" + latestVersion,
}

return args
Expand Down Expand Up @@ -914,7 +921,7 @@ func StreamDockerLogs(dockerContainerName string) *CLIError {
return nil
}

func DockerUpgradeTestkubeAgent(options HelmOptions, cfg config.Data) *CLIError {
func DockerUpgradeTestkubeAgent(options HelmOptions, latestVersion string, cfg config.Data) *CLIError {
// use config if set
if cfg.CloudContext.AgentKey != "" && options.Master.AgentToken == "" {
options.Master.AgentToken = cfg.CloudContext.AgentKey
Expand All @@ -928,7 +935,7 @@ func DockerUpgradeTestkubeAgent(options HelmOptions, cfg config.Data) *CLIError
errors.New("agent key is required"))
}

args := prepareTestkubeUpgradeDockerArgs(options, cfg.CloudContext.DockerContainerName)
args := prepareTestkubeUpgradeDockerArgs(options, cfg.CloudContext.DockerContainerName, latestVersion)
output, err := RunDockerCommand(args)
if err != nil {
return err
Expand All @@ -941,3 +948,27 @@ func DockerUpgradeTestkubeAgent(options HelmOptions, cfg config.Data) *CLIError

return nil
}

type releaseMetadata struct {
TagName string `json:"tag_name"`
}

func GetLatestVersion() (string, error) {
resp, err := http.Get(latestReleaseUrl)
if err != nil {
return "", nil
}
defer resp.Body.Close()

data, err := io.ReadAll(resp.Body)
if err != nil {
return "", nil
}

var metadata releaseMetadata
if err := json.Unmarshal(data, &metadata); err != nil {
return "", err
}

return metadata.TagName, nil
}
4 changes: 3 additions & 1 deletion cmd/kubectl-testkube/commands/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@ func NewUpgradeCmd() *cobra.Command {
if cfg.ContextType == config.ContextTypeCloud {
ui.Info("Testkube Pro agent upgrade started")
if cfg.CloudContext.DockerContainerName != "" {
err = common.DockerUpgradeTestkubeAgent(options, cfg)
latestVersion, err := common.GetLatestVersion()
ui.ExitOnError("Getting latest version", err)
err = common.DockerUpgradeTestkubeAgent(options, latestVersion, cfg)
} else {
err = common.HelmUpgradeOrInstallTestkubeAgent(options, cfg, false)
}
Expand Down

0 comments on commit 4f764ac

Please sign in to comment.