Implement the bootc provision plugin#3161
Conversation
|
@cgwalters fyi |
cgwalters
left a comment
There was a problem hiding this comment.
Mostly a skim (I don't know the tmt codebase either) but looks sane to me!
|
martinhoyer
left a comment
There was a problem hiding this comment.
I'm still trying to speedrun reading/learning all things bootc (and tmt provisioning plugins), but fwiw, looks cool to me.
@happz about the container plugin support - Fedora docs says:
for fully-fledged tests it is not recommended to run a bootable container via, for instance, podman-run. One reason among others is that the filesystem is writable when being executed as an OCI container while most of the filesystem is mounted read-only on a deployed bootc system. That means the running container behaves differently than a deployed system. Yet, if you desire to run some quick tests it is recommended to run the container in detached mode.
From what I understand, podman-bootc could be pretty cool to use, once available.
I agree, it's not a perfect 1:1 substitution, but, exactly: for quick tests or basic test development, it may give me results faster than VM. I for one work on binutils and C/C++ toolchain in general, and my area of focus is fairly simple - compile this, run |
Thank you for the insight in your development process. I hope I can see it in more detail one day. |
641a411 to
78e86f3
Compare
I think the existing container plugin will handle this case without any additional code. The bootc image is just another container that can be run like a typical image. |
lukaszachy
left a comment
There was a problem hiding this comment.
--add-deps doesn't install require/recommend yet, right?
Either way, we have chicken&egg problem in the case 'dist-git-source' is used as the list of packages is known after provision :/ But IMO we can ignore that for now to have something working.
e3058f9 to
44ff728
Compare
|
@happz This is ready for a review. I added some docs, tests, and code to cleanup the container images. |
|
/packit build |
44f0f07 to
ec7bedf
Compare
|
/packit build |
|
Ok the |
|
/packit build |
57762fb to
511f73e
Compare
|
/packit build |
This creates a new provision plugin that is built on top of the existing TestCloud (virtual) plugin. It adds new parameters to pass a Containerfile or container image. The plugin will then build a container image (if necessary) then build a bootc disk image from the container image using bootc image builder. Currently, bootc requires podman to be run as root when building a disk image. This is typically handled by running a podman machine as root. An additional parameter "add-deps" toggles building a derived container image with the tmt test requirements. Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
When the podman connection is rootless=True, this will automatically start a new rootful podman-machine to be used for the bootc disk creation. Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
Ensures the /var/tmp/tmt directory exists before creating the temp directories. This directory might not exist in the CI environment. It usually exists when running locally. Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
Signed-off-by: Chris Kyrouac <ckyrouac@redhat.com>
Make sure that all test cases are actually executed. Run tests directly in the `data` directory. Simplify plans using inheritance. Plus some minor adjustments.
Let's go the other way round: Enable the check by default, allow individual tests to set it according to their needs by a simple definition and disable it globally when not initiated by packit.
This is needed to actually allow disabling the flag from the command ine as it is `True` by default.
511f73e to
21ae57d
Compare
|
/packit build |
This creates a new provision plugin that is built on top of the existing TestCloud (virtual) plugin. It adds new parameters to pass a Containerfile or container image. The plugin will then build a container image (if necessary) then build a bootc disk image from the container image using bootc image builder. Currently, bootc requires podman to be run as root when building a disk image. This is typically handled by running a podman machine as root.
An additional parameter "add-deps" toggles building a derived container image with the tmt test requirements.
Resolves #3013
Pull Request Checklist
This is a work in progress. I'm opening this PR early to get feedback on the high level design. I will add tests, docs, etc. after we solidify the higher level design.
If you want to try running the code here is an example fmf plan: