This document describes the steps to perform an automated release of the Rakudo Compiler. While not required, it can be useful to be familiar with the manual release process, so you know what steps the build robot is performing.
Currently, the automated process does not handle the following items:
Use the script to update the leap seconds table. IMPORTANT: ensure the changes are correct. If future known leap seconds were added manually, the script may end up removing them.
perl tools/update-tai-utc.pl
git diff
# Ensure changes look good
git commit -m 'Update leap seconds table' src/core/Rakudo/Internals.pm
git push
If it's a month relatively early in the calendar year, double-check that the copyright date in the README file includes the current year. (It's not necessary to update copyright dates in other files, unless you know that a given file has been modified in a year not reflected by the fileβs copyright notice.)
Check if any DEPRECATED code needs to be removed because the end of the deprecation cycle is reached. One way of doing this, is to grep on the YYYYMM of the release (e.g. 201612 for the 2016.12 release). If you find any occurrences, remove the code and make sure the spectest is still ok.
Due to several issues (test failures, failure with Inline::Perl5 loading) JVM Rakudo backend is currently not made and tested. You can follow the manual release process and ask Zoffix to enable the JVM backend logic.
If needed, you can look at the source of the release bot; the brunt of the work done by Perl-6-enhanced bash scripts. The Perl6.Fail Web App source code is also available.
Currently, the release happens on the third Saturday of the month, shortly after MoarMV is released by a separate team. You can inquire the release robot in #perl6-dev IRC channel on when the next release date is or view it on Perl6.Fail release stats page:
<Zoffix> NeuralAnomaly: status
<NeuralAnomaly> Zoffix, [β] Next release will be in 1 week and 5 days. Since last release, there are 35 new still-open tickets (0 unreviewed and 0 blockers) and 0 unreviewed commits. See http://perl6.fail/release/stats for details
The perl6.fail web app helps track RT tickets and changelog entries, to ensure on the release date there are no release-blockers and all changes have been recorded in the changelog.
See perl6.fail/about for login credentials information. Only release managers can mark tickets as reviewed. If the app doesn't recognize you as a release manager, ask Zoffix to add you.
Throughout the month, log in on perl6.fail regularly and review new tickets for whether they are blockers. Click the checkmark next to reviewed tickets. Click the warning-sign to indicate the ticket is a release blocker. Which tickets are blockers is left to your discretion, but anything that has a large impact on users is worth being addressed prior to release.
The app also lets you track which commits have been added to the the changelog. The commits can be viewed in the Commits tab on the release stats page.
Add anything that should be known to users into the the changelog. Once a commit has been reviewed, click the question-mark button next to the commit sha to mark the commit as reviewed.
A week before the release, remind users in #perl6-dev
of the upcoming release.
Also, a few days before the release, remind users to double check the changelog to ensure the changes you've been adding during the month accurately reflect what the commits introduced.
The NeuralAnomaly release bot will accept some commands only from release managers. Ensure you are connected to the IRC with the nick and hostname the bot recognizes. Ask Zoffix to add you to the list, if needed.
Currently the bot requires Release Constants to be updated and switched to "production mode" manually (and then restarting the bot).
Also, the release process cannot be aborted via IRC; only by killing the bot.
On the release date, wait until the MoarVM release has been completed, then
issue the cut the release
command to NeuralAnomaly.
The bot will proceed through all the release steps, aborting if any stage fails to complete successfully.
<Zoffix> NeuralAnomaly, cut the release
<NeuralAnomaly> Zoffix, Will do! If you're feeling particularly naughty,
you can watch me at http://perl6.fail/release/progress or go look at
some cats http://icanhas.cheezburger.com/lolcats
<NeuralAnomaly> Zoffix, β β β β β β R6 status is not clean. Cannot proceed
<NeuralAnomaly> Zoffix, β β β β β β β β β β ABNORMAL EXIT!
If you wish to (re-)start the release process from a specific step or to run
just some particular steps, issue the steps
command to view available steps
and then issue the run
command, along with just the steps you wish to run:
<Zoffix> NeuralAnomaly, steps
<NeuralAnomaly> Zoffix, all pre nqp r post pre-r6 pre-blank-slate nqp-clone
nqp-bump-vers nqp-build nqp-test nqp-tar nqp-tar-build nqp-tag nqp-tar-sign
nqp-tar-copy r-clone r-prep-ann r-bump-vers r-build r-p5 r-stress r-stress-v6c
r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp
<Zoffix> NeuralAnomaly, run r-build r-p5 r-stress r-stress-v6c r-tar
r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp
The build log will be displayed in the terminal running the bot, as well
as copied into the file indicated by "release-log"
key in config.json
file.
That file must match where perl6.fail
website expects to find it (if you care
about the site displaying it at all).
Email the generated release announcement to perl6-compiler@perl.org
Update the Wikipedia entry at http://en.wikipedia.org/wiki/Rakudo with the new release version.