Skip to content

Release: migrate release process to release-it #5512

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 11, 2024
Merged

Conversation

timmywil
Copy link
Member

@timmywil timmywil commented Jun 17, 2024

Summary

  • This migrates the release process from jquery-release to release-it and some custom scripts.
  • Also, now that we no longer need to build on Node 10 or maintain jquery-release scripts, this PR migrates all files in the build folder to use ESM.
  • Moved the dist and dist-module wrapper files to wrappers/ folders to make packaging and cleaning release-only files easier. All references to those files have been updated and it should have no effect on the exports.

Authors

  • Checking and updating authors has been migrated
    to a custom script in the repo

Changelog

  • changelogplease is no longer maintained; replace with custom script
  • generate changelog in markdown for GitHub releases
  • generate changelog 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

Checklist

This PR currently has feature parity with jquery-release, but these are a few things I'd like to add:

Future Improvements

  • Add workflow to verify new release builds are reproducible
  • Document updated release process in build/release/README.md
  • Generate contributors list with links to GH profiles
  • (stable only) Update version in jquery.com repo
  • (stable only) Update version in jquery-wp-content
  • (stable only) Update version in api.jquery.com demos (entries2html.xsl)
  • (optional) Close GH milestone

Sorry, something went wrong.

timmywil added a commit to timmywil/jquery that referenced this pull request Jun 21, 2024
*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

*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

*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

Fixes jquery/jquery-release#114
Closes jquerygh-5512
@timmywil timmywil marked this pull request as ready for review June 21, 2024 13:55
@timmywil
Copy link
Member Author

timmywil commented Jun 21, 2024

I've tested each step of this individually. The final test will be to try a real release, but we can wait until after the next beta release.

@timmywil timmywil marked this pull request as draft June 22, 2024 21:19
timmywil added a commit to timmywil/jquery that referenced this pull request Jun 29, 2024
*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

*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

*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

Fixes jquery/jquery-release#114
Closes jquerygh-5512
@timmywil timmywil force-pushed the release branch 2 times, most recently from c3001dd to 5d4d591 Compare June 29, 2024 19:33
@timmywil timmywil requested a review from mgol July 1, 2024 18:33
@timmywil timmywil marked this pull request as ready for review July 1, 2024 18:33
@timmywil
Copy link
Member Author

timmywil commented Jul 1, 2024

I realized we can go ahead and review this. I'd like to add a couple things that jquery-release didn't have for stable releases, but those things are optional and could be added in future PRs.

timmywil added a commit to timmywil/jquery that referenced this pull request Jul 4, 2024
*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

*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

*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

Fixes jquery/jquery-release#114
Closes jquerygh-5512
timmywil added a commit to timmywil/jquery that referenced this pull request Jul 4, 2024
*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

*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

*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

Fixes jquery/jquery-release#114
Closes jquerygh-5512
Copy link
Member

@mgol mgol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'll be great to have reproducible builds!

I added some comments.

@timmywil timmywil requested a review from mgol July 8, 2024 20:06
Copy link
Member

@mgol mgol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Remaining comments can be addressed separately later.

timmywil added a commit to timmywil/jquery that referenced this pull request Jul 10, 2024
*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, which should
  be set to `1` for the first pre-release of a type. For
  example, `--preRelease=beta --preReleaseBase=1` will release
  `.beta.1` as the first beta release, rather than `.beta.0`.

Fixes jquery/jquery-release#114
Closes jquerygh-5512
@timmywil
Copy link
Member Author

timmywil commented Jul 10, 2024

Changes since last approval:

  1. Now generating a contributors.html that includes author names and links to their GH profiles for use in the blog post "Thanks" section. So much better than what I was using before! I was looking up each GH username manually.
  2. Added a "Setup" section to the release README, which includes basic setup instructions like cloning and installing dependencies, but more importantly setup instructions for logging into npm and ensuring a github token is set in the environment, with an easy link to create a new token if necessary. The token is used for publishing release notes on GH and generating the contributors list with GH profile links.
  3. Updated release-it to 17.5.0, which includes the new --preReleaseBase option, which we now always set to 1 in the npm script. This ensures all pre-releases of a kind start at .1 instead of .0 and is a noop for stable releases.
  4. Updated AUTHORS.txt to prepare for the upcoming release.

timmywil added a commit to timmywil/jquery that referenced this pull request Jul 10, 2024
*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 jquerygh-5512
timmywil added a commit to timmywil/jquery that referenced this pull request Jul 10, 2024
*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 jquerygh-5512
Copy link
Member

@mgol mgol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still LGTM after the latest changes. Just a small note on leftover larger numbers in lists.

timmywil added 2 commits July 11, 2024 09:55
*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 jquerygh-5512
@timmywil timmywil merged commit 862e7a1 into jquery:main Jul 11, 2024
13 checks passed
timmywil added a commit that referenced this pull request Jul 11, 2024
*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
@timmywil timmywil deleted the release branch July 11, 2024 14:00
@mgol mgol added this to the 4.0.0 milestone Jul 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

2 participants