-
Notifications
You must be signed in to change notification settings - Fork 97
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
Add feature kernelci-try #2594
Comments
Following this issue
This file will also accept a .kci-dev.yaml configuration file for define password and api keys |
Hi! Thats exactly what we are working on this milestone. |
@nuclearcat which milestone are you talking about, there is any way I can help out? |
@aliceinwire The milestone @nuclearcat mentioned is a public roadmap/development plan, e.g. M3 document
This should be already possible for monitored trees/branches by submitting custom Node to the API
That's also supported using |
what about the publish feature that permit to decide to publish or don't publish results
|
do you mean by using the KernelCI-api ? I tried doing it with the help of @nuclearcat but looks like it was not a feature that KernelCI-api can provide.
? |
We may add more issues based on logical and demanded features (including this one). Additional ideas will be gathered during our upcoming weekly meeting. Once planning is complete, we'll publish a Milestone document outlining the defined tasks. We'll strive to complete these tasks within the milestone, but some may extend beyond due to external dependencies or underestimated complexity. |
API supports Nodes with patches stored as artifacts. Kernel sources that given Node references together with these patches are later packaged into tarball for further processing. By CLI I meant |
Draft of the API calls i am designing (that this tool will use): Design of tree maintainers API (KISS principle):This is a simple API that will allow to interact with kernelci pipeline in a more flexible way. P1)Custom checkout for bisectionSpecify full specification (url, branch, kbuildname, testname) OR use failing test node as reference (it already contains all necessary information) So request can be as following: {
"node": "<failing_test_node_id>",
"commit": "<commit_id>",
} Will return custom checkout node id that can be followed by traditional API calls or on dashboard. Purpose: Kernel developers can do bisection on kernelci infrastructure. As git bisect guides with commit, based on test results, developer can P2)Custom test run retryPOST /api/retry {
"node": "<failing_test_node_id>"
} Not sure yet, we cannot return node id in this case, but i can return kbuild node id that will have new "child" node with test run results. Purpose: Sometimes hardware or tests are "flakey" (unreliable), so it is useful to retry test several times. P3) Test fix(patch)POST /api/testfix {
"node": "<failing_test_node_id>",
"patch": "<patch_content_base64?>"
} It will fetch same sources as test failed, but apply patch before build. Then after building patched kernel it will run test. Purpose: Kernel developers can test patches on kernelci infrastructure, if they fix failing test/regression. P4) Testing new patchesPOST /api/patch {
"patch": "<patch_content_base64?>",
"treeurl": "<tree_url>",
"branch": "<branch>",
"commit": "<commit_id>",
"kbuildname": "<kbuildname>",
"testname": "<testname>"
} Fields kbuildname and testname are optional, if not specified it will run all tests and all builds, as configured in kernelci pipeline. It will fetch sources from treeurl, checkout to branch, then to commit, apply patch. Purpose: Kernel developers can test new patches on kernelci infrastructure, making sure they are not breaking anything. |
I updated draft |
@nuclearcat thanks for the draft of the API, as discussed on the weekly web meeting this is a good start.
|
I believe it should be mandatory to the repository enabled in KernelCI already. I think that is safer. I also wonder why we would not publish the results up to KCIDB. If you are sending to KernelCI, it is public code. |
currently yes also because we are sending only a diff, not all the code and we need to match the diff with a full repository tree
As we discussed on the weekly meeting we thought of some possibility:
|
would be useful to have also a laboratory field like we had in Jenkins, for chose to which laboratory run the tests, default to everyone. |
where do you get the failing test node id? is this some public information and easy to retrieve? |
Kernel developers are not suppose to ssh into KernelCI for doing bisection on KernelCI infrastructure |
Yes, it is available in Grafana (which is available now) and in public dashboard. It is something like failed test ID. |
Yes, thats planned. Right now i have filters for job (to limit test to specific build and test name), but need to add also lab AND also possible filter to limit test to specific device type as well. |
We don't need the commit id when the change is only local, |
I can make it optional, but that means it will just fetch current "tip of tree" commit id and fill it "automagically" (and create some uncertainity). |
I see, that works for me. |
two other parameters that I would like to see are:
laboratories is for decide in which laboratory or laboratories the tests will be executed, default to all laboraries |
kbuild and testname is already in jobfilter (i will need to explain how they works) |
the current PoC of the kci-dev tool |
poetry run kci-dev --help
Usage: kci-dev [OPTIONS] COMMAND [ARGS]...
Stand alone tool for Linux Kernel developers and maintainers that can test
local Linux Kernel changes on a enabled KernelCI server
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
commit Test commits from a local Kernel repository
patch Test a patch or a mbox file |
poetry run kci-dev commit --help
Usage: kci-dev commit [OPTIONS]
Test commits from a local Kernel repository
Options:
--repository TEXT define the kernel upstream repository where to test local
changes
--branch TEXT define the repository branch
--private define if the test results will be published
--path TEXT define the directory of the local tree with local changes
--settings TEXT path of toml setting file
--help Show this message and exit. |
poetry run kci-dev patch --help
Usage: kci-dev patch [OPTIONS]
Test a patch or a mbox file
Options:
--repository TEXT define the kernel upstream repository where to test local
changes
--branch TEXT define the repository branch
--private define if the test results will be published
--patch TEXT mbox or patch file path [required]
--settings TEXT path of toml setting file
--help Show this message and exit. |
the JWT token and api host address are managed by the |
I will finish implementing today initial patchset features (after discovering how this subsystem works, and will publish updates), and will propose API for it. |
My intention is to move the tool to kernelci organization, can you give me the admin on the repo after I moved it? |
Definitely, great idea, personally i am all for it and it should be possible. |
Is not creating the repo is a transfer |
Yes, but i think according the rules we need to discuss with TSC adding or transferring repo to kernelci organization, but i am not sure about that. |
sure I was just specifying that is not a creation but a transfer |
Adding as example usage of semi-reference tool i am using in development, for future documentation:
This will run custom commit on particular tree for specific build and test.
If you are not happy about some existing test result, you can try it on another commit in same tree (-c commit, -n test node id) |
I added also to each tree (custom checkout tree, or normal automated tip-of-tree) unique treeid field, which will make easier identification and tracking of custom submissions (custom checkout, checkout with patch/patchset). |
Add a feature similar to buildbot try where Kernel developers provided of a API key can push request for builds to the KernelCI current running environment from the command line.
Also add the possibility of pushing local kernel source changes.
The text was updated successfully, but these errors were encountered: