@@ -181,16 +181,19 @@ func (u *RKE2ChannelsUpdater) getPreviousVersion(version string) (string, error)
181181 return "" , err
182182 }
183183
184- for i := release ; i > 1 ; i -- {
185- prevVersion := fmt .Sprintf (rke2VersionTemplate , major , minor , patch , i )
186- _ , err := u .previousReleasePos (prevVersion )
187- if err != nil {
188- if i == 1 {
189- return "" , err
184+ // for +rke2r2 and forward
185+ if release > 1 {
186+ for i := release ; i > 1 ; i -- {
187+ prevVersion := fmt .Sprintf (rke2VersionTemplate , major , minor , patch , i )
188+ _ , err := u .previousReleasePos (prevVersion )
189+ if err != nil {
190+ if i == 1 {
191+ return "" , err
192+ }
193+ continue
190194 }
191- continue
195+ return prevVersion , nil
192196 }
193- return prevVersion , nil
194197 }
195198
196199 // when the patch number is 0, e.g "v1.33.0+rke2r1" we need
@@ -203,7 +206,22 @@ func (u *RKE2ChannelsUpdater) getPreviousVersion(version string) (string, error)
203206 return prevVersion , nil
204207 }
205208
206- return fmt .Sprintf (rke2VersionTemplate , major , minor , patch - 1 , 1 ), nil
209+ // checking the previous
210+ prevVersion := ""
211+ for i := 1 ; i < 10 ; i ++ {
212+ // this version may exists, so we first store it in a separate variable
213+ // and if the version exists it is assigned to prevVersion
214+ v := fmt .Sprintf (rke2VersionTemplate , major , minor , patch - 1 , i )
215+ if _ , err := u .previousReleasePos (v ); err != nil {
216+ if prevVersion == "" {
217+ return "" , err
218+ }
219+ } else {
220+ prevVersion = v
221+ }
222+ }
223+
224+ return prevVersion , nil
207225}
208226
209227func (u * RKE2ChannelsUpdater ) rke2LatestMinor (major , minor int ) (string , error ) {
0 commit comments