-
Couldn't load subscription status.
- Fork 1.3k
Improve CI workflows #2647
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
base: master
Are you sure you want to change the base?
Improve CI workflows #2647
Conversation
07a104a to
aedb197
Compare
Note this is more complicated to do correctly that just
If we've got accurate filtering of which jobs to run (which would be nice), I don't really see a good enough reason to avoid using it on master too. We're not going to have long gaps without a full set of jobs because anything which touches a generic files needs to trigger jobs for all languages. Hooking up |
That's precisely the design that I was planning to add. My plan is to use the design here and a json/yaml file configuration to define all the languages, variants and paths.
My reasoning for that is to have a workflow that could do a sanity check (e.g. there are changes in python-dev, or changes in the compiler, etc.). Pushes to master should be fine in terms of frequency, but this could be on a weekly schedule as well.
👍 |
In the case of There are some dependencies that get installed from sources with more liberal update policies than Ubuntu, but I think the benefits of reducing the number of CI jobs for many pushes to master outweighs the potential downside of not seeing the effects of a breaking change to a target language dependency until we next happen to trigger a build for it (that's actually true already, it's just that such triggering would happen a bit less often with these changes). |
|
By python-dev I was referring to python-3.qw-dev from setup-python github action. And similarly for the other languages, it should be designed to allow for running the latest development versions so that breaking changes can be caught early in the development stage instead of after release |
62bfd4e to
7a30f66
Compare
Signed-off-by: Cristian Le <[email protected]>
Avoids duplication of jobs and concurrency issues Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
- Use `fmf` to simplify the metadata for each toolchain and language check - Trigger language test only if corresponding files are changed - Always trigger all tests if a base swig file is changed Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]> (cherry picked from commit ebc2c4c) (cherry picked from commit bd3fc8a)
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
Signed-off-by: Cristian Le <[email protected]>
20a709e to
d005cac
Compare
|
Hi @LecrisUT , I like your work and I think the pull request is a good one. From my side there are 2 blocking:
|
Agree. After some experimentation I found where the naming comes from and how to simplify, but I cannot get rid of the folder-like structure though, i.e. the
Pay attention to the CI/pass. There it shows if the normal tests fail or not. The additional tests are for |
I like the folder like view.
The folder make it easier to read for example:
You can put the 'lang' and 'tool' after as most developers know TCL is a language and 'GCC' a compiler (tool) As for emoji, I like the idea. You're choosing is better than my ideas.
There is no difference. What we can do is mark these failing tests with "continue-on-error: true" flag. Usually, as the tests take so long, the maintainers prefer not to run them and save the time. If you improve the action: use artefacts and copy the tools from one job to another, than we can save time and add more tests :-) |
Thanks for the feedback, I'll try out some simplifications along those lines.
That is already what is done there (
Indeed, that is why I was trying to get the attention of the maintainers to discuss this change. Basically on my projects I set up a required workflow that points to I can disable the |
Seems you look for a project decision. |
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 left my feedback.
The decision to have failed tests is up to the project Admins.
Group matrix jobs. Dunno how to do this, might postponePartially organized in Checks viewsubmodulesis not needed.github/actions/setup-lang/action.yamlAfter some experimentation, I propose a clean solution using
fmfWhat's fmf?
FMF in a nutshell is an extension to yaml such that you can define and combine yaml files hierarchically. E.g. in a top-level file (
/Lib/main.fmf) you havethen in a child file (
/Lib/python/main.fmf) you can write as:which is equivalent to:
Primarily
fmfis used intmtwhich is a testing-framework where you can define test hierarchically. It might be useful to also use that infrastructure, but for now, one step at a time.Some tips of how to view the data:
Why fmf?
Originally I was planning to store these as json files, but it soon proved quite unwieldy especially due to the duplications across the variants. This approach will allow:
c++20should be added to all languages as experimental, this can be done in the top-level/Lib/main.fmfand all languages will inherit it.strategy.matrixproved quite complicated adding too much boilerplate to the workflows making them unnavigable. In this approach, the wholematrix-githubis passed as a single object.Upstream issues:
files_yaml? tj-actions/changed-files#1528