Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed changes to how images are names and tagged #14

Open
RyanHir opened this issue Aug 7, 2022 · 3 comments
Open

Proposed changes to how images are names and tagged #14

RyanHir opened this issue Aug 7, 2022 · 3 comments

Comments

@RyanHir
Copy link
Contributor

RyanHir commented Aug 7, 2022

In the current state of how images are named, every image has the ubuntu prefix or suffix. In some cases, this would be fine, especially with software designed around just Ubuntu. But this causes issues when trying to bring in support for Debian. It would be possible to generate another set of containers with a debian prefix/suffix.

Many popular images on Docker Hub use a generic image name, and note any differing changes into the tag. Take the Grafana image for example, it will tag versions and releases with Alpine as its base, and Ubuntu bases with a -ubuntu suffix (latest, latest-ubuntu, 9.0.6, 9.0.6-ubuntu, etc.). Or the Python image, which will put the OS version in the tag name (3.9.13-buster, 3.9.13-bullseye, etc.). Along with the verbose tags, the Python images are also tagged with more generic names to make end-user usage easier (3.10.6-bullseye == 3.10-bullseye == 3-bullseye == bullseye).


I think the images in this repo should follow the Python, along with a specifier of Ubuntu or Debian. But this can also be implied by the name of the tag, as Ubuntu and Debian has never had matching version names.

Image Name Generic Tag Complex Tag
base 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian
roborio-cross 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian
frcvision-cross 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian
jetson-cross 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian
gazebo 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian
opensdk 2023.1.1 and/or latest ubuntu, 2023.1.1-ubuntu, 2023.1.1-ubuntu-focal, 2023.1.1, 2023.1, 2023

debian, 2023.1.1-debian, 2023.1.1-debian-bullseye, 2023.1.1-debian, 2023.1-debian, 2023-debian

As you can see by the image names, I also changed the names of raspbian-cross/aarch64-cross to frcvision-cross/jetson-cross as these containers are used for very specialized targets which were not apparent until you look at the tags of the images.


Another design choice, which I do not particularly like, but would follow the design of the current system, can look like the following.

Image Name Generic Tag Complex Tag
base-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
base-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023
roborio-cross-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
roborio-cross-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023
frcvision-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
frcvision-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023
jetson-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
jetson-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023
gazebo-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
gazebo-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023
opensdk-ubuntu 2023.1.1 and/or latest 2023.1.1-focal, 2023.1.1, 2023.1, 2023
opensdk-debian 2023.1.1 and/or latest 2023.1.1-bullseye, 2023.1.1, 2023.1, 2023

Both versions allow for multiple versions from the same distro, which will bring flexibility to slowly roll out the migration from one LTS release to another.

@PeterJohnson
Copy link
Member

PeterJohnson commented Aug 7, 2022

The aarch64 cross compiler image might be named aarch64-bionic, and the raspbian one raspbian10, to match the cross compiler image targets? But they are not specifically for jetson and frcvision (which has been renamed to wpilibpi in any case). A binary built with the raspbian10 cross compiler will work on any raspbian10-based image, not just wpilibpi.

@RyanHir
Copy link
Contributor Author

RyanHir commented Aug 8, 2022

I am fine changing the names for those containers, but I am hesitant to put a version in the name. Both of which will be reaching end-of-life (Buster August 2022, Bionic April 2023). Plus, binaries built on a raspbian10 container should be compatible with raspbian11. I believe having a container called wpilibpi that is tagged for the current WPILib release makes it clear that it is for the WPILib rPI image that was released for the season.

The Jetson is an odd case because there is not a WPILib branded image that I am aware of. Preferably, I want to see what PhotonVision will come up with, as I have heard that they are looking into building a Debian based distro for it.

@PeterJohnson
Copy link
Member

PeterJohnson commented Aug 8, 2022

These images are basically just images for cross-compilation to the particular target (with the cross compiler preinstalled). We use them primarily for building binary artifacts for that (generic) target; it doesn't matter whether the target is wpilib branded or not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants