-
Notifications
You must be signed in to change notification settings - Fork 903
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
CI Improvements #4183
CI Improvements #4183
Conversation
I like this change. I saw people get confused by the fact that only some of the "Build and run tests" CI jobs fail, which made it seem as if the test failure was compiler-dependent when in fact it was not. So if this change splits the building and testing into jobs of their own, that will help present the CI results better. |
a05eb49
to
b2ee761
Compare
It would be better if we could reuse |
I had it setup like that initially (157a94a), but I noticed under Details that it skipped running the tests because the
Added back in now. |
6006bf6
to
c91716f
Compare
0196557
to
9a44b78
Compare
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.
This all looks great now.
Since those gcc and clang versions do exist for ubuntu-22.04 as well, can we use that one (ubuntu-latest will get promoted to ubuntu-24.04 as it arrives), but 20.04 could be deprecated soon, so if that works please do change it). Maybe just gcc-10 would need to be left on 20.04.
Small nitpick is missing empty line at action.yml at the end.
Surprisingly gcc-10 has builds for 24.04, but clang-13 and earlier stop at 22.04 so we will need to update our clang target if we want to use |
a6420fa
to
38ca47c
Compare
I have cleaned few things. Main change is that trigger for action should be all branches (non-filtered), VisualStudio action is updated to latest to get rid of warning (NodeJS version) and for regular build/test we always should use latest, so that change is made for ubuntu. |
Maybe we could split tests so that only the cpp standards run on PRs as a smoke test, and maybe the full range of compilers run periodically (maybe weekly or something) |
Separates `test-linux` into `build-linux` and `test-linux`, wherein `build-` builds out of tree, and uploading the build for the `test-` job. Tar compression is done to retain execution permissions when downloading build artifact. When calling `make test`, override `TARGETS` and `EXTRA_TARGETS` to prevent rebuild.
e.g. when calling `make clean` out-of-tree
Also reduce `${{}}` expansion in `run` blocks.
Switch build artifact to a default clang build. Testing with the build artifact locally, `make test` is failing with `/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`. Using the gcc-11 build (might be?) installing GLIBCXX_3.4.29 but not linking it into the build. Rather than trying to get it to link, just use the pre-installed `clang` instead.
Also rename `build-artifact` to use `matrix.os` for compatibility with testing across OS.
`os_name` in include section needs to be explicit (putting it at the end doesn't apply to the extra jobs). Move macOS test to extra job instead of doing all gcc/clang (which isn't setup for mac anyway). Also adds name to build-yosys task.
Allow test suite to run if, for example, the C++20 builds are failing but C++11 are fine.
Remove compiler and cpp_std from `build-yosys` matrix. Using `config-$CC` will instead fall back to default values. Drop `Tool versions` step and introduce `yosys-config` output instead. Rename `test-builds` to `test-compile`.
`test-macos.yml` included c++17 which was missing in `test-build.yml`.
New Setup Cpp step uses fully qualified paths for $CC and $CXX so ${CC%%-*} no longer works. Remove os_name since it's not needed anymore.
Call yosys-config post build extraction for sanity check. Report absolute path for yosys exe if it can't be found.
Setup script unable to install gcc-12 under ubuntu-20.04.
Get absolute path for `TESTS_DIR` to work from `docs` directory or from `docs/tests` in addition to `yosys` directory.
macOS fails due to missing gvpack, but trying to install graphviz triggers a Python update which breaks the macOS runner.
Limit compilers to oldest and newest. Oldest compilers test with minimum supported standard. Newest compilers test with minimum *and* maximum supported standard.
deb2ce4
to
ff730f4
Compare
Refactor linux/mac tests into unified build and test stages. Builds are performed out-of-tree, compressing and uploading the compiled artifacts to be used in the test stage. The included test suite is run independently from the docs tests. Additional smoke tests for compiler/cpp standard are done separately with a new
compile-only
target. In all, this should provide a much cleaner idea at a glance of what part of the infrastructure is failing.Also updates to use latest OS and compiler.