Conversation
|
Cool :) Maybe let's just drop Travis at the same time and refactor bin/ci to not carry it around anymore? |
| run: bin/ci prepare_build | ||
|
|
||
| - name: Test | ||
| run: bin/ci with_build_env 'make std_spec threads=1' |
There was a problem hiding this comment.
What do you think of trying to run the compiler specs here too?
There was a problem hiding this comment.
The compiler specs are executed later using the compiled compiler. But it takes a lot of time, so this is just a "fail fast" step to catch more common issues before that.
There was a problem hiding this comment.
Note I'm talking about test_linux_32 specifically here. I don't see any other 32bit tests here?
There was a problem hiding this comment.
Oh, sorry! Yup, that's probably a good idea. I just transferred as literal as possible what's currently running on CircleCI, but I don't know why it's not running the whole suite with bin/ci build. @bcardiff do you know why? Resource limits maybe?
There was a problem hiding this comment.
The reason was that the resources were not enough to build the compiler in 32 bits environment. I doubt they will be able to succeed.
Ref: #8283
There was a problem hiding this comment.
I mean otoh, while things like 32bit ARM is still widely used, 32bit x86 is basically dead anyways. I guess we wouldn't be too terrible people if we just drop it as a platform when most Linux distributions and OSes already did so.
There was a problem hiding this comment.
When we have some other 32 bits platform, I will accept to drop 32bits x86 builds. If we drop it before I fear there will be more things broken on 32 bits due to 64 bit assumptions.
Maybe what we can do is to drop the 32 bits compiler and use cross-compilation to test 32 bits std-spec. If we do things that way it will be less things to maintain in the release process. And at the same time pave the way for something between tier 1 and tier 2 (or improve what is offered in tier 2).
There was a problem hiding this comment.
I pocked a bit at 32bit ARVMv7 support in the last couple of days and the current state is... not pretty.
- Stdlib specs break on some random OpenSSL session handshake rejects that sound more like memory corruption than anything else, or perhaps another round of C ABI issues.
Atomicrequires some more fromcompiler-rton the platform and just linking withclang -rtlib=compiler-rthad me run into all kinds of linker issues.compiler_specjust runs out of memory no matter what I do, that is not actual memory but what it can allocate via bdwgc, regardless of--enable-large-config.- Running an armhf docker container on an aarch64 host was so broken, not even
datecould do anything but display random values. - My attempt to
virt-install --arch=armv7lon the aarch64 host would just have the VM hog a CPU and not even show a POST message viavirsh console. - The icing on the cake is that non of my test setups would then even run into the LFS issues other people are seeing. So just setting up a CI somehow doesn't mean we're actually testing that part apparently...
So, that's some road ahead of us and will likely be in the Windows kind of state for a while where we just can run a whatever works right now CI.
There was a problem hiding this comment.
bumpy road ahead 😞 .
Let's decouple the discussion of better 32 bits infra for after this PR then. Do you agree @jhass?
Sure, but let's first make sure this works fine and cover our needs. Travis build is kind of abandoned anyway and seems like it's only there to make noise on our Slack channel 😄 |
|
Umm just so this isn't missed, looks like there are some errors being printed and skipped? Might want to try printing the |
This immediately caught my eye. It feels just weird. Did you do any digging into why Github Actions doesn't flush immediately and wheter it may be possible to change that? If not, I'd still question whether we really need this. I mean it's only really useful if you're monitoring the CI output in real-time. Is that really that common? I mean it takes a long time to run completely, anyways. So is there any real benefit for having a quicker updated output? And if it is important, it begs the question if we should really switch to a CI tool that doesn't support this when the current one works perfectly for this. Alternatively, we could consider an option to split output lines by internal groupings, for example per spec file. That may be more useful than arbitrary amounts? But then it's also less predictable. And I guess using 160 chars nicely lines up with 2 lines of 80 chars. |
|
Someone should run a ruby project with rspec doing sleep 1 in each test, and seeing if that works fine. If so, then I'm sure we don't need that change. But I also agree that real time output for specs is not important in CI. |
|
What is the reason motivating this PR? As far as I have read CircleCI will still be used (for releases). |
|
Most of the time we don't need to monitor CI in real time, but if you go to a running workflow and try to expand the current log, it doesn't show up until a new line is written. Also, really long lines made the entire log to break and not show at all after that line, even after the job finishes. I know these are probably issues that GitHub will eventually fix. I don't want to add more features to specs. That is just a very simple workaround that we could leave undocumented and remove as soon as we don't need it anymore. Motivation behind this PR: jobs running in CircleCI are many times lagging behind. Specially macOS jobs. @bcardiff often has to cancel jobs in order to run release tasks. GitHub allows higher parallelism, even in the free plan (https://help.github.com/en/actions/getting-started-with-github-actions/about-github-actions#usage-limits). Also, @jhass is working on using an external runner for ARM. Once it's done we would have all the environments running in a single place. CircleCI is still superior option in some other aspects, specially maturity. That's why I don't pretend to replace in a single move our CI environment. I just want to run this side by side and evaluate how it behaves for us. But it's impossible to predict without real usage. |
@oprypin that was me poorly using shell interpolations :). Should be fixed now. |
|
What if we change spec to always output a newline after 80 specs? That is, without a configuration and it will also show nicely in consoles (plus you can kind of count how many tests already ran). Maybe make it 100 or 50 to make it even easier to count |
|
That seems like a neat solution until somebody ports fuubar :D |
|
A better solution than altering |
| @@ -0,0 +1,101 @@ | |||
| name: Linux CI | |||
|
|
|||
| on: [push, pull_request] | |||
There was a problem hiding this comment.
Won't this produce duplicate builds? I.e. one for the push and another for the PR?
There was a problem hiding this comment.
Well it does produce duplicates in some sense, when core contributors push a branch to the main repo and then create a PR from that. It's possible to tell it to test only when the push is to master, but then you lose the ability to just push a branch just for the purpose of running CI on it.
So this is fine. It's been this way in win.yml since the start, anyway.
|
Oh, I didn’t know about |
|
I just rolled back the changes in |
|
Probably because each dot is |
|
Yup, I was about to comment the same. The command is executed within a docker container with |
|
You can pass --no-color to spex |
|
Ok but colors are cool too |
|
I guess multiplying the width by 10 would yield the expected result then? |
bcardiff
left a comment
There was a problem hiding this comment.
I think the current status is good enough for stressing the usage of GitHub Actions for CI on PRs.
This is the first step to move CI of PRs and merges to GitHub Actions so we can leave CircleCI for releases. Still lacking some features like saving some artifacts, nicer error reporting or publishing docs from master branch.
I had to make some changes to make this work:
opensslmust be reinstalled because the environment already have an older version and then it was renamed by Homebrew. So it detects it as installed but it's not.SPEC_SPLIT_DOTSwith an integer value will print a newline every that number of specs are executed. Probably the most controversial change of this PR :)bin/ciwith special grouping lines so they show as foldable.