-
-
Notifications
You must be signed in to change notification settings - Fork 950
ReleaseDocumentation
Charles Oliver Nutter edited this page Sep 1, 2026
·
89 revisions
-
AA. Software setup
- Install maven
- Install Java
- Install install4j9
Notes
- Retrieve from https://www.ej-technologies.com/install4j/download9
- Install it
- I believe there is license key prompt
- Resulting config is in (~/.config/install4j/v9/config.xml).
-
A. Pre-prep
- Make sure a release has no blockers (tests in later steps are good at shagging issues out)
- Make sure there are no untargetted closed issues or PRs
- Move remaining open issues for the current issues to future release milestones
-
B. Set up environment
- switch to JDK 21 for JRuby 10.x, JDK 8 for JRuby 9.x
- ensure current jruby/bin is in PATH
- specify version for release:
export JRUBY_VERSION=10.1.1.0 - specify Ruby version for this release:
export RUBY_VERSION=4.0 - set
REPO=<path to repository for release> - set
INSTALL4J_EXECUTABLE=<path to install4jc command
-
C. Run tool/release.sh to push bits (same as the following steps):
what script does
echo $JRUBY_VERSION > VERSION
mvn
git add VERSION bin/.jruby.release core/pom.xml lib/pom.xml pom.xml shaded/pom.xml
git commit -m "Version $JRUBY_VERSION updated for release"
cd .. && rm -rf release && git clone jruby release && cd release
mvn clean deploy -Psonatype-oss-release -Prelease
jrake post_process_artifacts # final prep of release artifacts including installer
-
D. Sanity tests (now all done in CI with every push; repeating here is optional)
- unpack bin dist and make sure it works
- Simple rails app with migration(s) (now done in CI: https://github.com/jruby/jruby/pull/9453)
- look for unwanted files
- look for it being too big (done by check_versions.sh script)
- unpack src dist and compile it (now done in CI: https://github.com/jruby/jruby/pull/9453)
- Verify windows installers (now done in CI: https://github.com/jruby/jruby/pull/9454)
- Does jruby-complete work with rubygems (especially on windows) (now done in CI: https://github.com/jruby/jruby/pull/9453)
- unpack bin dist and make sure it works
-
E. Release Notes and Web site prep (jruby.github.io)
- Run from jruby.org site repo (git@github.com:jruby/jruby.github.io.git) with Ruby 3.4 (Ruby 4.0 fails to install some extensions)
- Run
bundle exec rake update_for_version(with the env JRUBY_VERSION still set). This will:
what script does
- edit _config.yml
- edit downloads.html
- add _posts/2013-12-06-jruby-1-7-9.markdown
- add files/downloads/9.3.3.0/index.html
- edit files/downloads/index.html to add new release
- Add text to newly generated _post to highlight interesting fixes/features
- Notable changes, especially stdlib updates, Java integration changes, security issues
- External contributors in alphabetical order by GitHub account name
- Using CRuby run
bundle exec rake serverand check all links
-
F. Publish
-
F.A Finalize Bits
gem push "../release/release/jruby-jars-${JRUBY_VERSION}.gem"- Deploy release bundle on sonatype (https://central.sonatype.com/publishing)
- push website (once maven has propagated fully and we can see our artifacts)
-
F.B Update to next development cycle
git tag $JRUBY_VERSION-
git push origin $JRUBY_VERSIONto propagate tag once release artifacts are out (gem, maven) - edit VERSION for next version (with -SNAPSHOT)
-
mvnto generate new pom files git add VERSION core/pom.xml lib/pom.xml pom.xml shaded/pom.xml bin/.jruby.release-
git commit -m "Update for next development cycle"andgit push - close milestone on GH and open new milestone for next release
-
F.C add release to github
- use markdown from website posting
- attach binaries
- jruby-bin-9.3.2.0.tar.gz
- jruby-bin-9.3.2.0.zip
- jruby-src-9.3.2.0.tar.gz
- jruby-src-9.3.2.0.zip
- jruby_windows_9_3_2_0.exe
- jruby_windows_x64_9_3_2_0.exe
- jruby-jars-9.3.2.0.gem
- jruby-complete-9.3.2.0.jar
-
F.D Update all Ruby installers and Docker
- Send PR to https://github.com/rvm/rvm with PR like: https://github.com/rvm/rvm/pull/5145
- Update config/db, config/known, config/known_strings, config/md5 and config/sha512
- Push PR and add entry to CHANGELOG
- Send PR to https://github.com/sstephenson/ruby-build with PR like: https://github.com/olleolleolle/ruby-build/commit/3b14690ddec4f90cbc264c54af16d617f845c94a
- Run
script/update_jruby <version> shareand submit PR - Once merged, this will trigger release for the
setup-rubyGitHub Action
- Run
- Send PR to https://github.com/postmodern/ruby-versions with file checksums and version numbers as detailed here: https://github.com/postmodern/ruby-versions/blob/master/CONTRIBUTING.md
- Run
update.sh jruby <version> - Update jruby/stable.txt
- submit PR
- Run
- Update official Docker images
- Update release VERSION file to release (e.g. 10.1/VERSION to 10.1.1.0)
- Push a new snapshot release of JRuby (
mvn deploy -Psnapshots) - Update dev VERSION file to next version (e.g. 10.1-dev/VERSION to 10.1.2.0)
- Update Dockerfiles using the update.sh script
- Send PR to https://github.com/docker-library/official-images updating the
library/jrubyfile like this PR: https://github.com/docker-library/official-images/pull/9318- See https://github.com/jruby/jruby/issues/5598#issuecomment-748281323 for a description of the process.
- Update jbang catalog at https://github.com/jruby/jbang-catalog
- Send PR to https://github.com/rvm/rvm with PR like: https://github.com/rvm/rvm/pull/5145
-
-
G. Notifications
- Send emails to ruby-talk@ruby-lang.org, jruby@ruby-lang.org and release stakeholders (bcc to not share email address)
- tweet, toot, facebook, linkedin, reddit, #jruby on Ruby Central Slack, JRuby Discord, JRuby Matrix
- If latest highest support level release (new point releases of older JRubys should not cause these to update):
- /msg chanserv OP #jruby
- /msg chanserv TOPIC #jruby Get 9.4.12.0! http://jruby.org/ | http://wiki.jruby.org | http://logs.jruby.org/jruby/ | http://bugs.jruby.org | Paste at http://gist.github.com
- Update room info for https://app.element.io/#/room/#jruby:matrix.org
- Send out to all known packagers JRubyDistributions
- Change URLs to have SHA256 after file url#SHA256
- Inform support customers of new release (@headius)