Skip to content

Latest commit

 

History

History
155 lines (124 loc) · 5.89 KB

RELEASE.md

File metadata and controls

155 lines (124 loc) · 5.89 KB

Release process

This guide walks you through the QUnit release.

⚠️ WARNING ⚠️

Before starting, make sure you have:

System prerequisites:

  • Node.js 12, or later.
  • Git 2.11, or later.
  1. Ensure that all changes for this release have been merged into the main branch. For patch releases, try landing any other bug fixes; for minor releases, ensure new features have been documented and tested. Major releases likely have their own checklist.

  2. Create a local release branch, and ensure it is up-to-date:

    • Verify that the canonical repository is cloned (not a fork):
    git remote -v
    # …
    # origin	[email protected]:qunitjs/qunit.git
    
    • Create or reset the release branch:
    git remote update && git checkout -B release -t origin/main
    
  3. Install dev dependencies and run the tests:

    npm ci && npm test
    

    Run the tests in various real browsers, either locally or via BrowserStack:

    python3 -m http.server 4000
    # or:
    # php -S localhost:4000
    
    open http://localhost:4000/test/
    
  4. Create and push the release preparation commit:

    1. Update the package.json and AUTHORS.txt files, by running the below command (replace @VERSION with the release version):
      node build/prep-release.js @VERSION
      
      • Use git add -p to review the changes.
      • In AUTHORS.txt, if you see duplicate entries, then use the .mailmap file to normalize them to a canonical name and e-mail address, and then re-run the above command.
      • Edit History.md to remove change not relevant to end-users (e.g. changes relating to tests, build, internal refactoring, doc fixes, etc.).
    2. Commit the above changes with the following message (replace @VERSION with the release version):
      Build: Prepare @VERSION release
      
    3. Push the release branch to GitHub.
    4. Create a pull request, and merge it once CI is passing.

Performing the release

  1. Create a local release branch, and ensure it is up-to-date:

    • Run git remote -v and verify the following:
    origin [email protected]:qunitjs/qunit.git
    
    • Create or reset the release branch:
    git remote update && git checkout -B release -t origin/main
    
    • Verify that the latest commit is your release preparation commit:
    git show
    # Build: Prepare x.y.z release
    # …
    
  2. Make changes for the release commit:

    • Set the release version for npm and Bower metadata (replace @VERSION with the release version):
    node build/set-release.js @VERSION
    

    This script will edit package.json and bower.json. It does not need any credentials or permissions, apart from read-write in the project directory.

    • Generate the release artifacts:
    npm run build
    
    • Review the changes to the package and library files, compared to the previous release.
    node build/review-package.js @LAST_VERSION
    
    # … reviews package.json, qunit.js, and qunit.css
    
  3. Commit and publish the release to GitHub.
    ⚠️ Do not push to the main branch!

    git add -f package.json bower.json qunit/
    git commit -m "Release @VERSION"
    git tag -s "@VERSION" -m "Release @VERSION"
    git push --tags
    
  4. Verify that Bower sees the release, by running bower info qunit and checking that the latest version is indeed the version we just published.

  5. Publish the release to npm:

    • Use git status to confirm once more that you have a clean working copy, apart from release artifacts in qunit/.
    • Run npm publish, this will bundle the current directory and publish it to npm with the name and version specified in package.json.
    • Verify that the release is displayed at https://www.npmjs.com/package/qunit.
  6. Publish the release to the jQuery CDN:

  • Prepare the commit locally:
node build/auth-cdn-commit.js real @VERSION

This will clone jquery/codeorigin.jquery.com, copy the qunit/ release artifacts and rename them to qunit-@VERSION, and create a local commit.

  • Review the commit and push it:
cd __codeorigin
git show
# …
git push

Updating the website

After the release is published, we need to update the website.

Check out the main branch of the qunitjs/qunitjs.com repository, and ensure it is clean and up-to-date. Update release links and demos to use the version we just released, using this script:

qunitjs.com$ node build/set-version.js <version>

Stage the changes it made, and commit with the following message:

All: Update url and version to <version>

Push the commit, and check the website in a few minutes to verify the change (deployment log).

Final steps

You're almost there! Make sure you update GitHub releases using the changelog from History.md.

Finally, make an announcement on the @qunitjs Twitter account. Mention highlights of the release if possible, andinclude a link to the release page.

That's it! If you made it this far, congratulations you have successfully released a version of QUnit!

If anything in the above was inaccurate or unclear, improve it to mmake future releases easier!