| ## How to release the next version of DevTools |
| |
| Create a branch for your release. |
| |
| ```shell |
| cd ~/path/to/devtools |
| git checkout master |
| git pull upstream master |
| git checkout -b release_2.7.0 |
| ``` |
| |
| ### Prepare the release |
| |
| #### Update the DevTools version number |
| |
| Run the `update_version.dart` script with the new DevTools version. |
| ```shell |
| dart tool/update_version.dart 2.7.0 |
| ``` |
| Verify that this script updated the pubspecs under packages/ |
| and updated all references to those packages. These packages always have their |
| version numbers updated in lock, so we don't have to worry about |
| versioning. Also make sure that the version constant in |
| `packages/devtools_app/lib/devtools.dart` was updated. |
| |
| #### Update the CHANGELOG.md |
| |
| Use the tool `generate-changelog` to automatically update the `packages/devtools/CHANGELOG.md` file. |
| |
| ```shell |
| cd ~/path/to/devtools |
| dart tool/bin/repo_tool.dart generate-changelog |
| ``` |
| |
| Be sure to manually check that the version for the CHANGELOG entry was correctly generated |
| and that the entries don't have any syntax errors. The `generate-changelog` script is |
| intended to do the bulk of the work, but still needs manual review. |
| |
| #### Push the local branch |
| |
| ```shell |
| git add . |
| git commit -m “Prepare for 2.7.0 release.” |
| git push origin release_2.7.0 |
| ``` |
| |
| From the git GUI tool or from github.com directly, create a PR, send for review, |
| then squash and commit after receiving an LGTM. |
| |
| ### Test the release |
| Checkout the commit you just created, or remain on the branch you just landed the prep PR from. |
| ```shell |
| git checkout 8881a7caa9067471008a8e00750b161f53cdb843 |
| ``` |
| |
| Build the DevTools binary and run it from your local Dart SDK. From the main devtools/ directory. |
| ```shell |
| dart ./tool/build_e2e.dart |
| ``` |
| |
| Launch DevTools and verify that everything generally works. |
| - open the page in a browser (http://localhost:53432) |
| - `flutter run` an application |
| - connect to the running app from DevTools, verify that the pages |
| generally work and that there are no exceptions in the chrome devtools log |
| |
| If you find any release blocking issues, fix them before releasing. Then |
| grab the latest commit hash that includes both the release prep commit and the bug fixes, |
| and use this commit hash for the following steps. |
| |
| Once the build is in good shape, you can revert any local changes and proceed to the next step. |
| ```shell |
| git checkout . |
| git clean -f -d |
| ``` |
| |
| ### Tag the release |
| Checkout the commit from which you want to release DevTools (likely the |
| commit for the PR you just landed). You can run `git log -v` to see the commits. |
| Run the `tag_version.sh` script to create a tag on the `flutter/devtools` repo for this |
| release. This script will automatically determine the version from `packages/devtools/pubspec.yaml` |
| so there is no need to manually enter the version. |
| ```shell |
| tool/tag_version.sh |
| ``` |
| |
| ### Upload the DevTools binary to CIPD |
| Using the commit hash you want to release DevTools from (this should match the |
| commit hash for the tag you just created) and the [update.sh](https://github.com/dart-lang/sdk/blob/master/third_party/devtools/update.sh) |
| script, build and upload the DevTools binary to CIPD. |
| |
| ```shell |
| cd path/to/dart-sdk/sdk |
| git rebase-update |
| third_party/devtools/update.sh 8881a7caa9067471008a8e00750b161f53cdb843 |
| ``` |
| |
| ### Update the DevTools hash in the Dart SDK |
| |
| Navigate to your local checkout of the Dart SDK (for getting started instructions, |
| see [sdk/CONTRIBUTING.md](https://github.com/dart-lang/sdk/blob/main/CONTRIBUTING.md)). |
| |
| Create new branch for your changes: |
| ```shell |
| git new-branch dt-release |
| ``` |
| |
| Update the `devtools_rev` entry in the Dart SDK |
| [DEPS file](https://github.com/dart-lang/sdk/blob/master/DEPS) |
| with the git commit hash you just built DevTools from (this is |
| the id for the CIPD upload in the previous step). See this |
| [example CL](https://dart-review.googlesource.com/c/sdk/+/215520). |
| |
| Verify that running `dart devtools` launches the version of DevTools you just released. You'll |
| need to build the dart sdk locally to do this. |
| ```shell |
| cd path/to/dart-sdk/sdk |
| gclient sync -D |
| ./tools/build.py -mrelease -ax64 create_sdk |
| out/ReleaseX64/dart-sdk/bin/dart devtools # On OSX replace 'out' with 'xcodebuild' |
| ``` |
| |
| If the version of DevTools you just published to CIPD loads properly, push up the SDK CL for review. |
| ```shell |
| git add . |
| git commit -m "Bump DevTools DEP to 2.16.0" |
| git cl upload -s |
| ``` |
| |
| ### Publish package:devtools_shared on pub |
| |
| `package:devtools_shared` is the only DevTools package that is published on pub. |
| From the `devtools/packages/devtools_shared` directory, run: |
| ```shell |
| pub publish |
| ``` |
| |
| ### Write release notes for the release |
| Release notes should contain details about the user-facing changes included in the release. |
| These notes are shown directly in DevTools when a user opens a new version of DevTools. Please |
| see the release notes |
| [README.md](https://github.com/flutter/devtools/blob/master/packages/devtools_app/lib/src/framework/release_notes/README.md) |
| for details on where to add release notes and how to test them. |