Skip to content
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

4.15.0 Release checklist #4192

Closed
49 of 71 tasks
compulim opened this issue Mar 3, 2022 · 1 comment
Closed
49 of 71 tasks

4.15.0 Release checklist #4192

compulim opened this issue Mar 3, 2022 · 1 comment
Labels
release Release checklist

Comments

@compulim
Copy link
Contributor

compulim commented Mar 3, 2022

Checklist

Build

  1. Bump MockBot to Bot Framework SDK release 4.15.0
  2. Bump botframework-directlinejs to 0.15.1
  3. Bump to 4.15.0
    • Update CHANGELOG.md to mark specific changes in 4.15.0
      • For 4.15.0, add breaking changes:
        • Web devs should add import 'core-js/features/map' to their polyfill list if they support IE11 with NPM install
    • Run npm version --no-git-tag-version 4.15.0
    • Merged into master, the PR number is Bump to production version 4.15.0 #4193
    • Commit is 49cfdc1
    • Do not merge any other unrelated changes after this PR. Any other PR merged, will need to be re-tested
  4. 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 294404 and commit is 49cfdc12
  5. Wait for WebChat-release-testing pipeline to complete
    • Pipeline name is Push-Release-Testing-to-GitHub-Pages
    • The release ID is 321
  6. 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
  7. Add manual tests to WebChat-release-testing as needed

Test

The test should run against the build artifacts from Azure Pipelines.

  1. Manual testing on major browsers using webchat-release-testing
    • Before starting testing, update all the browser version to latest
    • Chrome 98.0.4758.102
    • Edge 98.0.1108.62
    • Firefox 97.0.1
    • IE11 (Windows 11 22H2 22567.1)
    • macOS Safari 15.0 (16612.1.29.41.4, 16612)
    • iOS Safari 15.1
    • Android Chrome 98.0.4758.101
  2. Test specific fixes related to 4.15.0 and previous releases
    • New transcript navigation
    • New keyboard help screen

Release

  1. Verify on WebChat-release-testing
  2. Make sure you are on main or qfe branch, run git status to check
  3. git pull
  4. Verify /package.json, /package-lock.json, and CHANGELOG.md has a version of 4.15.0
  5. git log
    • Verify the latest commit is 49cfdc12
  6. git tag v4.15.0
  7. git push -u upstream v4.15.0
    • You do not need to kick off a build again, use the previous build
  8. Create a new GitHub release, copy entries from CHANGELOG.md
    • 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.0/webchat.js | gunzip - | openssl dgst -sha384 -binary | openssl base64 -A
    • Attach assets including 3 JS files, stats.json and 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.0.tgz
        curl -LO https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-4.15.0.tgz
        curl -LO https://registry.npmjs.org/botframework-webchat-core/-/botframework-webchat-core-4.15.0.tgz
        curl -LO https://registry.npmjs.org/botframework-webchat-api/-/botframework-webchat-api-4.15.0.tgz
        curl -LO https://registry.npmjs.org/botframework-webchat-component/-/botframework-webchat-component-4.15.0.tgz
        
  9. Kick off release to NPM
    • Release name is [[PROD]]Push-WebChat-to-npmjs
    • The build number is 294404 release number is 37 and commit is 49cfdc12
    • Verify package content then click Resume
    • Retain the release indefinitely
  10. Kick off release to CDN (cutoff at 2PM PST, Mon-Thu only)
    1. Prepare the email for approval
    • Release name is [[PROD]]Push-WebChat-to-Prod-CDN-with-approval
    • The build number is 294404, release number is 41 and commit is 49cfdc12
    • Script build number is 131156 (this is fixed)
    1. Send reminder email to approvers
    • Retain the build indefinitely

Post-release verification - complete within 30 minutes after release to NPM

Notification to interested parties


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_modules from 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-core by hand-modifying package.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

Applies to all releases

This list should be copied to versions in the future.

  • If on QFE branch, make sure CHANGELOG.md and version number bump is cherry-picked to master
    • git checkout master
    • git cherry-pick XXX (the commitish for bumping version number and CHANGELOG.md)
  • Correct the date for 4.15.0 in CHANGELOG.md in PR #XXX
    • There could be last minute fixes that could push the planned date later than the one in CHANGELOG.md
  • Bump package.json to 4.15.1-0 in PR #XXX
    • Run npm version prepatch --no-git-tag-version
  • Update servicingPlan.json in PR #XXX
  • Update all samples to use 4.15.0 in PR #XXX
  • Clean up unnecessary branch on official repo
  • Understand production-hitting vulnerabilities
    • Create a new folder
    • Run npm init with default values
    • Run npm install [email protected]
    • Look at the result and see if there are any production-hitting vulnerabilities, investigate if needed

The PR is https://github.com/microsoft/BotFramework-WebChat/pull/XXX

Applies to major/minor releases

Bump all dependencies to latest version

On each package.json under root and /packages/:

  • All NPM packages (@babel/*, jest, lerna, typescript, webpack, etc) in PR #XXX
    • Don't bump the following packages
      • react, react-dom, redux, redux-saga, @types/react
      • rxjs@5 on playground
      • microsoft-cognitiveservices-speech-sdk
        • We will bump it in a separate PR
      • adaptivecards
        • We will bump it in a separate PR
      • expect@25 under test/harness
        • The newer version requires Node.js (graceful-fs)
  • Run npm audit fix to 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.

Bump Docker image

The Docker image can be found at root docker-compose.yml and Dockerfile*.

  • Docker container for headless Chrome (#XXX)
    • They recently moved from 3.14.159-xxx tag scheme to a more sensible 87.0 tag 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
@compulim compulim added the release Release checklist label Mar 3, 2022
This was referenced Mar 3, 2022
@compulim
Copy link
Contributor Author

compulim commented Mar 4, 2022

We discovered an issue and started rolling out of 4.15.1.

See #4198.

@compulim compulim closed this as completed Mar 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release Release checklist
Projects
None yet
Development

No branches or pull requests

1 participant