*Authors* - Checking and updating authors has been migrated to a custom script in the repo *Changelog* - changelogplease is no longer maintained - generate changelog in markdown for GitHub releases - generate changelog in HTML for blog posts - generate contributors list in HTML for blog posts *dist* - clone dist repo, copy files, and commit/push - commit tag with dist files on main branch; remove dist files from main branch after release *cdn* - clone cdn repo, copy files, and commit/push - create versioned and unversioned copies in cdn/ - generate md5 sums and archives for Google and MSFT *build* - implement reproducible builds and verify release builds * uses the last modified date for the latest commit * See https://reproducible-builds.org/ - the verify workflow also ensures all files were properly published to the CDN and npm *docs* - the new release workflow is documented at build/release/README.md *verify* - use the last modified date of the commit before the tag - use versioned filenames when checking map files on the CDN - skip factory and package.json files when verifying CDN *misc* - now that we don't need the jquery-release script and now that we no longer need to build on Node 10, we can use ESM in all files in the build folder - limit certain workflows to the main repo (not forks) - version has been set to the previously released version 3.7.1, as release-it expects - release-it added the `preReleaseBase` option and we now always set it to `1` in the npm script. This is a noop for stable releases. - include post-release script to be run manually after a release, with further steps that should be verified manually Ref jquery/jquery-release#114 Closes gh-5522
4.7 KiB
Releasing jQuery
This document describes the process for releasing a new version of jQuery. It is intended for jQuery team members and collaborators who have been granted permission to release new versions.
Prerequisites
Before you can release a new version of jQuery, you need to have the following tools installed:
Setup
-
Clone the jQuery repo:
git clone git@github.com:jquery/jquery.git cd jquery
-
Install the dependencies:
npm install
-
Log into npm with a user that has access to the
jquery
package.npm login
The release script will not run if not logged in.
-
Set
JQUERY_GITHUB_TOKEN
in the shell environment that will be used to runnpm run release
. The token can be created on GitHub and only needs therepo
scope. This token is used to publish GitHub release notes and generate a list of contributors for the blog post.export JQUERY_GITHUB_TOKEN=...
The release script will not run without this token.
Release Process
-
Ensure all milestoned issues/PRs are closed, or reassign to a new milestone.
-
Verify all tests are passing in CI.
-
Run any release-only tests, such as those in the
test/integration
folder. -
Ensure AUTHORS.txt file is up to date (this will be verified by the release script).
- Use
npm run authors:update
to update.
- Use
-
Create draft blog post on blog.jquery.com; save the link before publishing. The link is required to run the release.
- Highlight major changes and reason for release.
- Add HTML from the
changelog.html
generated in the below release script. - Use HTML from the
contributors.html
generated in the below release script in the "Thanks" section.
-
Run a dry run of the release script:
BLOG_URL=https://blog.jquery.com/... npm run release -- -d
-
If the dry run is successful, run the release script:
BLOG_URL=https://blog.jquery.com/... npm run release
This will run the pre-release script, which includes checking authors, running tests, running the build, and cloning the CDN and jquery-dist repos in the
tmp/
folder.It will then walk you through the rest of the release process: creating the tag, publishing to npm, publishing release notes on GitHub, and pushing the updated branch and new tag to the jQuery repo.
Finally, it will run the post-release script, which will ask you to confirm the files prepared in
tmp/release/cdn
andtmp/release/dist
are correct before pushing to the respective repos. It will also prepare a commit for the jQuery repo to remove the release files and update the AUTHORS.txt URL in the package.json. It will ask for confirmation before pushing that commit as well.For a pre-release, run:
BLOG_URL=https://blog.jquery.com/... npm run release -- --preRelease=beta
preRelease
can also be set toalpha
orrc
.Note:
preReleaseBase
is set in the npm script to1
to ensure any pre-releases start at.1
instead of.0
. This does not interfere with stable releases. -
Run the post-release script:
./build/release/post-release.sh $VERSION $BLOG_URL
This will push the release files to the CDN and jquery-dist repos, and push the commit to the jQuery repo to remove the release files and update the AUTHORS.txt URL in the package.json.
-
Once the release is complete, publish the blog post.
Stable releases
Stable releases have a few more steps:
-
Close the milestone matching the current release: https://github.com/jquery/jquery/milestones. Ensure there is a new milestone for the next release.
-
Update jQuery on https://github.com/jquery/jquery-wp-content.
-
Update jQuery on https://github.com/jquery/blog.jquery.com-theme.
-
Update latest jQuery version for healthyweb.org.
-
Update the shipping version on jquery.com home page.
git pull jquery/jquery.com # Edit index.html and download.md git commit npm version patch git push origin main --tags
-
Update the version used in jQuery docs demos.
-
Email archives to CDNs.
CDN | Emails | Include |
---|---|---|
hosted-libraries@google | tmp/archives/googlecdn-jquery-*.zip |
|
Microsoft | damian.edwards@microsoft, Chris.Sfanos@microsoft | tmp/archives/mscdn-jquery-*.zip |
CDNJS | ryan@ryankirkman, thomasalwyndavis@gmail | Blog post link |