Add registry flag to list-releases (#833)

This commit is contained in:
Itxaka 2025-07-01 10:41:14 +02:00 committed by GitHub
parent d85d7985fe
commit ff63c00dec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 21 deletions

View File

@ -35,10 +35,10 @@ func CurrentImage() (string, error) {
return artifact.ContainerName(registryAndOrg) return artifact.ContainerName(registryAndOrg)
} }
func ListAllReleases(includePrereleases bool) ([]string, error) { func ListAllReleases(includePrereleases bool, registry string) ([]string, error) {
var err error var err error
tagList, err := allReleases() tagList, err := allReleases(registry)
if err != nil { if err != nil {
return []string{}, err return []string{}, err
} }
@ -50,10 +50,10 @@ func ListAllReleases(includePrereleases bool) ([]string, error) {
return tagList.FullImages() return tagList.FullImages()
} }
func ListNewerReleases(includePrereleases bool) ([]string, error) { func ListNewerReleases(includePrereleases bool, registry string) ([]string, error) {
var err error var err error
tagList, err := newerReleases() tagList, err := newerReleases(registry)
if err != nil { if err != nil {
return []string{}, err return []string{}, err
} }
@ -167,18 +167,13 @@ func getConfig(sourceImageURL string, dirs []string, upgradeEntry string, strict
} }
func allReleases() (versioneer.TagList, error) { func allReleases(registry string) (versioneer.TagList, error) {
artifact, err := versioneer.NewArtifactFromOSRelease() artifact, err := versioneer.NewArtifactFromOSRelease()
if err != nil { if err != nil {
return versioneer.TagList{}, err return versioneer.TagList{}, err
} }
registryAndOrg, err := utils.OSRelease("REGISTRY_AND_ORG") tagList, err := artifact.TagList(registry)
if err != nil {
return versioneer.TagList{}, err
}
tagList, err := artifact.TagList(registryAndOrg)
if err != nil { if err != nil {
return tagList, err return tagList, err
} }
@ -186,18 +181,13 @@ func allReleases() (versioneer.TagList, error) {
return tagList.OtherAnyVersion().RSorted(), nil return tagList.OtherAnyVersion().RSorted(), nil
} }
func newerReleases() (versioneer.TagList, error) { func newerReleases(registry string) (versioneer.TagList, error) {
artifact, err := versioneer.NewArtifactFromOSRelease() artifact, err := versioneer.NewArtifactFromOSRelease()
if err != nil { if err != nil {
return versioneer.TagList{}, err return versioneer.TagList{}, err
} }
registryAndOrg, err := utils.OSRelease("REGISTRY_AND_ORG") tagList, err := artifact.TagList(registry)
if err != nil {
return versioneer.TagList{}, err
}
tagList, err := artifact.TagList(registryAndOrg)
if err != nil { if err != nil {
return tagList, err return tagList, err
} }

20
main.go
View File

@ -29,6 +29,7 @@ import (
"github.com/kairos-io/kairos-sdk/machine" "github.com/kairos-io/kairos-sdk/machine"
"github.com/kairos-io/kairos-sdk/schema" "github.com/kairos-io/kairos-sdk/schema"
"github.com/kairos-io/kairos-sdk/state" "github.com/kairos-io/kairos-sdk/state"
sdkUtils "github.com/kairos-io/kairos-sdk/utils"
"github.com/kairos-io/kairos-sdk/versioneer" "github.com/kairos-io/kairos-sdk/versioneer"
"github.com/sanity-io/litter" "github.com/sanity-io/litter"
"github.com/spf13/viper" "github.com/spf13/viper"
@ -82,7 +83,7 @@ as a value for the --source flag.
You can also specify the upgrade image by setting "upgrade.system.uri" for the active image or "upgrade.recovery-system.uri" for the recovery image, in the cloud config. You can also specify the upgrade image by setting "upgrade.system.uri" for the active image or "upgrade.recovery-system.uri" for the recovery image, in the cloud config.
To retrieve all the available versions, use "kairos upgrade list-releases" To retrieve all the available versions, use "kairos upgrade list-releases". Use the --registry flag to specify a custom registry to retrieve the versions from, otherwise it will default to quay.io/kairos.
$ kairos upgrade list-releases $ kairos upgrade list-releases
@ -98,9 +99,22 @@ See https://kairos.io/docs/upgrade/manual/ for documentation.
}, },
&cli.BoolFlag{Name: "pre", Usage: "Include pre-releases (rc, beta, alpha)"}, &cli.BoolFlag{Name: "pre", Usage: "Include pre-releases (rc, beta, alpha)"},
&cli.BoolFlag{Name: "all", Usage: "Include older releases"}, &cli.BoolFlag{Name: "all", Usage: "Include older releases"},
&cli.StringFlag{Name: "registry", Usage: "Registry to retrieve the releases from. Defaults to quay.io/kairos.", Value: "quay.io/kairos"},
}, },
Name: "list-releases", Name: "list-releases",
Description: `List all available releases versions`, Description: `List all available releases versions`,
Before: func(c *cli.Context) error {
// Check if the registry is set in the OS release and warn that its deprecated
registryAndOrg, err := sdkUtils.OSRelease("REGISTRY_AND_ORG")
if err == nil {
fmt.Println("Warning: The 'REGISTRY_AND_ORG' OS release variable is deprecated. Use the '--registry' flag instead.")
fmt.Println("Warning: Using the values from 'REGISTRY_AND_ORG' instead of the flag.")
_ = c.Set("registry", registryAndOrg)
}
fmt.Println(fmt.Sprintf("Using registry: %s", c.String("registry")))
return nil
},
Action: func(c *cli.Context) error { Action: func(c *cli.Context) error {
if utils.IsUki() { if utils.IsUki() {
fmt.Println("You are running in \"trusted boot\" mode") fmt.Println("You are running in \"trusted boot\" mode")
@ -132,13 +146,13 @@ See https://kairos.io/docs/upgrade/manual/ for documentation.
if c.Bool("all") { if c.Bool("all") {
fmt.Println("Available releases (all):") fmt.Println("Available releases (all):")
tags, err = agent.ListAllReleases(c.Bool("pre")) tags, err = agent.ListAllReleases(c.Bool("pre"), c.String("registry"))
if err != nil { if err != nil {
return err return err
} }
} else { } else {
fmt.Println("Available releases with higher version:") fmt.Println("Available releases with higher version:")
tags, err = agent.ListNewerReleases(c.Bool("pre")) tags, err = agent.ListNewerReleases(c.Bool("pre"), c.String("registry"))
if err != nil { if err != nil {
return err return err
} }