4.15.4 Release checklist
Checklist
Build
- [x] ~Bump MockBot to Bot Framework SDK release 4.15.4~ (not needed for patch release)
- https://www.npmjs.com/package/botbuilder/v/latest
- [x] ~Bump
botframework-directlinejstox.y.z~ (no newer version) - [x] Bump to
4.15.4- [x] Update
CHANGELOG.mdto mark specific changes in4.15.4 - [x] Run
npm version --no-git-tag-version 4.15.4 - [x] Merged into
main, the PR number is #4416 - Commit is
2348572 - Do not merge any other unrelated changes after this PR. Any other PR merged, will need to be re-tested
- [x] Update
- [x] Run daily pipeline manually, set "generate release version number" to
true- (This will not push to NPM or CDN)
- Pipeline name is
BotFramework-WebChat-daily - The build number is
322037and commit is2348572
- [x] Wait for
WebChat-release-testingpipeline to complete- Pipeline name is
Push-Release-Testing-to-GitHub-Pages - The release ID is
425
- Pipeline name is
- [x] Check component governance and make sure there are no high/critical related to code under
/packages/folder- There could be some for projects under
/samples/folder, as they are pointing to previous version of Web Chat
- There could be some for projects under
- [x] Add manual tests to
WebChat-release-testingas needed
Test
The test should run against the build artifacts from Azure Pipelines.
- [x] Manual testing on major browsers using
webchat-release-testing- [x] Before starting testing, update all the browser version to latest
- [x] Chrome 105.0.5195.127
- [x] Edge 107.0.1387.0
- [x] Firefox 104.0.2
- [x] IE11 (Windows 11 22H2 22622.598)
- [x] macOS Safari 16.0 (17614.1.25.9.10)
- [x] iOS Safari 16.0
- [x] iPadOS Safari 15.7
- [x] Android Chrome 105.0.5195.79
- [x] Test specific fixes related to
4.15.4and previous releases- [x] Upload a file of 1024 bytes while using Polish locale
Release
- [x] Verify on WebChat-release-testing
- [x] Make sure you are on
main~orqfe~ branch, rungit statusto check - [x]
git pull - [x] Verify
/package.json,/package-lock.json, andCHANGELOG.mdhas a version of4.15.4 - [x]
git log- Verify the latest commit is
2348572
- Verify the latest commit is
- [x]
git tag v4.15.4 - [x]
git push -u upstream v4.15.4- You do not need to kick off a build again, use the previous build
- [x] Create a new GitHub release, copy entries from
CHANGELOG.md- [x] Subresource Integrity can be generated by
- From local:
cat webchat.js | openssl dgst -sha384 -binary | openssl base64 -A - From CDN:
curl -H 'Accept-Encoding: gzip' https://cdn.botframework.com/botframework-webchat/4.15.4/webchat.js | gunzip - | openssl dgst -sha384 -binary | openssl base64 -A
- From local:
- [x] Attach assets including 3 JS files,
stats.jsonand 5 tarballs- You can copy the artifacts from
webchat-release-testing/drops - Tarballs download from npmjs
curl -LO https://registry.npmjs.org/botframework-directlinespeech-sdk/-/botframework-directlinespeech-sdk-4.15.4.tgz curl -LO https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-4.15.4.tgz curl -LO https://registry.npmjs.org/botframework-webchat-core/-/botframework-webchat-core-4.15.4.tgz curl -LO https://registry.npmjs.org/botframework-webchat-api/-/botframework-webchat-api-4.15.4.tgz curl -LO https://registry.npmjs.org/botframework-webchat-component/-/botframework-webchat-component-4.15.4.tgz
- You can copy the artifacts from
- [x] Subresource Integrity can be generated by
- [x] Kick off release to NPM
- [x] Kick off release to CDN (cutoff at 2PM PST, Mon-Thu only)
- [x] Prepare the email for approval
- [x] Send reminder email to approvers
- [x] Retain the build indefinitely
Post-release verification - complete within 30 minutes after release to NPM
- [x] Test using
webchat-release-testing- [x] Clone https://github.com/corinagum/WebChat-release-testing/
- [x]
01.create-react-app- [x] Nuke
01.create-react-app/node_modules - [x]
npm install - [x]
npm install [email protected](just install the bundle package) - [x]
npm run build
- [x] Nuke
- [x] Others
- Using script tags from https://github.com/microsoft/BotFramework-WebChat/releases/tag/v4.15.4, with subresource integrity
<script crossorigin="anonymous" integrity="sha384-hm7B00mbtnkFvRyz6+PZuG2yfM3JaBdEUPYw7BEPKQWZqu1s3G8KFiyOIqOMEk+v" src="https://cdn.botframework.com/botframework-webchat/4.15.4/webchat.js" ></script> <script crossorigin="anonymous" integrity="sha384-9pDJTvPL0wLKBbhzIDeYtyOXpMQgf3VVqPMKPWKTs+p/J8oOqOEy0piRhj9Atlzz" src="https://cdn.botframework.com/botframework-webchat/4.15.4/webchat-es5.js" ></script> <script crossorigin="anonymous" integrity="sha384-yyVMTpA21TwmR+Cfm3ktfuYwApD/XUCxVYOSfUssIKI05H25L/2D5bJQ817fFsMp" src="https://cdn.botframework.com/botframework-webchat/4.15.4/webchat-minimal.js" ></script>
- Using script tags from https://github.com/microsoft/BotFramework-WebChat/releases/tag/v4.15.4, with subresource integrity
- [x]
npx serve(at repo root) - [x] Go to http://localhost:5000/ to test, including IE11
Notification to interested parties
- [ ] Update partner page on Adaptive Cards doc
- https://docs.microsoft.com/en-us/adaptive-cards/resources/partners
- PR at https://github.com/MicrosoftDocs/AdaptiveCards/pull/XXX
- [ ] Notify related parties for the following fixes
- [ ] SDK team
- [ ] Omnichannel
- [ ] Pooja/Zhipeng
- [ ] ~Update root README.md with feature notes -- Note: PR will be combined with post-release checklist PR~
Post-release checklist
These are chores that we should do before starting the cycle to reduce ripple effects if we do it in mid-cycle.
Tips:
- Clean your repo before start
- Remove
node_modulesfrom all folder-
git clean -fdx
-
- Never delete
package-lock.json - If you mess it up, tableflip and redo
- In
component/package.json- Remove reference to
botframework-webchat-coreby hand-modifyingpackage.json - Then,
npm install(symlinks will be broken afterward) - Then, add those references back by hand-modifying
package.json - This also applies for other packages with similar dependencies/symlinks
- To build afterward, do tableflip to rebuild those symlinks
- Remove reference to
Applies to all releases
This list should be copied to versions in the future.
- [ ] ~If on QFE branch, make sure
CHANGELOG.mdand version number bump is cherry-picked tomain~- [ ] ~
git checkout main~ - [ ] ~
git cherry-pick XXX(the commitish for bumping version number andCHANGELOG.md)~
- [ ] ~
- [ ] ~If needed, correct the date for 4.15.4 in
CHANGELOG.mdin PR #XXX~- ~There could be last minute fixes that could push the planned date later than the one in
CHANGELOG.md~
- ~There could be last minute fixes that could push the planned date later than the one in
- [ ] Bump
package.jsonto4.15.5-0in PR #XXX- Run
npm version prepatch --no-git-tag-version
- Run
- [ ] Update
servicingPlan.jsonin PR #XXX- Add deprecation notes for previous versions
- Subresource integrity hash from https://github.com/microsoft/BotFramework-WebChat/releases/tag/v4.15.4
- [ ] ~Update all samples to use
4.15.4in PR #XXXX~- Some samples are pointing to GitHub Releases because the sample need new features from daily build
- Search "https://github.com/microsoft/BotFramework-WebChat/releases/download/"
- And replace with "https://cdn.botframework.com/botframework-webchat/latest/"
- [ ] ~Clean up unnecessary branch on official repo~
- [ ] Understand production-hitting vulnerabilities
- [ ] Create a new folder
- [ ] Run
npm initwith default values - [ ] Run
npm install [email protected] - [ ] Look at the result and see if there are any production-hitting vulnerabilities, investigate if needed
- No vulnerabilities found
- [ ] Bump in Power Virtual Agents
Applies to major/minor releases
Bump all dependencies to latest version
In PR #XXX, we are bumping most dependencies to latest version.
After bumping, if a package broke compatibility, we should investigate:
- Upgrade our code to use the latest package if possible, otherwise;
- Add it to
package.json/skipBumpto prevent bumping deliberately:
- Skipping bump incur unpredictable technical debts, say, security issue found in the unsupported version, causing us slow to react
- Plausible reasons (non-exhaustive):
- Package is not ES5;
- Package is ESM and requires the whole dependency chain to be upgraded, however, it is technically impossible (unrelated to cost).
- [ ] Run
npm run bump - [ ] Run
npm audit fixto make sure everything is fixed - [ ] Test under IE11 to make sure all dependencies are working
- [ ] List steps to verify bumping
microsoft-cognitiveservices-speech-sdk
Obstacles to bump npm
Check if the followings are still valid. We should bump to npm@latest ([email protected]) as soon as possible.
As of writing, [email protected] (bundled by node@16) has issue on running postinstall script.
[email protected] is peer-depends on @angular/common, which npm@7 will automatically install missing peer dependencies. Track the issue here.
Update CI/CD pipeline to use latest images
Some pipelines are still using windows-2016 image which will be deprecated soon, we need to update them.
- [ ] CD pipeline to
windows-latest
Bump Docker image
The Docker image can be found at root
docker-compose.ymlandDockerfile*.
- [ ] ~Docker container for headless Chrome (#XXX)~
- They recently moved from
3.14.159-xxxtag scheme to a more sensible87.0tag scheme - Tags can be found at https://hub.docker.com/r/selenium/node-chrome/tags
- Preferably in separate PR because screenshots change can be large occasionally
- Run tests locally, as the screenshots can be slightly different
- Also consider bumping to Edge-based images
- They recently moved from