Skip to content

Release process

Timo Tijhof edited this page Jul 19, 2024 · 15 revisions

Make sure AUTHORS.txt is up-to-date. Run this to update the file:

grunt update-authors

Clone jquery-release, cd inside and run the script:

node release.js --remote=jquery/jquery-ui

Before pushing the tag, check a few files:

  • dist/cdn, should have a regular and a min js file, along with all themes
  • themes/ and ui/ should have @VERSION replaced
  • added or updated version property in bower.json and package.json

Dry Run

To test the release process (it changes all the time), run the script against a fork of jquery-ui. See the jquery-release documentation for full details.

Fixing A Bad Release

If you screw up, and you even pushed the tag or the main branch, delete the tag before anyone gets a chance to pull it and revert the main commit.

Pre-releases

For a pre-release, run node release --pre-release={version}.

  • The only CDN that gets updated is the jQuery CDN (automated).
  • The first pre-release will require creating a new versioned site for api.jqueryui.com.
    • All pre-releases require updating the CDN version for the API demos.
  • jqueryui.com will continue to run demos from the current stable version.
  • Skip notifying other projects.

Create Changelog

The release script generates a shell for the changelog along with a dump of all commits and closed tickets. Finalize the changelog, by looking for all remaining __TICKETREF__ entries, and either fixing the missing reference, deleting the placeholder but keeping the line, or deleting the entire line. Then add it to the jqueryui.com repo:

  • Add page/changelog/{version}.md.
  • Modify page/changelog.md to include a link to the new changelog.

If this is a major release, create an upgrade guide.

  1. Add page/upgrade-guide/{version}.md.
  2. Modify page/upgrade-guide.md to include a link to the new upgrade guide.

Update GitHub

  • Create a milestone for the next release if one doesn't exist yet.
  • If this is a stable release, close the relevant milestone on GitHub. Move any open issues/PRs in that milestone to a milestone for the next version.
  • For stable versions: go to the Releases tab and create an entry for the release. It should be very simple, it should mostly link to the release blog post. See previous entries for a pattern.

Update CDNs

jQuery CDN

Nothing to do here, all automated. Just check that the new release is on releases.jquery.com.

Google CDN

  1. Email Google and attach zip.

Microsoft CDN

  1. Use CDN upload tool and email Microsoft.

download.jqueryui.com

  1. Update config.json to include the new version. Update the jQuery version if necessary.
  2. Add/update template/zip/index-*.html to include any new widgets
  3. Commit
  4. Run npm version patch and npm publish
  5. Push main and the new tag to GitHub.

jqueryui.com

  1. Update changelog and upgrade guide (see above).
  2. Update homepage versions and links.
  3. Update version and supported browsers on browser-support page.
  4. Add pages for any new widgets (and add it to the demos index, if still necessary).
  5. Update page/download/all.md to include the new release.
  6. Update package.json with new download.jqueryui.com version.
  7. npm install
  8. Add code and theme zips to /resources/download/
    1. Run grunt build-download create-quickdownload (see #9743).
    2. Then add the new zip files, git add them.
  9. Commit and push to GitHub.

api.jqueryui.com

  1. If necessary, create a new x-x branch. To get it deployed:
    1. Add to sites.php in jquery-wp-content
    2. Update hieradata/common.yaml in infrastructure-puppet, push staging to GitHub
  2. If available, merge the x-x branch with updates for the new version into master.
  3. Update versions in other files: Search for the previous version number and update all references.
  4. Commit and push to GitHub.

jquery-wp-content

  1. Update themes/api.jqueryui.com/functions.php to include the new version
  2. If necessary, updated sites.php (see above)
  3. Commit and push to GitHub.

Debugging

If any of these fail, try ssh builder-01.ops.jquery.net and look into /usr/local/wordpress-repos/ or /var/www/download.jqueryui.com

Finally

  1. Review everything on stage.
  2. If there was an infrastructure-puppet change, merge staging to production.
  3. Point the deployed branch to the previously created tag in download.jqueryui.com, push the deployed branch.
  4. Tag jqueryui.com and push to GitHub.
  5. Tag api.jqueryui.com and push to GitHub.
  6. Tag jquery-wp-content and push to GitHub.
  7. Verify results on live server.

Write Blog Post

See previous blog post for outline. Pick the right one for major/minor releases.

  1. Use the generated contributors file for the list of people to thank. Remove duplicates (mostly username vs full name). Use this to generated comma-separated list:
ruby -e 'puts File.read("contributors.txt").split("\n").join(", ")' | pbcopy
  1. Search for the previous version number and update all references.
  2. Reference the right upgrade guide and changelog.
  3. Update the narrative parts, usually the first paragraph.
  4. Save draft, check all links, have someone review it.
  5. Publish!

Tweet about it

Look at previous release tweets for references. Don't get too creative.

Notify other projects to update