@@ -171,33 +171,45 @@ func LatestStableRelease() (string, error) {
171171 defer cancel ()
172172
173173 client := github .NewClient (nil )
174- releases , response , err := client .Repositories .ListReleases (ctx , "renproject" , "darknode-release" , nil )
175- if err != nil {
176- return "" , err
177- }
178- if response .StatusCode != http .StatusOK {
179- return "" , fmt .Errorf ("cannot get latest darknode release from github, error code = %v" , response .StatusCode )
174+ opts := & github.ListOptions {
175+ PerPage : 25 ,
180176 }
181-
182177 latest , err := version .NewVersion ("0.0.0" )
183178 if err != nil {
184179 return "" , err
185180 }
186- verReg := "^v?[0-9]+\\ .[0-9]+\\ .[0-9]+$"
187- for _ , release := range releases {
188- match , err := regexp .MatchString (verReg , * release .TagName )
181+
182+ // Fetch all releases and find the latest stable release tag
183+ for {
184+ releases , response , err := client .Repositories .ListReleases (ctx , "renproject" , "darknode-release" , opts )
189185 if err != nil {
190186 return "" , err
191187 }
192- if match {
193- ver , err := version .NewVersion (* release .TagName )
188+
189+ if response .StatusCode != http .StatusOK {
190+ return "" , fmt .Errorf ("cannot get latest darknode release from github, error code = %v" , response .StatusCode )
191+ }
192+
193+ verReg := "^v?[0-9]+\\ .[0-9]+\\ .[0-9]+$"
194+ for _ , release := range releases {
195+ match , err := regexp .MatchString (verReg , * release .TagName )
194196 if err != nil {
195197 return "" , err
196198 }
197- if ver .GreaterThan (latest ) {
198- latest = ver
199+ if match {
200+ ver , err := version .NewVersion (* release .TagName )
201+ if err != nil {
202+ return "" , err
203+ }
204+ if ver .GreaterThan (latest ) {
205+ latest = ver
206+ }
199207 }
200208 }
209+ if response .NextPage == 0 {
210+ break
211+ }
212+ opts .Page = response .NextPage
201213 }
202214 if latest .String () == "0.0.0" {
203215 return "" , errors .New ("cannot find any stable release" )
0 commit comments