Skip to content

Commit 565da32

Browse files
authored
Merge pull request #3033 from balopat/fix_version_flake
Fix check flake by not using Github API
2 parents 9211864 + 89a10e1 commit 565da32

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

hack/versions/pkg/version/version.go

+4-6
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ limitations under the License.
1717
package version
1818

1919
import (
20-
"context"
2120
"fmt"
2221
"io/ioutil"
2322
"net/http"
2423
"regexp"
2524
"strings"
2625

26+
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/update"
27+
2728
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest"
28-
"github.com/google/go-github/github"
2929
"github.com/sirupsen/logrus"
3030
)
3131

@@ -40,12 +40,10 @@ func GetLatestVersion() (string, bool) {
4040
}
4141

4242
func getLastReleasedConfigVersion() string {
43-
client := github.NewClient(nil)
44-
releases, _, err := client.Repositories.ListReleases(context.Background(), "GoogleContainerTools", "skaffold", &github.ListOptions{})
43+
lastTag, err := update.DownloadLatestVersion()
4544
if err != nil {
46-
logrus.Fatalf("error listing Github releases: %s", err)
45+
logrus.Fatalf("error getting latest version: %s", err)
4746
}
48-
lastTag := *releases[0].TagName
4947
logrus.Infof("last release tag: %s", lastTag)
5048
configURL := fmt.Sprintf("https://raw.githubusercontent.com/GoogleContainerTools/skaffold/%s/pkg/skaffold/schema/latest/config.go", lastTag)
5149
resp, err := http.Get(configURL)

pkg/skaffold/update/update.go

+20-12
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var (
3636
getEnv = os.Getenv
3737
)
3838

39-
const latestVersionURL = "https://storage.googleapis.com/skaffold/releases/latest/VERSION"
39+
const LatestVersionURL = "https://storage.googleapis.com/skaffold/releases/latest/VERSION"
4040

4141
// IsUpdateCheckEnabled returns whether or not the update check is enabled
4242
// It is true by default, but setting it to any other value than true will disable the check
@@ -60,19 +60,11 @@ func isUpdateCheckEnabledByEnvOrConfig(configfile string) bool {
6060
// and returns it with the current version of Skaffold
6161
func getLatestAndCurrentVersion() (semver.Version, semver.Version, error) {
6262
none := semver.Version{}
63-
resp, err := http.Get(latestVersionURL)
63+
versionString, err := DownloadLatestVersion()
6464
if err != nil {
65-
return none, none, errors.Wrap(err, "getting latest version info from GCS")
65+
return none, none, err
6666
}
67-
defer resp.Body.Close()
68-
if resp.StatusCode != http.StatusOK {
69-
return none, none, errors.Wrapf(err, "http %d, error: %s", resp.StatusCode, resp.Status)
70-
}
71-
versionBytes, err := ioutil.ReadAll(resp.Body)
72-
if err != nil {
73-
return none, none, errors.Wrap(err, "reading version file from GCS")
74-
}
75-
latest, err := version.ParseVersion(string(versionBytes))
67+
latest, err := version.ParseVersion(versionString)
7668
if err != nil {
7769
return none, none, errors.Wrap(err, "parsing latest version from GCS")
7870
}
@@ -82,3 +74,19 @@ func getLatestAndCurrentVersion() (semver.Version, semver.Version, error) {
8274
}
8375
return latest, current, nil
8476
}
77+
78+
func DownloadLatestVersion() (string, error) {
79+
resp, err := http.Get(LatestVersionURL)
80+
if err != nil {
81+
return "", errors.Wrap(err, "getting latest version info from GCS")
82+
}
83+
defer resp.Body.Close()
84+
if resp.StatusCode != http.StatusOK {
85+
return "", errors.Wrapf(err, "http %d, error: %s", resp.StatusCode, resp.Status)
86+
}
87+
versionBytes, err := ioutil.ReadAll(resp.Body)
88+
if err != nil {
89+
return "", errors.Wrap(err, "reading version file from GCS")
90+
}
91+
return strings.TrimSuffix(string(versionBytes), "\n"), nil
92+
}

0 commit comments

Comments
 (0)