-
Notifications
You must be signed in to change notification settings - Fork 9.4k
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
docs(releasing): add schedule, more explicit integration testing #9695
Changes from 12 commits
ef2d5e2
9f0d4a3
8b42b6b
f1bae92
32a808b
1dbab63
2974415
375dc9a
e11b9c9
c54e33d
dcb7935
5ffd3a6
81310d7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,23 @@ | |
|
||
### Cadence | ||
|
||
We ship once a month, on the Thursday before the 1st. While not necessary, followup minor/patch releases may be done if warranted. The planned ship dates are added to the internal Lighthouse calendar. | ||
We aim to release every 3 weeks. Our schedule is set as follows: One day before the [expected Chromium branch point](https://www.chromium.org/developers/calendar) (which is every six weeks) and again exactly 3 weeks after that day. | ||
|
||
For example, following this schedule, we will attempt a release on these dates: | ||
|
||
* _Oct 15 2019_ | ||
* Nov 5 2019 | ||
* _Nov 26 2019_ | ||
* Dec 17 2019 | ||
* ... | ||
|
||
Italicized dates are the day before the expected Chromium branch point. | ||
|
||
The planned ship dates are added to the internal Lighthouse calendar. | ||
connorjclark marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
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. About a week later, it will be reflected in LR / PSI. Some 10 weeks later, it will be available in Stable Chrome. | ||
|
||
### Release manager | ||
|
||
|
@@ -16,6 +32,8 @@ Release manager follows the below _Release Process_. | |
|
||
### Release publicity | ||
|
||
Note: actively undergoing changes by @exterkamp and @egsweeny. | ||
|
||
1. Release mgr copies changelog to a new [Releases](https://github.com/GoogleChrome/lighthouse/releases). Tags and ships it. | ||
* Include a line of `We expect this release to ship in the DevTools of Chrome XX`. | ||
1. Release mgr tells the _LH public_ Hangout chat about the new version. | ||
|
@@ -25,35 +43,104 @@ Release manager follows the below _Release Process_. | |
|
||
### Versioning | ||
|
||
We follow [semver](https://semver.org/) versioning semantics (`vMajor.Minor.Patch`), to align with the greater Node community. Generally, this means our bi-weekly releases will bump a minor. Though we will release a new patch version if high-priority fixes are required before the next schedule release. Additionally, if a schedule release contains no new features, then we'll only bump the patch version. | ||
We follow [semver](https://semver.org/) 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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
probably enough meat on that question for a separate PR but wanted to leave the thought in here all the same :) |
||
|
||
|
||
## Release Process | ||
|
||
Note: You'll wanna be on a Linux machine, since the Lightrider step will require that. | ||
connorjclark marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### 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. | ||
|
||
```sh | ||
# Run the tests. | ||
bash ./lighthouse-core/scripts/release/test.sh | ||
# Change into the pristine folder. | ||
cd ../lighthouse-pristine | ||
``` | ||
|
||
Confirm DevTools integration will work: | ||
```sh | ||
# You should have Chromium already checked out at ~/chromium/src | ||
# See: https://www.chromium.org/developers/how-tos/get-the-code | ||
|
||
# Roll to Chromium folder. | ||
yarn devtools | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @paulirish wasn't there a way (used to be a way?) to live-edit devtools? Could we do that with Lighthouse so that the releaser isn't dependent on rebuilding? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yahh there is a thing now. https://chromium-review.googlesource.com/c/chromium/src/+/1791150 this might just work for us. but might not because remote modules. |
||
|
||
# Checkout latest Chromium code. | ||
cd ~/chromium/src | ||
git pull | ||
git new-branch lh-roll-x.x.x | ||
gclient sync | ||
autoninja -C out/Release chrome blink_tests | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. how bad is this without goma? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh it's unbearable. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. woah I've never even heard of autoninja 😮 |
||
|
||
# Run tests and rebase. | ||
yarn --cwd ~/chromium/src/third_party/blink/renderer/devtools test 'http/tests/devtools/audits/*.js' --reset-results | ||
# Verify the changes are expected. | ||
git diff | ||
|
||
# Verify that the Audits panel still works. Consider the new features that have been added. | ||
# If anything is wrong, stop releasing, investigate, and prioritize landing the PR. | ||
|
||
# For bonus points, add some tests covering new features. Either a new test, or an extra | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if this is a priority we should figure out a way to have this done when new features land. Putting it here means either we'll never release because no one will want to take on the extra work or this will never be done :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. New features usually come with a smoke test, so the day they run smoothly in all of our integrations, we get this for free. |
||
# assertion in an existing test. | ||
|
||
git cl upload --bypass-hooks | ||
# Go to Gerrit, run CQ dry run, ensure the tests all pass. | ||
``` | ||
|
||
Confirm Lightrider integration will work: | ||
```sh | ||
# See the internal README for updating Lighthouse. | ||
|
||
# Test things out locally, if happy, deploy to canary and see how the graphs react. 20 minutes should be enough time. | ||
|
||
# Do the stuff in "Test LR changes in Canary". | ||
# https://g3doc.corp.google.com/chrome/headless/lightrider/README.md?cl=head#test-lr-changes-in-canary | ||
connorjclark marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
# Verify that Lightrider works properly, and is generating reports fully. Consider the new features that have been added. | ||
# Note: if the changes include proto changes make sure that the API has those new fields. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can we automate this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe @exterkamp would be interested in doing this in the future |
||
# If anything is wrong, stop releasing, investigate, and prioritize landing the PR. | ||
|
||
# For bonus points, add some tests covering new features. Either a new test, or an extra | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same as for devtools |
||
# assertion in an existing test. | ||
``` | ||
|
||
Now that the integrations are confirmed to work, go back to `lighthouse` folder. | ||
|
||
```sh | ||
# Run the tests | ||
# Run the tests again. | ||
# Note: you can skip this if you didn't need to land any changes. | ||
bash ./lighthouse-core/scripts/release/test.sh | ||
|
||
# Prepare the commit, replace x.x.x with the desired version | ||
bash ./lighthouse-core/scripts/release/prepare-commit.sh x.x.x | ||
|
||
# Open the PR and await merge... | ||
echo "It's been merged! 🎉" | ||
echo "It's been merged! 🎉" | ||
|
||
# Run the tests again :) | ||
# One last test (this script uses origin/master, so we also get the commit with the new changelog - that commit should be HEAD). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should this step be run in pristine? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The release scripts cd to pristine. You always run them from a development checkout. |
||
bash ./lighthouse-core/scripts/release/test.sh | ||
# Package everything for publishing | ||
bash ./lighthouse-core/scripts/release/prepare-package.sh | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Mention making a release in GH to get the x.x.x tag, which is required for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's not a required step for making a tag, the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fwiw, this should also be a very easy automatable step given a GITHUB_KEY in your env variables. |
||
|
||
# Make sure you're in the Lighthouse pristine repo we just tested. | ||
cd ../lighthouse-pristine | ||
|
||
# Publish to NPM | ||
# Sanity check: last chance to abort. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should/can we add flags to these to get them to fail if somethings not right? i.e. we're looking for a porcelain git status and the master/tagged version commit in |
||
git status | ||
git log | ||
|
||
# Publish to npm. | ||
npm publish | ||
|
||
# Publish viewer | ||
# Publish viewer. | ||
yarn deploy-viewer | ||
|
||
# Upload the extension | ||
# Publish the extension. | ||
open https://chrome.google.com/webstore/developer/edit/blipmdconlkpinefehnmjammfjpmpbjk | ||
cd dist/extension-package/ | ||
echo "Upload the package zip to CWS dev dashboard..." | ||
|
@@ -66,4 +153,17 @@ echo "Upload the package zip to CWS dev dashboard..." | |
|
||
# * Tell the world!!! * | ||
echo "Complete the _Release publicity_ tasks documented above" | ||
|
||
# Roll the tagged commit to Chromium and update the CL you made. Do not land, see next section. | ||
# Roll the tagged commit to LR and land the CL. | ||
``` | ||
|
||
### Chromium CL | ||
|
||
If this is a branching week, wait until _after_ the branch point email, then land the CL. | ||
|
||
Otherwise, you can land it immediately. | ||
|
||
### The following Monday | ||
|
||
Evaluate LR staging, if all looks good, promote to production! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. any link here back to the comms around LR? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't feel comfortable writing this down with no established history of being able to pull this off and without a bot doing the releasing, but I guess I'm comfortable with you taking the heat for it, @connorjclark :)