Joomla

Release procedure and checklist: Difference between revisions

From Joomla! Documentation

Rolandd (talk | contribs)
Review by PLT
Line 12: Line 12:
# Communication pre-release: inform Bug Squad and LT's about timing
# Communication pre-release: inform Bug Squad and LT's about timing
# Decision: when the above has positive result, set a date and time for release
# Decision: when the above has positive result, set a date and time for release
# Communication pre-release: inform Global Moderators about upcoming release
# [Communication pre-release: inform Global Forum Moderators about upcoming release]
# Communication pre-release: check availability and assign release tasks to JBS and PLT members
# Communication pre-release: check availability and assign release tasks to JBS and PLT members
# Minimum 7 days prior to release: freeze trunk for language changes
# Minimum 14 days prior to a minor release: freeze trunk for language changes
# Minimum 7 days prior to a patch release: freeze trunk for language changes
# Minimum 3 days prior to release: freeze trunk for all changes, draft release notes to translation teams, package release candidate for testing
# Minimum 3 days prior to release: freeze trunk for all changes, draft release notes to translation teams, package release candidate for testing
# Day of release: set project flags on Joomlacode, update web pages
# Day of release: add the new release on Joomlacode and upload the files, update web pages
# Announce on forum, announce to LT's
# Announce on forum, announce to LT's
# Verify the links on the https://www.joomla.org/download.html and https://developer.joomla.org/development-status.html page
# Contact caped crusader for updating Joomla related sites
# Update the sites:
  http://help.joomla.org/proxy


=== Pre-release phase ===
=== Pre-release phase ===
# Apply latest translations (need to be delivered by translation work group).
# Apply latest installation translations (need to be delivered by translation work group Thomas Hunziker).
# Create test package.
# Create pre-release package for testing.
# Offer test package to testers: [[Bug Squad]] members, [[Development Team]] members, translation members, and [https://groups.google.com/forum/#!forum/jtesters JTesters]
# Offer pre-package to testers: [[Bug Squad]] members, [[Development Team]] members, translation members, and [https://groups.google.com/forum/#!forum/jtesters JTesters]
# If problems are found during this stage, go back to fix the problem. Use the [[Joomla! Maintenance Procedures]] and repeat until tests are performed successfully.
# If problems are found during this stage, go back to fix the problem. Use the [[Joomla! Maintenance Procedures]] and repeat until tests are performed successfully.
# Draft the release notes on Joomla.org and post draft to the [http://forum.joomla.org/viewforum.php?f=54 private translation forum].
# Draft the release notes on Joomla.org and post draft to the [http://forum.joomla.org/viewforum.php?f=54 private translation forum].
Line 30: Line 35:
=== Release phase ===
=== Release phase ===
# Check with JSST for security fixes. *
# Check with JSST for security fixes. *
# Create release notes document on joomla.org and post copy to translation forum.
# Create release notes document on joomla.org.
# Ensure version information is correct (libraries/cms/version/version.php)
# Ensure version information is correct (libraries/cms/version/version.php)
# Update administrator/manifests/files/joomla.xml file for version number and date.
# Update administrator/manifests/files/joomla.xml file for version number and date.
# Make sure there is at least one .sql update file in the com_admin/sql/updates/<db> folders (to update the database schema).
# Check language/en-GB/en-GB.files_joomla.sys.ini file for version number (not needed for minor update).
# Check language/en-GB/en-GB.files_joomla.sys.ini file for version number (not needed for minor update).
# Enable install check. *
# Commit and tag release locally
# Commit and tag release locally, *DO NOT* push to GitHub until post release (especially if security fixes are merged)
# Package build
# Package build.
# Push to Github
# Offer test package to testers: [[Bug Squad]] members, [[Development Team]] members, translation members
# If problems are found during this stage, go back to fix the problem. Use the [[Joomla! Maintenance Procedures]] and repeat until tests are performed successfully.
# If problems are found during this stage, go back to fix the problem. Use the [[Joomla! Maintenance Procedures]] and repeat until tests are performed successfully.
# Add package to joomlacode.org
## Before the release is public, set the JoomlaCode package flags as follows: Visible=No, Public=No, Require Login=Yes.
## Set the Release flags as follows: Visible=Yes, Released=Yes.
## Once package is released, change the Package flags to Visible=Yes, Public=Yes, Require Login=No.
## Change the prior version package to Visible=No but leave the prior version release flags as they are.
# Add package to GitHub
# Add package to GitHub
## This must be done after the version has been tagged and the tag pushed to GitHub due to how the Releases system works
## This must be done after the version has been tagged and the tag pushed to GitHub due to how the Releases system works
## After pushing the tag, edit the release and attach all of the release packages to the release.
## After pushing the tag, edit the release and attach all of the release packages to the release.
## Copy the description from a previous release and update for the new release.
## Copy the description from a previous release and update for the new release.
# Update XML file on site for the new version number information.
# Update XML file on update.joomla.org site for the new version number information.
## FTP connect to update1.joomla.org and Navigate to www/core
## FTP connect to update1.joomla.org and Navigate to www/core
## All releases
## All releases
Line 73: Line 71:
# Publish security articles on developer site. *
# Publish security articles on developer site. *
# Publish release announcement on Joomla.org
# Publish release announcement on Joomla.org
# Publish announcement on the forum
# Publish announcement on the forum [Peter Martin]
# Update Wiki: FAQ, Version history
# Update Wiki: FAQ, Version history [Mat]
# Email OSM list
# Post to leadership in Glip
# Create the Web Platform Installer packs and submit them *
# Create the Web Platform Installer packs and submit them *
# Add package to joomlacode.org
## Before the release is public, set the JoomlaCode package flags as follows: Visible=No, Public=No, Require Login=Yes.
## Set the Release flags as follows: Visible=Yes, Released=Yes.
## Once package is released, change the Package flags to Visible=Yes, Public=Yes, Require Login=No.
## Change the prior version package to Visible=No but leave the prior version release flags as they are.


Note: Items with an asterisk can be skipped for non-stable releases
Note: Items with an asterisk can be skipped for non-stable releases


=== Post-release & Finalization phase ===
=== Post-release & Finalization phase ===
# Merge release branch to series development head (2.5 -> 2.5.x branch, 3.x -> master branch)
# Push release changes from local to remote Github repo
## Security fixes (if any)
## Version tag
## Version changes (SQL files, version.php, joomla.xml)
## Install checks
# Update Github repo for new version development
# Update Github repo for new version development
## Remove install checks
## Remove install checks
## Update version in version.php, joomla.xml, SQL files, SQL update files
## Update version in version.php, joomla.xml
# Delete old release branch after confirming all commits are merged to series development head
# Delete old release branch after confirming all commits are merged to series development head and there are no open pull requests
# Close security issues in security tracker
# Close security issues in security tracker



Revision as of 19:28, 21 May 2016


This is a general checklist when a version of Joomla! is released. Keep in mind that a major release differs a lot from a Minor Release or even a Maintenance Release. The checklist here describes the steps that need to be done for (at least) Maintenance Release and Minor Release.

Release checklist

It depends on the Development Cycle when the checklist is triggered. A release can be done during every stage of the Development Cycle, it does not matter if you release a beta or a stable version, this is a general checklist that can be used when releasing a new version of Joomla! The checklist starts when it's decided to release a version:

Preparation phase

  1. Communication pre-release: check with PLT on timing
  2. Communication pre-release: inform Bug Squad and LT's about timing
  3. Decision: when the above has positive result, set a date and time for release
  4. [Communication pre-release: inform Global Forum Moderators about upcoming release]
  5. Communication pre-release: check availability and assign release tasks to JBS and PLT members
  6. Minimum 14 days prior to a minor release: freeze trunk for language changes
  7. Minimum 7 days prior to a patch release: freeze trunk for language changes
  8. Minimum 3 days prior to release: freeze trunk for all changes, draft release notes to translation teams, package release candidate for testing
  9. Day of release: add the new release on Joomlacode and upload the files, update web pages
  10. Announce on forum, announce to LT's
  11. Verify the links on the https://www.joomla.org/download.html and https://developer.joomla.org/development-status.html page
  12. Contact caped crusader for updating Joomla related sites
  13. Update the sites:
 http://help.joomla.org/proxy

Pre-release phase

  1. Apply latest installation translations (need to be delivered by translation work group Thomas Hunziker).
  2. Create pre-release package for testing.
  3. Offer pre-package to testers: Bug Squad members, Development Team members, translation members, and JTesters
  4. If problems are found during this stage, go back to fix the problem. Use the Joomla! Maintenance Procedures and repeat until tests are performed successfully.
  5. Draft the release notes on Joomla.org and post draft to the private translation forum.
  6. Obtain any CVE numbers needed.
  7. Draft security notices as needed and leave unpublished on developer.joomla.org.

Release phase

  1. Check with JSST for security fixes. *
  2. Create release notes document on joomla.org.
  3. Ensure version information is correct (libraries/cms/version/version.php)
  4. Update administrator/manifests/files/joomla.xml file for version number and date.
  5. Check language/en-GB/en-GB.files_joomla.sys.ini file for version number (not needed for minor update).
  6. Commit and tag release locally
  7. Package build
  8. Push to Github
  9. If problems are found during this stage, go back to fix the problem. Use the Joomla! Maintenance Procedures and repeat until tests are performed successfully.
  10. Add package to GitHub
    1. This must be done after the version has been tagged and the tag pushed to GitHub due to how the Releases system works
    2. After pushing the tag, edit the release and attach all of the release packages to the release.
    3. Copy the description from a previous release and update for the new release.
  11. Update XML file on update.joomla.org site for the new version number information.
    1. FTP connect to update1.joomla.org and Navigate to www/core
    2. All releases
      1. Change version attribute in list.xml (don't add new line except when incrementing major/minor version numbers)
    3. LTS Release
      1. Change the update elements for the series with the new version number and new downloadurl and link to new archive file to extension.xml
    4. STS Release
      1. Navigate to www/core/sts
      2. Change version attribute in list_sts.xml (don't add new line except when incrementing major/minor version numbers)
      3. Change the update elements for the series with the new version number, new downloadurl and link to new archive file to extension_sts.xml, and the infourl linking to the release announcement
    5. Test auto update from prior version(s) (make sure XML files have been copied to the CDN on update.joomla.org first)
      1. All releases
        1. Navigate to www/core/test
        2. Change version attribute in list_test.xml (don't add new line except when incrementing major/minor version numbers)
      2. LTS
        1. Upload patch package to this folder
      3. Change the update elements for the series with the new version number, new downloadurl and link to new archive file to extension_sts.xml, and the infourl linking to the release announcement
      4. STS
        1. Navigate to www/core/teststs
        2. Upload patch package to this folder
      5. Change the update elements for the series with the new version number, new downloadurl and link to new archive file to extension_sts.xml, and the infourl linking to the release announcement
  12. Update Joomla.org Download article *
  13. Publish security articles on developer site. *
  14. Publish release announcement on Joomla.org
  15. Publish announcement on the forum [Peter Martin]
  16. Update Wiki: FAQ, Version history [Mat]
  17. Post to leadership in Glip
  18. Create the Web Platform Installer packs and submit them *
  19. Add package to joomlacode.org
    1. Before the release is public, set the JoomlaCode package flags as follows: Visible=No, Public=No, Require Login=Yes.
    2. Set the Release flags as follows: Visible=Yes, Released=Yes.
    3. Once package is released, change the Package flags to Visible=Yes, Public=Yes, Require Login=No.
    4. Change the prior version package to Visible=No but leave the prior version release flags as they are.

Note: Items with an asterisk can be skipped for non-stable releases

Post-release & Finalization phase

  1. Update Github repo for new version development
    1. Remove install checks
    2. Update version in version.php, joomla.xml
  2. Delete old release branch after confirming all commits are merged to series development head and there are no open pull requests
  3. Close security issues in security tracker

Pages to update

  1. Global:

Sites to update

  1. PLT Owned sites

Calculating Release Statistics

Using JoomlaCode and CHANGELOG

  1. Extract *all* issues from Tracker into spreadsheet. Make note of the date of the last release and the number of active issues at the time of the last release.
  2. Set a filter on the "Closed Date" column to be "after" "the day of the last release".
    • Calculate "Closed" count by aggregating status values for Closed, Duplicate Report, Known Issue, Not a bug, Not Joomla! Core, Unable to Confirm.
    • Calculate "Fixed in SVN" count by aggregating status values for Open and Information Required. (Note: this value is presented two times in the report.)
  3. Set a filter on the "Closed Date" column to be blanks:
    • Calculate "Open" count by aggregating status values for "Open" and "Information Required."
    • Calculate "Confirmed" count by aggregating status values for "Confirmed" and "In Progress."
    • Calculate "Pending" count by aggregating status values for "Pending" and "Ready to Commit."
  4. Calculate the "New Active Issues" by aggregating the "Open", "Confirmed" and "Pending" counts.
  5. Calculate the "net increase/decrease" by subtracting the "Last Release Active Issues" from the "New Active Issues."
  6. Count the "number of commits" by reviewing the CHANGELOG.php file and counting the documented commits.

Using GitHub

  1. Go to https://github.com/joomla/joomla-cms/compare/<version>...master where <version> is the previous release, this is GitHub's comparison view and will give stats from the previous release tag to the currently published master
  2. From this page, you can compile the number of commits, contributors, and files changed during the release period

Download Statistics

  1. Go to http://joomlacode.org/gf/project/joomla/frs/?action=FrsReport
  2. In the filter bar, set the start date to the date of the previous release and the end date to the day before the new release
  3. The "Downloads By Package" chart is the total number of downloads for each release (i.e. 2.5.16 and 3.2.0) and includes an "Other" piece for all older version downloads
  4. The "Downloads By Release" chart separates the packages by new install and updates

Alternative Method for Stats

  • Fixed in SVN: Create query with close date > date of prior release and status = Fixed in SVN.
  • Commits: Count from CHANGELOG.php as indicated above.
  • New Reports: Run query with all status codes and open date > date of prior release.
  • Increase / decrease in active issues: See note below
  • Closed: Run query with closed date > date of prior release and status code one of Closed, Duplicate Report, Known Issue, Not a bug, Not Joomla! Core, Unable to Confirm.
  • Open at time of release: query of all issues with status = Open or Information Required
  • Confirmed at time of release: query of all issues with status = Confirmed or In Progress
  • Pending at time of release: query of all issues with status = Pending or Ready to Commit

Increase/Decrease in Active Issues

  • Total active issues now = Open at time of release + Confirmed at time of release + Pending at time of release
  • This number minus the total active as of prior release is the net increase or decrease

As a check, make sure the following formula works:

  • Prior release total active issues + New Reports - (Closed + Fixed in SVN) should equal the Total Active Issues now.