Skip to content

4.15.0 Release checklist #4192

@compulim

Description

@compulim

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

  • Test using webchat-release-testing
    1. Clone https://github.com/corinagum/WebChat-release-testing/
    2. 01.create-react-app
      1. Nuke 01.create-react-app/node_modules
      2. npm install
      3. npm install botframework-webchat@4.15.0 (just install the bundle package)
      4. npm run build
    3. Others
      • Using script tags from https://github.com/microsoft/BotFramework-WebChat/releases/tag/v4.15.0, with subresource integrity
        <script
          crossorigin="anonymous"
          integrity="sha384-XXXXXXX"
          src="../drops/webchat.js"
        ></script>
        
        <script
          crossorigin="anonymous"
          integrity="sha384-XXXXXXX"
          src="../drops/webchat-es5.js"
        ></script>
        
        <script
          crossorigin="anonymous"
          integrity="sha384-XXXXXXX"
          src="../drops/webchat-minimal.js"
        ></script>
        
    4. npx serve (at repo root)
    5. Go to http://localhost:5000/ to test, including IE11

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 botframework-webchat@4.15.0
    • 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 (npm@8.15) as soon as possible.

As of writing, npm@7.19.1 (bundled by node@16) has issue on running postinstall script.

microsoft-cognitiveservices-speech-sdk@1.17.0 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    releaseRelease checklist

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions