Skip to content

Conversation

@dazuma
Copy link
Member

@dazuma dazuma commented Jan 7, 2026

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:

  • The release system is now distributed as a gem, toys-release. So loading it is less sketchy than depending on a tag in another repository as we've been doing before. This change currently pins the toys-release gem version at 0.4.0 (see the file .toys/release.rb).
  • Most of the interfaces are mostly the same, but backward compatibility was not a goal here. I updated the release configs (.toys/.data/releases.yml) and the tool invocations in the GitHub Actions workflows accordingly.
  • I set the GitHub Actions workflows to run on Ruby 4.0 and Toys 0.19.1. In particular, toys-release requires at least Toys 0.19.0. Ruby 4.0 isn't really necessary, but toys-release uses it by default. If people are more comfortable using 3.4, I can change it to that version.

Some of the config has also been updated to work with the toys-release gem. Specifically:

  • The main_branch key defaults to main, so main_branch: main is redundant and was removed.
  • The docs_builder_tool key was dropped. Toys-release now just uses yard doc directly to build docs (and indeed, we don't use any of it here but the build pipeline is now a lot more modular and customizable). That said, this repo is currently not configured to build and publish documentation during releases, so that key wasn't really used anyway. I think we disabled it because we had trouble with it a few years ago. I can try to set it up again if we want, as a second step after doing this initial migration.
  • The commit_lint key 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.
  • I removed the trailing slash hack for the opentelemetry-exporter-otlp gem configuration. That bug has been fixed, and the hack is no longer necessary.
  • I removed version_rb_path settings 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 opentelemetry-ruby-contrib repository: open-telemetry/opentelemetry-ruby-contrib#1923.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant