-
-
Notifications
You must be signed in to change notification settings - Fork 263
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 support for Ruby 3.0.0-preview1 #100
Comments
I disagree with that conclusion, preview builds are more useful to a gem library because they indicate a stable build that should work, head often contains things that are in progress and flux. We're safely able to get consistency with a preview build that we cannot with head, meaning we often have to allow failures for head for the stability of our builds, but we don't have that problem with preview. |
I did look thru some of the RSpec repos, and didn't find any GitHub Actions (GHA) workflow files. Anyway... Two differences between GHA and popular CI services are:
So, ruby/ruby is now running a lot more CI jobs than were run using previous CI services. Before GHA, I worked quite a bit with the Travis head build, and it was an automated build that was not tested. All current Ruby MRI head builds in this action are fully tested. There are even a few CLI/bin tests run that check whether the 'install' works, as these may not be tested in ruby/ruby. If tests do not pass, the previous passing head build is left as the build used for CI testing. Ubuntu & macOS builds are done once a day, Windows are run three times a day. There are quite a few repos using the head builds available here, and many do not implement an 'Allow failure' setup for those jobs. If you're basing your opinion on other CI services, maybe try the GHA builds first. If you are using the builds, and are having issues with failures, any feedback (either here or ruby/ruby) would be appreciated. Thanks for RSpec... |
It's on a branch and an issue as we experiment, its early days, you can see the latest "most rubies" setup here: https://github.com/rspec/rspec-core/actions/runs/343419327 We're moving off Travis because Travis is limiting support for open source. Currently we are missing support for 3.0.0-preview1 which would have to remain on Travis, or build a custom image like we may have to do for older Rubies. |
We find people actually use released versions of Ruby, like preview or rc1, rc 2 etc so we need to support them by testing those specific versions. |
Thanks for the GHA run link. I may not have been clear enough, but everything I stated was very specific to MRI builds.
I can understand that, but it can also be stated that adoption of head/master builds for CI has been good, so why should the (probably smaller set of) people using rc builds be accounted for? As mentioned in the link @hsbt provided, rc builds really don't have a lot of significance. There's a good chance if someone reported a bug, the response would be 'have you tried it with current master?'
Old compilers, unsecure OpenSSL etc. It's odd when a group states that they don't have the resources to update their app, so they'd like other people to continue to support old tools used in their infrastructure, whether that be apps, gems, or CI tools. It's a matter of opinion. From my perspective, given finite resources, there are other things to work on other than supporting rc builds... Edit: I'd rather encourage people to use head/master builds all year long rather than use rc builds for a few months. |
We don't get people reporting issues from head, where as we do with the official preview versions. They report bugs to us from RSpec on those versions, we do occasionally refer issues back to Ruby but generally its something a new version is introducing for us to handle that doesn't change. From our perspective we use our finite resources to support fixed versions, especially as preview and release candidates lead to the support of full versions. |
Great to hear :)
That's kind of my point, previews are not stable builds, consider them basically a random commit from ruby/ruby master. The purpose of previews (AFAIK) is to make it easier to build a development version of the upcoming version and gather early feedback. Given Ruby installers support installing Following the idea "make it easier to try", it might make sense to have it for ruby/ruby-builder too, but OTOH ruby/ruby-builder builds are not meant for end users (only to run in GitHub Actions).
So do previews, several APIs have already been renamed since preview1 and many bugs fixed.
rc1/rc2 etc do aim for progressively more stability. I agree with @MSP-Greg. Testing I'll reconsider if there are several concrete cases where using
Yes, that definitely needs Docker or a VM with a old OS. I don't think it's possible to build 1.8 or 1.9 on anything remotely recent. |
Those changes are not in preview1 though, they will be in preview2 or rc1 etc. |
I would treat them exactly the same as reports from people using ruby-head. @JonRowe Could you try To really consider this, we would need to solve the 4 items above. It seems a lot more work than what it's worth. |
FWIW there are Docker builds for each commit of ruby/ruby at https://hub.docker.com/r/rubylang/rubyfarm |
From the link above (https://github.com/rspec/rspec-core/actions/runs/343419327), it appears to have passed? See: https://github.com/rspec/rspec-core/runs/1346985289 |
I'm thinking having RCs in Interestingly, TravisCI doesn't seem to have 3.0.0-preview1, but it has other previews and RCs: https://rubies.travis-ci.org/
I think this is the main issue, and I have no idea how to solve it.
I guess we can just keep them, it's often not so many previews.
Code in CI is probably unlikely to use new experiemental APIs. But in any case, it's not
This point still stands IMHO. But it seems in some cases people want to test against both ruby-head and previews like in the run above. I think @JonRowe wants a good way to answer these issues reported with
|
Travis uses RVM, any version on RVM is available automatically but they don't autogenerate their docs. |
Re Windows, the head/master build system builds from the repo, so builds could be done based on tags. Given how few there are, I'd probably trigger builds manually. But, the other items needed to interact with this action aren't in place (location/releases, available versions, etc). I suppose we could patch https://github.com/ruby/setup-ruby/blob/master/windows-versions.js manually... And, all the issues you mentioned, like when to remove, etc... I guess I still don't see good reason for them. Someone runs CI on a two week old preview/rc, it fails, but head/master passes. What has anyone learned? |
In our case, that something in RSpec doesn't work with a released version of Ruby, and needs fixing or otherwise handling. |
My point of view, and I'm confident this is the point of view of Ruby core too is that previews are not In other words, I think if RSpec officially supports only released versions (seems reasonable for most gems), then it would be completely fair to say it does not support previews (and RCs for that matter), because they are not releases (or "released versions"). Of course, it is still interesting to track ruby-head in RSpec's CI, just it isn't officially supported. |
It's released as in it's on the official downloads page as a preview version, and gets built and used as a binary ruby by developers and is a named version. |
I might be willing to call them 'prereleases', but certainly not 'releases'. What's their lifetime? A few weeks? Speaking of Rubygems, they test on ruby-head and truffleruby daily. As of right now, the first page run list shows only one failure, and that's from truffleruby: https://github.com/rubygems/rubygems/actions?query=workflow%3Adaily-rubygems I suspect you can find plenty of other gems/repos with similar results. Until you've tried it... |
as a person who uses rspec, and before i'd brought up the issue on ruby-builder, i would expect that trying out a ruby prerelease/rc means adding it to the matrix of rubies running my gems (on travis or GitHub actions or just running it on my computer), fixing any incompatibilities that are documented/expected and therefore my fault, and reporting bugs/PRs to authors of gems i'm using for any incompatibilities that seem to be issues with their gems, and to ruby anything that seems to run counter to the documented changes for that prerelease/rc. i wouldn't however feel the same responsibility to try it out and report issues the same way for daily/head builds. maybe my interpretation/expectation is my own confusion and not a real thing ruby team is expecting to be different between rc/prerelease and head/daily |
Assuming you've read the rest of the comments... For me, this is messy, and involves past experiences. I'm not a part of 'Ruby Core', but I've been involved with Windows Ruby for several years, and interacted with them due to that. I've heard people's impressions of the Core team (often negative), and this started when Travis and AppVeyor were the standards for CI. I've concluded that repos/gems testing with ruby head/master provides valuable feedback to the Core team, and they will react to it. Also, even though this is a Ruby repo, the number of people maintaining it is much smaller than the Core team. The people here are involved in other repos, and many of them are running CI on head/master. Hence, 'confusion' really isn't the case, but also the Core team really hasn't addressed the issue, nor is there a communications channel for them to do so. So, my initial reaction to a request for preview/rc builds is, if you're not testing with head/master, come back after you've done that for long enough to determine if it works. There are plenty of repos where it does. <rant off> |
We test ruby head as well. It is not sufficient as we don't get people complaining about issues from it, because most people don't compile Ruby from source to develop with. They do It, running CI for preview releases, is part of our workflow and has been for a long time, we're investigating options to replace our Travis setup and this repo is part of that option currently because it supports the most Rubies so far. We cannot drop supported Ruby versions until the next major, RSpec 4, which we are planning for release around Ruby 3.0.0. until then we are probably going to be supplement Github actions with travis to provide the older builds, but they are currently a major bottleneck spending hours queued. So I may end up forking this / rolling my own docker images to support our full matrix on github actions. So if you do wish to reject this request I understand, but respectfully disagree that preview and rc Rubies are not important enough to test against, I apologise for dragging this off track a bit, that wasn't my intent. |
No need for an apology. Have you thought about doing a CRON build once a day against ruby-head? RubyGems/Bundler does that. I don't know how often you have commits... One issue is whether the problem is your master with ruby master, or your release with ruby master. I've been around for new Ruby releases, both major/minor and patch releases, and people expect them immediately. Previews and rc's would probably be the same, and their lifetime is so short... |
@robotdana This is the difference between previews and RCs. Previews are not meant to test compatibility, RCs are. Previews are only to try out new features, and they might have many incompatible changes, so trying to be compatible with a preview is often not such a good idea. If people want to track compatibility with ruby development, they should use
I think you will need Docker images for 1.8 & 1.9 anyway. Anyway, I am thinking for RCs at least it seems worth supporting in |
I included 3.0.0-preview1 (on Ubuntu & macOS) for the new the set of builds that will be used for #98. |
👏 Thanks, it works for us |
I have a (private) build that successfully used 3.0.0-preview1 ~16 days ago (14 Nov 2020 23:40 CET):
Now (~7 hours ago) it fails:
Was it a mistake that I changed the contents of
From
|
I can't reproduce the last failure above, |
I recently fixed version parsing so it would work for
If you want 3.0.0-preview1 specifically, then of course
Does it fail if you use |
I plan to remove preview/RC builds which already have a full release, see #367 |
👋 We're in the process of switching RSpec over to using Github actions and it would be helpful to use to have have access to preview versions of Ruby 3.0.0.
(It'd also be helpful to have some legacy versions of Ruby such as 1.8.7. and 1.9.2 but I realise thats probably very out of scope, if anyone wants to help get those running on Github actions with us it would be very appreciated).
The text was updated successfully, but these errors were encountered: