Skip to content

Conventions on repo structure and artefact naming #21

@fzdarsky

Description

@fzdarsky

It would be useful to define and implement a convention on the structure of this repo and how produced artefacts (images, fleets, etc.) are named. This would make it easier

  • for users to find demos interesting and relevant to them,
  • for contributors to understand expectations and how to increase the chance of acceptance,
  • for us when implementing a simple and generic CI/CD pipeline, and
  • for Flight Control demo service users to look up what a demo fleet deploys.

Below is a proposal to illustrate and start the discussion.

Repo structure and naming:

/
├── images  # images that just contain the base OS + FC agent, used for testing and as base for demo images
│   ├── bootc 
│   │   ├── centos-bootc  # directory name == name of base distro image
│   │   ├── fedora-bootc
│   │   ├── rhel-bootc
│   │   └── ...
│   └── rpm-ostree
│       ├── rhel8
│       └── ...
├── demos
│   ├── demo1  # directory name == name of Container image == name of fleet when deployed
│   │   ├── bootc  # optional: contains everything that'll get built into thedirectory name == name of base distro image
│   │   │   ├── configuration  # build-time configuration (built into the image)
│   │   │   │   ├── etc  # structure config like it should appear on the target filesystem to make it easier to read
│   │   │   │   └── ...
│   │   │   ├── Containerfile
│   │   │   └── Containerfile.rhel9  # optional: if distro or arch or ... needs special-casing
│   │   ├── configuration  # optional: run-time configuration (to be applied by Flight Control)
│   │   │   ├── factoryA  # optional: substructure for device- or group-specific configurations
│   │   │   │   ├── etc  # structure config like it should appear on the target filesystem to make it easier to read
│   │   │   │   └── ...
│   │   │   └── factoryB
│   │   └── deployment  # fleet resource manifests to be applied to Flight Control
│   │           └── fleet.yaml
│   ├── demo2
│   │   └── ...
...

Demo naming:

  • plain-{rhel9,fedora,...}: demos of fleets with just the base OS distro
  • hello-{rpm,podman,microshift,kvm}: demos of a minimal "hello, world!" workload on different runtimes
  • howto-*: demos to showing how to implement a certain technology, e.g. observability, security hardening, etc.
  • usecase-*: demos of use cases like AI, robotics, etc.

Artefact naming:

  • If possible, use the demo name (e.g. "hello-microshift") also as name of the deployment artefacts (e.g. "quay.io/flightctl-demos/hello-microshift:latest") and fleets.
  • For the base agent images, use the same name+tag as the base distro. The agent is implied by the repo, e.g.. "quay.io/flightctl-demos/centos-bootc:stream9")

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions