-
Notifications
You must be signed in to change notification settings - Fork 126
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
Implement the bootc
provision plugin
#3161
Conversation
@cgwalters fyi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly a skim (I don't know the tmt codebase either) but looks sane to me!
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
--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. |
I've added a bunch of changes in f781e34, mainly to fix & simplify tests:
Last remaining problem is the avc check. I guess we should just disable it if we cannot |
/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 <[email protected]>
Signed-off-by: Chris Kyrouac <[email protected]>
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 <[email protected]>
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 <[email protected]>
Signed-off-by: Chris Kyrouac <[email protected]>
Signed-off-by: Chris Kyrouac <[email protected]>
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: