-
Notifications
You must be signed in to change notification settings - Fork 18
Description
(this issue is filed under CLI, because this is the only place changes would have to be made to implement changes to the recipe format)
I had an epiphany. But let me preface a bit; if the purpose of the recipe is to be a versatile standard that describes the build and publish process of a native container image, is it as good as that as can be? And if not, aren't we in the broad ideal moment of time to evolve it?
Here's how it could look:
base-image:
url: ghcr.io/ublue-os/silverblue-main
tag: 40
public-key: https://... # unimplemented, needed for base image verification, would be optional, and automatically supplied for ublue etc.
type: ostree # unimplemented, might be needed for effectively supporting different base images, which might need things like running `ostree container commit`
result-image:
name: weird-os
description: This is my personal OS image.
tags: # replaces the "latest" and timestamp tags
- gts
stages:
...
modules:
...
That's a sketch, but IMO it's already better than what we have now. Ideas and discussion appreciated here, though.
Multiple versions of the recipe standard could be supported in a way similar to other projects, say, docker-compose.yml
do. I'd opt for using the $schema:
key to specify the version; that would force us to supply jsonschema for all supported versions, and the user to update both the autocomplete source and the actual version in their recipes at the same time. This would set a solid foundation for breaking recipe changes in the future. If rust can do jsonchema validation, maybe we could even get multi-version support in CLI with not much extra effort? #173
@blue-build/members