@@ -22,11 +22,13 @@ import (
2222)
2323
2424func GetRancherReleases () (string , string , string , error ) {
25- releases , err := getRancherReleases ( )
25+ releases , err := getReleases ( "rancher" , "rancher" )
2626 if err != nil {
2727 return "" , "" , "" , err
2828 }
29- versions := filterPrerelease (releases )
29+ filterPrerelease (& releases )
30+ filterPrimeOnly (& releases )
31+ versions := getVersionsFromReleases (& releases )
3032 if len (versions ) == 0 {
3133 return "" , "" , "" , errors .New ("no eligible versions found" )
3234 }
@@ -46,35 +48,13 @@ func GetRancherReleases() (string, string, string, error) {
4648 return latest , stable , lts , nil
4749}
4850
49- func getRancherReleases () ([]* github.RepositoryRelease , error ) {
50- githubToken := os .Getenv ("GITHUB_TOKEN" )
51- if githubToken == "" {
52- fmt .Println ("GITHUB_TOKEN environment variable not set" )
53- return nil , errors .New ("GITHUB_TOKEN environment variable not set" )
54- }
55-
56- // Create a new OAuth2 token using the GitHub token
57- tokenSource := oauth2 .StaticTokenSource (& oauth2.Token {AccessToken : githubToken })
58- tokenClient := oauth2 .NewClient (context .Background (), tokenSource )
59-
60- // Create a new GitHub client using the authenticated HTTP client
61- client := github .NewClient (tokenClient )
62-
63- var releases []* github.RepositoryRelease
64- releases , _ , err := client .Repositories .ListReleases (context .Background (), "rancher" , "rancher" , & github.ListOptions {})
65- if err != nil {
66- return nil , err
67- }
68-
69- return releases , nil
70- }
71-
7251func GetRke2Releases () (string , string , string , error ) {
73- releases , err := getRke2Releases ( )
52+ releases , err := getReleases ( "rancher" , "rke2" )
7453 if err != nil {
7554 return "" , "" , "" , err
7655 }
77- versions := filterPrerelease (releases )
56+ filterPrerelease (& releases )
57+ versions := getVersionsFromReleases (& releases )
7858 if len (versions ) == 0 {
7959 return "" , "" , "" , errors .New ("no eligible versions found" )
8060 }
@@ -94,7 +74,7 @@ func GetRke2Releases() (string, string, string, error) {
9474 return latest , stable , lts , nil
9575}
9676
97- func getRke2Releases ( ) ([]* github.RepositoryRelease , error ) {
77+ func getReleases ( org string , repo string ) ([]* github.RepositoryRelease , error ) {
9878 githubToken := os .Getenv ("GITHUB_TOKEN" )
9979 if githubToken == "" {
10080 fmt .Println ("GITHUB_TOKEN environment variable not set" )
@@ -109,30 +89,46 @@ func getRke2Releases() ([]*github.RepositoryRelease, error) {
10989 client := github .NewClient (tokenClient )
11090
11191 var releases []* github.RepositoryRelease
112- releases , _ , err := client .Repositories .ListReleases (context .Background (), "rancher" , "rke2" , & github.ListOptions {})
92+ releases , _ , err := client .Repositories .ListReleases (context .Background (), org , repo , & github.ListOptions {})
11393 if err != nil {
11494 return nil , err
11595 }
96+
11697 return releases , nil
11798}
11899
119- func filterReleaseCandidate (v * []string ) {
120- var fv []string
121- versions := * v
122- for i := 1 ; i < len (versions ); i ++ {
123- if strings .Contains (versions [i ], "-" ) != true {
124- fv = append (fv , versions [i ])
100+ func filterPrimeOnly (r * []* github.RepositoryRelease ) {
101+ var fr []* github.RepositoryRelease
102+ releases := * r
103+ for i := 0 ; i < len (releases ); i ++ {
104+ if len (releases [i ].Assets ) > 2 { // source zip and tar are always there
105+ // prime only releases won't have artifacts
106+ // so we only add releases with more than 2 artifacts
107+ fr = append (fr , releases [i ])
125108 }
126109 }
127- * v = fv
110+ * r = fr
111+ }
112+
113+ // this effectively removes release candidates as well as pending releases
114+ func filterPrerelease (r * []* github.RepositoryRelease ) {
115+ var fr []* github.RepositoryRelease
116+ releases := * r
117+ for i := 0 ; i < len (releases ); i ++ {
118+ if ! releases [i ].GetPrerelease () {
119+ fr = append (fr , releases [i ])
120+ }
121+ }
122+ * r = fr
128123}
129124
130- func filterPrerelease (r []* github.RepositoryRelease ) []string {
125+ func getVersionsFromReleases (r * []* github.RepositoryRelease ) []string {
131126 var versions []string
132- for _ , release := range r {
133- version := release .GetTagName ()
134- if ! release .GetPrerelease () {
135- versions = append (versions , version )
127+ releases := * r
128+ for i := 0 ; i < len (releases ); i ++ {
129+ versions = append (versions , * releases [i ].TagName )
130+ }
131+ return versions
136132 // [
137133 // "v1.28.14+rke2r1",
138134 // "v1.30.1+rke2r3",
@@ -145,9 +141,6 @@ func filterPrerelease(r []*github.RepositoryRelease) []string {
145141 // "v1.29.5+rke2r1",
146142 // "v1.28.17+rke2r1",
147143 // ]
148- }
149- }
150- return versions
151144}
152145
153146func sortVersions (v * []string ) {
@@ -467,3 +460,29 @@ func CheckReady(t *testing.T, kubeconfigPath string) {
467460 }
468461 t .Logf ("Ready script output: %s" , out )
469462}
463+
464+ func CheckRunning (t * testing.T , kubeconfigPath string ) {
465+ repoRoot , err := filepath .Abs (g .GetRepoRoot (t ))
466+ if err != nil {
467+ t .Logf ("Error getting git root directory: %v" , err )
468+ t .Fail ()
469+ }
470+ script , err := os .ReadFile (repoRoot + "/test/scripts/runningPods.sh" )
471+ if err != nil {
472+ t .Logf ("Error reading script: %v" , err )
473+ t .Fail ()
474+ }
475+ readyScript := shell.Command {
476+ Command : "bash" ,
477+ Args : []string {"-c" , string (script )},
478+ Env : map [string ]string {
479+ "KUBECONFIG" : kubeconfigPath ,
480+ },
481+ }
482+ out , err := shell .RunCommandAndGetOutputE (t , readyScript )
483+ if err != nil {
484+ t .Logf ("Error running script: %s" , err )
485+ t .Fail ()
486+ }
487+ t .Logf ("Ready script output: %s" , out )
488+ }
0 commit comments