-
This is not a Zephyr-specific question. This is multi-repo question that should matter to users of west and other similar git wrappers. There is no https://github.com/zephyrproject-rtos/west/discussions and won't be in the near future so it's been recommended to post it here. The short question is: how to perform Continuous Integration for projects with multiple repos? While the Continuous Integration of the open-source Zephyr project is one of the best I've seen, it does not really support multiple repos - because it does not really need to. Its west projects are organized with a "star" repo at the "top" (Zephyr), and all other repos are second class. Getting test coverage for pull requests in secondary repos requires an indirect, two-step process documented at https://docs.zephyrproject.org/latest/guides/modules.html#changes-to-existing-module Keeping with the official west terminology (not a huge fan of it sorry), this question is about "forest topologies" where all repos are treated equally. The simplest example is a product repo and a test repo combined in a west manifest. No tightly coupled unit tests in the test repo but higher level tests instead that can be used to compare product versions. In such an example CI should ideally be able to combine a pull request on any repo with the latest version of every other repo with little user interface overhead. Has anyone already achieved this and how? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 5 replies
-
Chromium does this: Any idea how Android people do this? Speaking of buildbot I'm sure writing a lot of Jenkins scripts is a valid answer; cause you can really do anything with Jenkins! However I'm more interested in the lighter-weight |
Beta Was this translation helpful? Give feedback.
-
Here's one (untested) idea. In the
This should let users issue pull requests "as usual". Would this work? Any better way? |
Beta Was this translation helpful? Give feedback.
-
Here's a more detailed use case: zephyrproject-rtos/west#543 |
Beta Was this translation helpful? Give feedback.
Here's one (untested) idea. In the
.github/workflows/
of every repo implement this logic:pull/12345/merge
commit that the Github Checkout Action provides by default.west update
everything to the greatest and latest. This will reset the initial git repo; I don't thinkwest update
has any "update all but this repo" option simple to use.git reset
the tested repo to thepull/12345/merge
commit saved in first stepThis should let users issue pull requests "as usual". Would this work? Any better way?