[skip-ci] Packit/TMT: Run gating tests#1960
Conversation
|
A friendly reminder that this PR had no activity for 30 days. |
|
A friendly reminder that this PR had no activity for 30 days. |
|
A friendly reminder that this PR had no activity for 30 days. |
|
@lsm5 are you still working on this? (If so, this is not urgent from my POV, no need to push it to the front of your queue — I’d just like to close the PR if there is absolutely no chance this work will continue.) |
|
@mtrmac I do plan to work on this. But may take a while. I have bookmarked it for myself so I don't lose track. So please feel free to close it. |
|
Thanks, if it is still relevant, let’s keep it open. It might help, or inspire, other contributors. |
|
A friendly reminder that this PR had no activity for 30 days. |
|
A friendly reminder that this PR had no activity for 30 days. |
7bfbd1c to
2e9afc9
Compare
|
@mtrmac @vrothberg @cevich RE: system tests in CI, is it critical to run them in a container or would we be ok with running |
|
@edsantiago is authoritative for system tests (question above). |
|
Forgive me please, I don't understand the question. It's been a while since I've looked at skopeo gating tests, but my recollection is that they run on a plain system, via |
IIRC the system tests run a registry server (container). So… running I’m not immediately sure how much custom tooling exists in the CI container, and would need to be reproduced; https://github.com/containers/automation_images/blob/main/skopeo_cidev/setup.sh is relevant to that, but IIRC almost all of that exists for integration, not system, tests. |
|
/packit test |
|
So, unfortunately, the issue we are hitting is a bug in Packit: It was not considered a bug before, as people were not hitting it and we did not know it had this consequence. |
Thanks @thrix . I'll disable the rhel tests for now. |
ack, the |
2e9afc9 to
49952d4
Compare
|
@mtrmac PTAL. Only added x86_64 integration, validate and unit tests for now. |
If |
|
Hmm, and I guess running the tests in the skopeo_cidev container renders the multiple |
mtrmac
left a comment
There was a problem hiding this comment.
I really don’t know what I’m doing here and how the things fit together — so a bunch of what I’m sure are stupid questions.
What is the longer-term plan? Is this going intended to be in addition to .cirrus.yml, or eventually replace it?
| - golang | ||
| - make | ||
| - podman | ||
| - skopeo |
There was a problem hiding this comment.
Is this requiring some other Skopeo binary than the one we are testing? Or does that guarantee to use the one from copr_build?
… and if this is the one we should be testing, how does that /usr/bin/skopeo get injected into the test-integration container? That doesn’t happen AFAICS.
| failure_comment: | ||
| message: "Tests failed. @containers/packit-build please check." | ||
| tmt_plan: /plans/upstream | ||
| targets: |
There was a problem hiding this comment.
Note to self: Per https://packit.dev/docs/configuration/upstream/tests#required-parameters , targets which don’t specify an architecture imply x86_64 when used in tests.
There was a problem hiding this comment.
Maybe worth a comment in the file? Especially when it differs from the build job semantics.
From an extremely brief look at the Packit / TMT documentation, the tests seem to run in an isolated VM (chroot? container?) and install RPM test subjects into that. Running an extra level of isolation in a container seems unnecessary in that case. (Also, to my knowledge no-one has been using the Also, testing the binary, if it comes from a RPM, in its expected distribution, seems clearly more valuable than running it in some other frozen / differently-built container. OTOH, at least one reason why the container exists, and is regularly rebuilt, is so that individual Skopeo CI runs don’t need to install and compile all of those tools, which rarely change, on every single CI RUN. Hence, in Cirrus, If the Packit tests are ever intended to be merge-blocking, something like that to shorten the CI time would be very valuable. And, also, I’d prefer not to maintain the test tool setup code ( https://github.com/containers/automation_images/blob/main/skopeo_cidev/setup.sh and |
|
@mtrmac thanks a lot for all the comments. Setting back to draft while I work through them. |
5b3bb2c to
54eea41
Compare
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
5 similar comments
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
|
Failed to load packit config file: For more info, please check out the documentation or contact the Packit team. You can also use our CLI command |
|
Tests failed. @containers/packit-build please check. |
|
@mtrmac RE: your earlier questions:
Plan is to eventually get rid of cirrus and depend only on TMT assuming we'll have all functionality sooner or later via TMT. Update: I have pretty much redone the whole PR with scope limited to only triggering You'll see a bunch of new jobs in CI. The ones with suffix
In this PR, I'm no longer changing the I'll work on the integration / lint and ostree tests in followup PRs. I'll keep your other comments here in mind while I work on those later. |
|
Another advantage of TMT is convenient reverse dependency testing. See this c/common PR. That will run the tests maintained in skopeo on every PR in c/common. |
|
/packit test |
1 similar comment
|
/packit test |
There was a problem hiding this comment.
Thanks!
I’m not sure I’m reading that correctly, but some logs seem to suggest that the TMT tests run in ~2 minutes vs. previous 13. If that represents wall-clock time, that would be a really impressive improvement.
You'll see a bunch of new jobs in CI. … The ones with suffix
releasewill show asQueuedbut are expected to not run on main. Reverse should happen onrelease-*branches once this change lands there.
Is there any chance to correctly represent the status in GitHub (either as “skipped”, or not including the other jobs in at all)?
I expect that eventually we’ll want to make these jobs merge-blocking, and I don’t know how that would work with a “queued” never-finishing job. It’s also easier for newcomers/occasional contributors when the tool status matches the intuitive understanding.
|
One more thing — not blocking this PR, just to possibly think about. For historical reasons, c/image’s CI, via the If we completely removed the current way of running system tests in favor of TMT testing (based on Skopeo RPMs?), we would need some way to continue to run the tests against c/image PRs. I have no idea whether that would be trivial, difficult, or how it might affect the packit/TMT test automation design. Alternatively, the testing structure could be cleaned up — instead of c/image relying on Skopeo’s tests, we could move most of the tests into the c/image codebase, and rework them them not to rely on the Skopeo repo (and codebase?). That would, conceptually, be a better design — but, also, probably quite a lot of work and so far there was never a strong enough reason to spend time on this, so we have been relying on the |
Ack, this should be doable via TMT as well. I'll keep this in mind for the followup PR to enable additional tests.
Ack. In this current PR, the system tests use skopeo from the copr rpm, but we can have the tests run independent of rpms too. Additionally, TMT also allows tests maintained in one repo to be fetched and run in another repo. For example: podman Fedora rpm gating tests fetching additional tests maintained in the toolbox rpm. https://src.fedoraproject.org/rpms/podman/blob/rawhide/f/plans/toolbox.fmf#_7-10 Additionally, on the c/image side, there
SGTM as well. |
mtrmac
left a comment
There was a problem hiding this comment.
Thanks! LGTM, to the limited extent I understand things.
Please merge whenever appropriate.
Is there any chance to correctly represent the status in GitHub (either as “skipped”, or not including the other jobs in at all)?
|
Sorry, totally missed this entire comment earlier...
Great to hear. IIUC, the time mentioned only includes start to finish of the actual test. Things like rpm build completion, waiting/provisioning testing-farm instance could add up. I'll check with the concerned teams if they could also report total time.
Yes, I've notified packit team about changing that: packit/packit-service#2678 (comment) |
|
Rebased and pushed just now. Will merge after the run succeeds. Thanks @mtrmac |
@mtrmac I think you'll need to |
This will be useful in the followup commit that enables TMT test jobs on PRs. PRs on `main` branch should be tested with bleeding-edge dependencies from the podman-next COPR while PRs on `release` branches should be tested only with the official distro packages. Packit will run/skip the relevant set of tests based on this label. Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
This commit enables TMT jobs triggered by Packit to run system tests. 2 set of jobs `dev` and `release` have been added. `dev` jobs are meant to run on main PRs with additional package updates fetched from podman-next copr while `release` jobs are meant to run on release- branch PRs using only the dependencies present in the official distro. Packit checks PR labels (see previous commit) to filter out the jobs that get run. Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
Commit 1
PR Labels: apply release label to release- branch PRs
This will be useful in the followup commit that enables TMT test jobs on PRs.
PRs on
mainbranch should be tested with bleeding-edge dependencies from the podman-next COPR while PRs onreleasebranches should be tested only with the official distro packages. Packit will run/skip the relevant set of tests based on this label.Commit 2
Packit/TMT: Run system tests
This commit enables TMT jobs triggered by Packit to run system tests.
2 set of jobs
devandreleasehave been added.devjobs are meant to run on main PRs with additional package updates fetched from podman-next copr whilereleasejobs are meant to run on release- branch PRs using only the dependencies present in the official distro.Packit checks PR labels (see previous commit) to filter out the jobs that get run.