Currently the code is capable of providing some basic functionality for a snap store, like listing snaps, installing them, etc. As I’ve previously mentioned I’ve even built Core images pointed at that store.
There are a ton of facets to work on with a project like this obviously (ton is an understatement actually).
And while just “working” on it is a lot of fun I do actually want to make plans, release and make a usable project.
So- it’s time to start with planning the first “release”. There will be several main components/services (each one in turn out-lined afterwards):
This is also in the context of a single, global store. Other store support will have to come later.
Login will support authenticating that a user exists through an OIDC provider (I’ll most likely being using Keycloak for this role during development). It will discharge a third-party caveat when requested.
All new users, management, etc. will be the responsibility of the OIDC provider at this point.
Dashboard should support as much as possible to make the release meaningful. Definitely planned:
- Register a snap name
- Push a snap build to the store
- Basic account / key management
Store should support as much as possible to make the release meaningful. Definitely planned:
- Get snaps
- Search snaps
Kebe will have backend and admin endpoints that are not provided elsewhere. The hope is to have an OpenAPI or similar specification to cover these.
Helm chart for basic deployment and development. It will be non-production and will likely not have proper Ingress support, SSL, etc. until later.
** Tools **
The goal is to have the current functionality supported using the existing tools with simple exported environment variables to overload the URLS.
Snapd is of course another matter as it needs a patch for adding another “root” account and key to allow another party to attest to assertions. At the moment I do not believe there is an alternative.
I would like to have an “all-in-one” box for this purpose; capable of deploying and initializing the store from scratch (or with existing keys), patching snapd with the store generated assertions and then building both the debian package and snap. This could potentially be done with Vagrant or just a single Taskfile.