* Skip artifacts that don't have proper names
Fixing https://github.com/kairos-io/kairos/issues/3167
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* go mod tidy
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Make sure we test the fix
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
---------
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
because we may cut an rc in which we try some newer k3s version but we
decide to not release a stable version with that, so we revert to an
older k3s version when we release stable.
Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
* Make "standard" flavor os-release variables optional
and change ARCH to TARGETARCH to simplify how it's passed down from
Earthly in the kairos repo
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Add SOFTWARE_VERSION_PREFIX in os-release
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Accept SOFTWARE_VERSION_PREFIX in cli
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Fix test
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
---------
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Add registry and org to the os-release file
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Extract the software version prefix to a field
and make sure everything still works.
Also implement NoPrereleases method to filter out Kairos pre-releases
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Store RegistryAndOrg on the TagList
to be used in the new PrintImages method that prints full image URLs
This method will be used in the "kairos-agent upgrade list-releases" command
Also fix some relic softarePrefix arguments (Artifact now has that info)
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement sorting in a semver manner
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement FullImages method that returns the tags as full images
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
---------
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Introduce versioneer package
to replace the naming.sh script in kairos-io/kairos
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement BootableName for bootable artifacts
also introduce Version and SoftwareVersion fields
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Refactor to introduce commondName
to be used with ContainerName
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement ContainerName and add missing tests
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Introduce NewArtifactFromJSON
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Introduce NewFromOSRelease
to be used within a Kairos image
See also discussion: https://github.com/kairos-io/kairos/discussions/2035
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Introduce 3 methods to find releases (TODO: implement them)
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Use existing OSRelease method and remove the new one
the existing method had to be adapted to accept and optional path to
the os-release file to allow the tests to pass a tmp file.
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Introduce TagList and some basic filtering of tags
also introduce RegistryInspector which finds tags from a container
registry for a specific repository.
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement OtherVersions method of TagList
to return different Kairos versions of the exact same artifact.
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* [WIP] Add TODOs for 2 more methods
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement Sorted() method on TagList
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement RSorted
and change OtherVersions test to ensure it also returns older versions too.
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement NewerVersions method
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Make json file pretty
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement OtherSoftwareVersions and NewerSoftwareVersions
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement NewerAnyVersions and OtherAnyVersions
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Make TagList a struct so that it has an "Artifact" field
Now the Artifact has a TagList method that returns a TagList which is
associated to the specific Artifact.
All methods of TagList are now available to the Artifact.
E.g.
tagList, _ := artifact.TagList("quay.io/kairos")
tagList.NewerAnyVersion(...)
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Use the field Artifact in TagList methods instead of needing an argument
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Fix linting errors
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Restructure files and introduce main.go for versioneer
to provide a user interface that will replace naming.sh script of the
kairos repository
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Fix imports
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement bootable-artifact-name cli command
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement BaseContainerName method
Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
* Create a wrapper command base-container-artifact-name
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
* Extract the cli command to the packag to be re-used in kairos-agent
Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
* Go back to original package structure
and just nest the cli
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Move the versioneer "main" package outside the tree
to allow it to be imported in kairos-agent
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Allow setting the cli flags using environment variables
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Implement os-release-variables command
to replace the logic in Earthly and Dockerfiles
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Fix test
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Fix TODO in Readme
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
* Dry the creation of the Artifact
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
---------
Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
Co-authored-by: Mauro Morales <mauro.morales@spectrocloud.com>
Co-authored-by: Dimitris Karakasilis <dimitris@spectrocloud.com>