@@ -11,6 +11,7 @@ import (
11
11
"io"
12
12
"log"
13
13
"net/http"
14
+ "net/url"
14
15
"os"
15
16
"path/filepath"
16
17
"regexp"
@@ -23,11 +24,12 @@ import (
23
24
var debug bool
24
25
25
26
const (
26
- EndOfLifeURL string = "https://endoflife.date/api/kubernetes.json"
27
- KindDockerHubURL string = "https://hub.docker.com/v2/repositories/kindest/node/tags?page_size=1&page=1&ordering=last_updated&name="
28
- MiniKubeURL string = "https://raw.githubusercontent.com/kubernetes/minikube/master/pkg/minikube/constants/constants_kubernetes_versions.go"
29
- KubeKindVersion string = "k8s-kind-version"
30
- KubeMinikubeVersion string = "k8s-minikube-version"
27
+ endOfLifeURL string = "https://endoflife.date/api/kubernetes.json"
28
+ kindDockerHubURL string = "https://hub.docker.com/v2/repositories/kindest/node/tags?page_size=1&page=1&ordering=last_updated&name="
29
+ miniKubeURL string = "https://raw.githubusercontent.com/kubernetes/minikube/master/pkg/minikube/constants/constants_kubernetes_versions.go"
30
+ kubeKindVersion string = "k8s-kind-version"
31
+ kubeMinikubeVersion string = "k8s-minikube-version"
32
+ ciMatrixPath string = "ci-matrix.json"
31
33
)
32
34
33
35
type KubernetesVersion struct {
@@ -180,10 +182,10 @@ func updateMatrixFile(filePath string, kindVersions []string, minikubeVersions [
180
182
}
181
183
182
184
for _ , value := range testMatrix {
183
- if len (kindVersions ) > 0 && value [KubeKindVersion ] != nil {
184
- value [KubeKindVersion ] = kindVersions
185
- } else if len (minikubeVersions ) > 0 && value [KubeMinikubeVersion ] != nil {
186
- value [KubeMinikubeVersion ] = minikubeVersions
185
+ if len (kindVersions ) > 0 && value [kubeKindVersion ] != nil {
186
+ value [kubeKindVersion ] = kindVersions
187
+ } else if len (minikubeVersions ) > 0 && value [kubeMinikubeVersion ] != nil {
188
+ value [kubeMinikubeVersion ] = minikubeVersions
187
189
}
188
190
}
189
191
// Marshal the updated test matrix back to JSON
@@ -215,8 +217,13 @@ func sortVersions(versions []string) {
215
217
})
216
218
}
217
219
218
- func getRequestBody (url string ) ([]byte , error ) {
219
- resp , err := http .Get (url )
220
+ func getRequestBody (uRL string ) ([]byte , error ) {
221
+ u , err := url .Parse (uRL )
222
+ if err != nil {
223
+ return nil , fmt .Errorf ("invalid URL: %w" , err )
224
+ }
225
+
226
+ resp , err := http .Get (u .String ())
220
227
if err != nil {
221
228
return nil , fmt .Errorf ("failed to fetch URL: %w" , err )
222
229
}
@@ -246,40 +253,37 @@ func main() {
246
253
log .SetOutput (os .Stdout )
247
254
log .SetFlags (log .LstdFlags | log .Lshortfile )
248
255
249
- k8sVersions , err := getSupportedKubernetesVersions (EndOfLifeURL )
256
+ k8sVersions , err := getSupportedKubernetesVersions (endOfLifeURL )
250
257
if err != nil || len (k8sVersions ) == 0 {
251
258
log .Fatalf ("Failed to get k8s versions: %v" , err )
252
259
}
253
- logDebug ("Found supported k8s versions %v" , k8sVersions )
260
+ logDebug ("Supported Kubernetes versions %v" , k8sVersions )
254
261
255
- kindVersions , err := getLatestSupportedKindImages (KindDockerHubURL , k8sVersions )
262
+ kindVersions , err := getLatestSupportedKindImages (kindDockerHubURL , k8sVersions )
256
263
if err != nil {
257
- log .Printf ("failed to get all kind versions: %v" , err )
258
- }
259
- if len (kindVersions ) > 0 {
260
- // needs to be sorted so we don't end up with false positive diff in the json matrix file
261
- sortVersions (kindVersions )
262
- logDebug ("Found supported kind images: %v" , kindVersions )
264
+ log .Fatalf ("Failed to get kind versions: %v" , err )
263
265
}
264
266
265
- minikubeVersions , err := getLatestSupportedMinikubeVersions (MiniKubeURL , k8sVersions )
267
+ // needs to be sorted so we don't end up with false positive diff in the json matrix file
268
+ sortVersions (kindVersions )
269
+ logDebug ("Found supported kind images: %v" , kindVersions )
270
+
271
+ minikubeVersions , err := getLatestSupportedMinikubeVersions (miniKubeURL , k8sVersions )
266
272
if err != nil {
267
- log .Printf ("failed to get minikube versions: %v" , err )
268
- }
269
- if len (minikubeVersions ) > 0 {
270
- logDebug ("Found supported minikube versions: %v" , minikubeVersions )
273
+ log .Fatalf ("failed to get minikube versions: %v" , err )
271
274
}
272
275
273
- if len (kindVersions ) == 0 && len (minikubeVersions ) == 0 {
276
+ logDebug ("Found supported minikube versions: %v" , minikubeVersions )
277
+
278
+ if len (kindVersions ) == 0 || len (minikubeVersions ) == 0 {
274
279
log .Fatalf ("No supported versions found. Run with -debug=true for more info." )
275
280
}
276
281
277
- path := "ci-matrix.json"
278
282
currentDir , err := os .Getwd ()
279
283
if err != nil {
280
284
log .Fatalf ("Failed to get current directory: %v " , err )
281
285
}
282
- path = filepath .Join (currentDir , filepath .Clean (path ))
286
+ path : = filepath .Join (currentDir , filepath .Clean (ciMatrixPath ))
283
287
err = updateMatrixFile (path , kindVersions , minikubeVersions )
284
288
if err != nil {
285
289
log .Fatalf ("Failed to update matrix file: %v" , err )
0 commit comments