diff options
author | Timmy Willison <timmywil@users.noreply.github.com> | 2023-07-27 11:24:49 -0400 |
---|---|---|
committer | Timmy Willison <timmywil@users.noreply.github.com> | 2024-07-11 10:00:56 -0400 |
commit | 2646a8b07fcc2cf7cf384724f622eb0c27f9166c (patch) | |
tree | 3367ad18d492486a692bb4a7a23b216ba155451f /build/release/README.md | |
parent | 3a98ef91dfa0b4897df7562f40bfd1715f5fc30e (diff) | |
download | jquery-2646a8b07fcc2cf7cf384724f622eb0c27f9166c.tar.gz jquery-2646a8b07fcc2cf7cf384724f622eb0c27f9166c.zip |
Release: migrate release process to release-it
*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
*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
- move dist wrappers to "wrappers" folders for easy removal
of all built files
- limit certain workflows to the main repo (not forks)
- version in package.json has been set to beta.1 so that
the next release will be beta.2
- 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.
Fixes jquery/jquery-release#114
Closes gh-5512
Diffstat (limited to 'build/release/README.md')
-rw-r--r-- | build/release/README.md | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/build/release/README.md b/build/release/README.md new file mode 100644 index 000000000..2cdd65e8a --- /dev/null +++ b/build/release/README.md @@ -0,0 +1,116 @@ +# 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 contributor list generated in the below release script. + - 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. 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 | |