mirror of
https://github.com/jquery/jquery.git
synced 2024-12-09 08:04:24 +00:00
53ad94f319
- the date is actually the date of the commit *prior* to the tag commit, as the files are built and then committed. - also, the CDN should still be checked for non-stable releases, and should use different filenames (including in the map files). - certain files should be skipped when checking the CDN. - removed file diffing because it ended up being far too noisy, making it difficult to find the info I needed. - because the build script required an addition, release verification will not work until the next release. - print all files in failure case and whether each matched - avoid npm script log in GH release notes changelog - exclude changelog.md from release:clean command - separate the post-release script from release-it for now, so we can keep manual verification before each push. The exact command is printed at the ened for convenience. Closes gh-5521
124 lines
4.7 KiB
Markdown
124 lines
4.7 KiB
Markdown
# 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:
|
|
|
|
- [Node.js](https://nodejs.org/) (latest LTS version)
|
|
- [npm](https://www.npmjs.com/) (comes with Node.js)
|
|
- [git](https://git-scm.com/)
|
|
|
|
## Setup
|
|
|
|
1. Clone the jQuery repo:
|
|
|
|
```sh
|
|
git clone git@github.com:jquery/jquery.git
|
|
cd jquery
|
|
```
|
|
|
|
1. Install the dependencies:
|
|
|
|
```sh
|
|
npm install
|
|
```
|
|
|
|
1. Log into npm with a user that has access to the `jquery` package.
|
|
|
|
```sh
|
|
npm login
|
|
```
|
|
|
|
The release script will not run if not logged in.
|
|
|
|
1. Set `JQUERY_GITHUB_TOKEN` in the shell environment that will be used to run `npm run release`. The token can be [created on GitHub](https://github.com/settings/tokens/new?scopes=repo&description=release-it) and only needs the `repo` scope. This token is used to publish GitHub release notes and generate a list of contributors for the blog post.
|
|
|
|
```sh
|
|
export JQUERY_GITHUB_TOKEN=...
|
|
```
|
|
|
|
The release script will not run without this token.
|
|
|
|
## Release Process
|
|
|
|
1. Ensure all milestoned issues/PRs are closed, or reassign to a new milestone.
|
|
1. Verify all tests are passing in [CI](https://github.com/jquery/jquery/actions).
|
|
1. Run any release-only tests, such as those in the [`test/integration`](../../test/integration/) folder.
|
|
1. Ensure AUTHORS.txt file is up to date (this will be verified by the release script).
|
|
|
|
- Use `npm run authors:update` to update.
|
|
|
|
1. 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.
|
|
|
|
1. Run a dry run of the release script:
|
|
|
|
```sh
|
|
BLOG_URL=https://blog.jquery.com/... npm run release -- -d
|
|
```
|
|
|
|
1. If the dry run is successful, run the release script:
|
|
|
|
```sh
|
|
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` and `tmp/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:
|
|
|
|
```sh
|
|
BLOG_URL=https://blog.jquery.com/... npm run release -- --preRelease=beta
|
|
```
|
|
|
|
`preRelease` can also be set to `alpha` or `rc`.
|
|
|
|
**Note**: `preReleaseBase` is set in the npm script to `1` to ensure any pre-releases start at `.1` instead of `.0`. This does not interfere with stable releases.
|
|
|
|
1. Run the post-release script:
|
|
|
|
```sh
|
|
./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.
|
|
|
|
1. Once the release is complete, publish the blog post.
|
|
|
|
## Stable releases
|
|
|
|
Stable releases have a few more steps:
|
|
|
|
1. Close the milestone matching the current release: https://github.com/jquery/jquery/milestones. Ensure there is a new milestone for the next release.
|
|
1. Update jQuery on https://github.com/jquery/jquery-wp-content.
|
|
1. Update jQuery on https://github.com/jquery/blog.jquery.com-theme.
|
|
1. Update latest jQuery version for [healthyweb.org](https://github.com/jquery/healthyweb.org/blob/main/wrangler.toml).
|
|
1. Update the shipping version on [jquery.com home page](https://github.com/jquery/jquery.com).
|
|
|
|
```sh
|
|
git pull jquery/jquery.com
|
|
# Edit index.html and download.md
|
|
git commit
|
|
npm version patch
|
|
git push origin main --tags
|
|
```
|
|
|
|
1. Update the version used in [jQuery docs demos](https://github.com/jquery/api.jquery.com/blob/main/entries2html.xsl).
|
|
|
|
1. Email archives to CDNs.
|
|
|
|
| CDN | Emails | Include |
|
|
| --- | ------ | ------- |
|
|
| Google | 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 |
|