Skip to content

Latest commit

 

History

History
173 lines (119 loc) · 5.03 KB

releasing.md

File metadata and controls

173 lines (119 loc) · 5.03 KB

Release guide for maintainers

This doc is only relevant to core members.

Release Policy

Cadence

We aim to release every 3 weeks. Our schedule is set as follows: Two days before the expected Chromium branch point (which is every six weeks) and again exactly 3 weeks after that day. These are Tuesdays.

For example, following this schedule, we will attempt a release on these dates:

  • Sep 29 2020 (M87)
  • Oct 20 2020
  • Nov 10 2020 (M88)
  • Dec 1 2020
  • ...

Italicized dates are two days before the expected Chromium branch point.

The planned ship dates are added to the internal Lighthouse calendar.

If a release is necessary outside these scheduled dates, we may choose to skip the next scheduled release.

In general, the above release dates are when new versions will be available in npm. Within 2 weeks, it will be reflected in LR / PSI. Some 10 weeks later, it will be available in Stable Chrome.

Release manager

Release manager is appointed, according to the list below. However, if the appointed manager is absent, the next engineer in line in the list would own it.

@cjamcl, @adamraine

Versioning

We follow semver versioning semantics (vMajor.Minor.Patch). Breaking changes will bump the major version. New features or bug fixes will bump the minor version. If a release contains no new features, then we'll only bump the patch version.

Release Process

Update various dependencies

In general, Lighthouse should be using the latest version of all of these dependencies:

  1. https://github.com/GoogleChrome/lighthouse-stack-packs
  2. puppeteer and puppeteer-core
  3. third-party-web
  4. snyk
  5. axe-core
  6. js-library-detector
  7. chrome-launcher

On the scheduled release date

Before starting, you should announce to the LH eng channel that you are releasing, and that no new PRs should be merged until you are done.

# Make pristine folder.
bash ./lighthouse-core/scripts/release/prepare-pristine.sh
cd ../lighthouse-pristine
yarn
yarn build-all

# Verify the viewer will work.
yarn serve-viewer
# Works with v4 report? http://localhost:8000/viewer?gist=7251f9eba409f385e4c0424515fe8009
# Works with v5 report? http://localhost:8000/viewer?gist=6093e41b9b50c8d642a7e6bbc784e32f
# Works with v6 report? http://localhost:8000/viewer?gist=94722e917a507feb5371ad51be6c3334
# Works with v8 report? http://localhost:8000/viewer?gist=18d523b86779185ecfd376d58f891e1d
# Current production viewer (https://googlechrome.github.io/lighthouse/viewer/) has forward compat with next major LHR?

# Confirm DevTools integration will work: Do some manual testing on a number of sites.
yarn test-devtools
yarn open-devtools

# Leave pristine folder.
cd ../lighthouse

Lightrider

There is a cron that rolls the latest Lighthouse to the Lightrider canary feed. Make sure it has run recently, and there were no errors that require an upstream fix in Lighthouse

For more, see the internal README for updating Lighthouse: go/lightrider-doc

Hold on submitting a CL until after cutting a release.

Open the PR

Now that the integrations are confirmed to work, go back to lighthouse folder.

# Prepare the commit, replace x.x.x with the desired version
bash ./lighthouse-core/scripts/release/prepare-commit.sh x.x.x
  1. Edit changelog.md before opening the PR
  2. Open the PR with title vx.x.x
  3. Hold until approved and merged

Cut the release

# Package everything for publishing.
bash ./lighthouse-core/scripts/release/prepare-package.sh

# Make sure you're in the Lighthouse pristine repo.
cd ../lighthouse-pristine

# Last chance to abort.
git status
git log

# Publish tag.
git push --follow-tags

# Publish to npm.
npm publish

# Publish viewer and treemap.
yarn deploy-viewer
yarn deploy-treemap

Extensions

The extensions rarely change. Run git log clients/extension to see the latest changes, and re-publish them to the Chrome and Firefox extension stores if necessary.

To test:

  • run yarn build-extension
  • go to chrome://extensions/
  • click "load packed", select dist/extension-chrome-package
  • manually test it

To publish:

# Publish the extensions (if it changed).
open https://chrome.google.com/webstore/developer/edit/blipmdconlkpinefehnmjammfjpmpbjk
cd dist/extension-package/
echo "Upload the package zip to CWS dev dashboard..."
# Be in lighthouse-extension-owners group
# Open <https://chrome.google.com/webstore/developer/dashboard>
# Click _Edit_ on lighthouse
# _Upload Updated Package_
# Select `lighthouse-X.X.X.X.zip`
# _Publish_ at the bottom

# For Firefox: https://addons.mozilla.org/en-US/developers/addon/google-lighthouse/versions/submit/

Chromium CL

git checkout vx.x.x # Checkout the specific version.
yarn devtools ~/src/devtools/devtools-frontend

cd ~/src/devtools/devtools-frontend
git new-branch rls
git commit -am "[Lighthouse] Roll Lighthouse x.x.x"
git cl upload -b 772558

Lightrider

Roll to Lightrider canary, and alert LR team that the next version is ready to be rolled to stable.

Done

Yay!