updatecli defines sources (e.g. GitHub release API or docker image list) and based on that can retrieve versions and filter based on them. It usually works off semvers, but we can also pin to digests. So if the format you're using for versioning is some kind of standard, then I think you could convince them to accept a PR for your feed type.
There's three stages in the updatecli pipeline:
1. sources (get list of candidate versions and select one of the versions, usually by identifying the most recent semver)
2. transformations (manipulate the selected source, e.g. if you need to trim a "v" prefix or add it, or something like that)
3. targets (files to update, e.g. update a YAML file in a specific field)
Some simpler alternatives might be to:
* publish separate tags for each channel, e.g. 1.23.1-stable and 1.23.1-rapid (we can filter tags to evaluate using a regex), or
* publish tags for each channel, e.g. v1.24.0 is also "latest" but you could also publish it as "rapid" and v1.23.1 as "stable" (then someone can docker pull ...:stable and get the latest stable version, and we can use that to pin the digest of the latest stable release), or
* images, e.g. publish the same image as ghcr.io/authzed/spicedb-stable:1.23.1 and ghcr.io/authzed/spicedb-rapid:1.23.1 (the nour update automation can pick the latest version tag from spicedb-stable)
The nice thing about updatecli is that it can be very flexible, since it can write to any field in any file
The problem is that updatecli is running in GitHub Actions and GitHub Actions has no access to our cluster. Basically our workflow is:
1. GitHub Actions job runs updatecli periodically to detect latest versions
2. If there's a change, updatecli will open a pull request to update the manifests we've stored in GitHub with a new version
3. We review the PR, merge it
4. Flux updates our cluster based on the current manifest state in GitHub repo