-
Notifications
You must be signed in to change notification settings - Fork 228
chore: Upgrade release system to the toys-release gem #1923
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
Conversation
6cdcf7d to
5a633ee
Compare
|
@dazuma happy to have you back! I started experimenting with release-please since we use it at GitHub to manage our internal gems and it has a wider user base and audience than toys does. It also a few more features that I wanted to introduce in the config repo. E.g. the draft PR accumulating changes. I feel like this is makes tracking pending changes better than our existing flow of requesting a release and reviewing the PR. I didn't know of a simple way to experiment with it that pod not require that we commit changes to directly to this repo. I did not get very far other adding the configuration and running the action a few times. I wasn't ready to commit to anything so I disabled the action and left the configs in place. What is your preferred medium to have follow up discussions around toys vs release-please? Would GitHub discussions work? Slack? And issue? The SIG? |
|
@arielvalentin Let's discuss it in the SIG next week. Sorry I missed yesterday; I was trying to make it, but stuff happened. Edit: Oh, and accumulating subsequent changes into an existing release PR would definitely be a feature I could add to toys-release. |
arielvalentin
left a comment
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.
Mostly improve by trust here. Since the interface is very similar and it's using envars in some cases, I don't see anything surprising.
One thought I had was, why not add toys as a bundler dependency in the top level Gemfile? That would allow us to be able to install toys and run commands locally for testing in a more familiar way.
The actions would then execute installs using Bundler and could potentially cache gemfiles between runs.
This is all food for thought and not really necessary.
I'll also ask for your help to remove any release-please related code and configs in a follow up PR since we are moving forward with new versions of toys.
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | ||
| - name: Install Toys | ||
| run: "gem install --no-document toys -v 0.15.5" | ||
| run: "gem install --no-document toys -v 0.19.1" |
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.
Should we add toys to the project gemfile and use bundle install along with bundle-cache: true?
In general, the best practice for Toys is not to include the toys gem itself in a Gemfile, and not to run I guess in this case, we could work around most of this by creating a custom gemfile used only for the Toys install in these workflows (pointing to it by setting
Yeah, will do. |
This is a long-awaited upgrade to the release system. It was rewritten pretty much from the ground up to be more testable and maintainable. That said, the OTel-Ruby repos exercise the system more than any other customer, so I'll be around to monitor the next releases closely to ensure things go smoothly.
Some key changes:
.toys/release.rb)..toys/.data/releases.yml) and the tool invocations in the GitHub Actions workflows accordingly.Some of the config has also been updated to work with the toys-release gem. Specifically:
main_branchkey defaults tomain, somain_branch: mainis redundant and was removed.commit_lintkey was dropped. The commit linter in general was removed from toys-release, as it was not really maintained and no one was using it. And it has been disabled in our repos anyway. There are better dedicated conventional commit linter tools available if we want to use one.opentelemetry-helpers-sqlandopentelemetry-instrumentation-httpgem configurations. That bug has been fixed, and the hack is no longer necessary.version_rb_pathsettings for gems whose configurations did not need it.There is quite a bit of new functionality and fixed issues in toys-release, that we might choose to take advantage of (again, as a second step after this initial migration). For example:
Finally, I (@dazuma) expect to be able to engage a lot more now on OTel-Ruby. I quit my job at Google a few months ago, in part because it was stifling me and I was not able to make space for open source and community work. Now that I'm out, I've had a chance to, among other things, finish this long-overdue update to the release system. I also should be able to attend the weekly SIGs more often now. So anyone working on this repo, if you have questions, issues, or feature requests regarding the release system and process, please let me know.
I'm keeping this PR in draft until I've had the chance to discuss this update with the other maintainers, and to do some more testing.
Note there is a corresponding pull request in the main opentelemetry-ruby repository: open-telemetry/opentelemetry-ruby#2006
One final note: I notice there is a release-please workflow present in this repository as well. release-please is an alternative release mechanism that could replace toys-release. (In fact, toys-release actually borrows a few of its ideas, such as release pull requests and conventional commit-based changelogs, from release-please.) I have not touched the existing release-please workflow, pending discussion with other maintainers about which direction to go. However, I do have some inside knowledge regarding release-please, so please do not make that decision without discussing with me.