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.13.0 release checklist #3826

Closed
53 of 61 tasks
corinagum opened this issue Mar 31, 2021 · 1 comment
Closed
53 of 61 tasks

4.13.0 release checklist #3826

corinagum opened this issue Mar 31, 2021 · 1 comment
Assignees
Labels
release Release checklist

Comments

@corinagum
Copy link
Contributor

corinagum commented Mar 31, 2021

Checklist

Build

  1. Bump MockBot to Bot Framework SDK release 4.13.0
  2. Bump botframework-directlinejs to 0.14.1
    • No newer version
  3. Bump to 4.13.0
    • Update CHANGELOG.md to mark specific changes in 4.13.0
    • Run npm version --no-git-tag-version 4.13.0
    • Merged into master, the PR number is 4.13.0 release bump #3827
    • Commit is 585da0a
    • 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 230592 and commit is 585da0a
  5. Wait for WebChat-release-testing pipeline to complete
    • Pipeline name is Push-Release-Testing-to-GitHub-Pages
    • The release ID is 2697
  6. 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 89.0.4389.114
    • Edge 89.0.774.68
    • Firefox 87.0
    • IE11 (Windows 10 21343.1010)
    • macOS Safari 14.0.3 (16610.4.3.1.7)
    • iOS Safari 14.4.2
    • Android Chrome 89.0.4389.105
  2. Test specific fixes related to 4.13.0 and previous releases
    • Markdown external link indicator (visual and AT)

Release

  1. Verify on WebChat-release-testing
  2. Make sure you are on master 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.13.0
  5. git log
    • Verify the latest commit is 585da0a
  6. git tag v4.13.0
  7. git push -u upstream v4.13.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 CDN: curl -H 'Accept-Encoding: gzip' https://cdn.botframework.com/botframework-webchat/4.13.0/webchat.js | gunzip - | openssl dgst -sha384 -binary | openssl base64 -A
      • From local: cat webchat.js | 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 -L -o botframework-directlinespeech-sdk-4.13.0.tgz https://registry.npmjs.org/botframework-directlinespeech-sdk/-/botframework-directlinespeech-sdk-4.13.0.tgz
        curl -L -o botframework-webchat-4.13.0.tgz https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-4.13.0.tgz
        curl -L -o botframework-webchat-core-4.13.0.tgz https://registry.npmjs.org/botframework-webchat-core/-/botframework-webchat-core-4.13.0.tgz
        curl -L -o botframework-webchat-api-4.13.0.tgz https://registry.npmjs.org/botframework-webchat-api/-/botframework-webchat-api-4.13.0.tgz
        curl -L -o botframework-webchat-component-4.13.0.tgz https://registry.npmjs.org/botframework-webchat-component/-/botframework-webchat-component-4.13.0.tgz
        
  9. Kick off release to NPM
    • Release name is [[PROD]]Push-WebChat-to-npmjs
    • The build number is 230592 release number is 32 and commit is 585da0a
    • Retain the build indefinitely
  10. Kick off release to CDN (CDN CUTOFF TIME IS 2PM PST)
    1. Prepare the email for approval
    • Release name is [[PROD]]Push-WebChat-to-Prod-CDN-with-approval
    • The build number is 230592, release number is 11 and commit is abc123
    • Script build number is 131156 (this is fixed)
    1. Send reminder email to approvers
    • Retain the build indefinitely

Post-release verification - complete within 30mins / 1hr of the release

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.

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 Bump deps and to 4.13.1-0 #3831
    • Don't bump the following packages
      • react, react-dom, redux, redux-saga, react-film, react-scroll-to-bottom, react-say, react-dictate-button, @types/react
      • remark and strip-markdown, source-map-loader (because of webpack)
        • Newer remark don't work under IE11
        • Please go to the their repos and see if this is fixed or by design
      • sanitize-html@1
        • Starting from version 2, they included nanoid deps which does not work in ES5 environment
        • compulim: Seems sanitize-html removed nanoid from their dependencies, please try to bump it. We use sanitize-html while rendering Markdown
      • serve
      • rxjs on playground
      • webpack@4
        • Starting from version 5, they dropped Node.js polyfills for browsers
        • Please file an issue: Bump webpack@5
        • Keep the following dependencies because their latest version requires webpack@5
      • microsoft-cognitiveservices-speech-sdk
      • adaptivecards
        • We will bump it in independent PR
      • expect@25
        • 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

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
  • Note on 11/10/2020: 4.0.0-alpha-7-prerelease-20200907 is still prerelease; therefore not bumping (corinagum)
@corinagum corinagum added the release Release checklist label Mar 31, 2021
@corinagum corinagum self-assigned this Mar 31, 2021
@corinagum
Copy link
Contributor Author

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