From 2470d1e9cc058eda02b3d4548494e11d6d6ae041 Mon Sep 17 00:00:00 2001 From: Johan Bay Date: Tue, 8 Sep 2020 11:05:51 +0200 Subject: [PATCH] chore: update documentation on rolling chromium (#6399) Co-authored-by: Mathias Bynens --- CONTRIBUTING.md | 12 ++++++++++++ utils/check_availability.js | 32 ++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 90f9a1ac0a88a..f49a7eb4b3e8f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -269,6 +269,18 @@ See [Debugging Tips](README.md#debugging-tips) in the readme. # For Project Maintainers +## Rolling new Chromium version + +The following steps are needed to update the Chromium version. + +1. Find a suitable Chromium revision + Not all revisions have builds for all platforms, so we need to find one that does. + To do so, run `utils/check_availability.js -rb` to find the latest suitable beta Chromium revision (see `utils/check_availability.js -help` for more options). +1. Update `src/revisions.ts` with the found revision number. +1. Run `npm run ensure-correct-devtools-protocol-revision`. + If it fails, update `package.json` with the expected `devtools-protocol` version. +1. Run `npm run tsc` and `npm install` and ensure that all tests pass. If a test fails, bisect the upstream cause of the failure, and either update the test expectations accordingly (if it was an intended change) or work around the changes in Puppeteer (if it’s not desirable to change Puppeteer’s observable behavior). + ## Releasing to npm Releasing to npm consists of the following phases: diff --git a/utils/check_availability.js b/utils/check_availability.js index d706c70bb9ddd..e24e2b9dc3605 100755 --- a/utils/check_availability.js +++ b/utils/check_availability.js @@ -60,7 +60,9 @@ Usage: node check_availability.js [] [] options -f full mode checks availability of all the platforms, default mode - -r roll mode checks for the most recent Chromium roll candidate + -r roll mode checks for the most recent stable Chromium roll candidate + -rb roll mode checks for the most recent beta Chromium roll candidate + -rd roll mode checks for the most recent dev Chromium roll candidate -h show this help browser version(s) @@ -71,8 +73,9 @@ Examples To check Chromium availability of a certain revision node check_availability.js [revision] - To find a Chromium roll candidate for current Stable Linux version + To find a Chromium roll candidate for current stable Linux version node check_availability.js -r + use -rb for beta and -rd for dev versions. To check Chromium availability from the latest revision in a descending order node check_availability.js @@ -97,7 +100,13 @@ function main() { case 'f': break; case 'r': - checkRollCandidate(); + checkRollCandidate('stable'); + return; + case 'rb': + checkRollCandidate('beta'); + return; + case 'rd': + checkRollCandidate('dev'); return; default: console.log(helpMessage); @@ -148,19 +157,18 @@ async function checkOmahaProxyAvailability() { stopWhenAllAvailable: false, }); } - -async function checkRollCandidate() { +async function checkRollCandidate(channel) { const omahaResponse = await fetch( - 'https://omahaproxy.appspot.com/all.json?channel=stable&os=linux' + `https://omahaproxy.appspot.com/all.json?channel=${channel}&os=linux` ); - const stableLinuxInfo = JSON.parse(omahaResponse)[0]; - if (!stableLinuxInfo) { - console.error('no stable linux information available from omahaproxy'); + const linuxInfo = JSON.parse(omahaResponse)[0]; + if (!linuxInfo) { + console.error(`no ${channel} linux information available from omahaproxy`); return; } - const stableLinuxRevision = parseInt( - stableLinuxInfo.versions[0].branch_base_position, + const linuxRevision = parseInt( + linuxInfo.versions[0].branch_base_position, 10 ); const currentRevision = parseInt( @@ -169,7 +177,7 @@ async function checkRollCandidate() { ); checkRangeAvailability({ - fromRevision: stableLinuxRevision, + fromRevision: linuxRevision, toRevision: currentRevision, stopWhenAllAvailable: true, });