Skip to content

Add release instructions to DWDS #1523

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

Merged
merged 3 commits into from
Feb 25, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion dwds/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,45 @@ You need to do the following:
* `rm webdev/webdev/pubspec.lock`
* Then, from `/webdev/webdev` run `dart pub get`

## Changes required when submitting a PR
* Make sure you update the `CHANGELOG.md` with a description of the change
* If DWDS / Webdev was just released, then you will need to update the version in the `CHANGELOG`, and the `pubspec.yaml` file as well (eg, https://github.com/dart-lang/webdev/pull/1462)
* For any directories you’ve touched, `run dart run build_runner` build to check in the any file that should be built. This will make sure the integration tests are run against the built files.

## Release steps
TODO

### Step 1: Roll DWDS into g3
> *NOTE: You must be a Googler to do this step. If you are not, please ask someone for help.*
* See directions at: go/roll-dwds
* Wait a few days after rolling into g3 before continuing to step 2. We do so to have time to catch new bugs internally before publishing externally. Look for any new exceptions at go/ddt-web-dashboard

## Step 2: Publish DWDS to pub
* Make sure you are on the Dart stable SDK version (check with `dart --version`)
* From each of the subdirectories (`/dwds`, `/frontend_server_client`, `/frontend_server_common`, and `/webdev`) update dependencies with `dart pub upgrade`
* Update the version number in `dwds/pubspec.yaml` and `dwds/CHANGELOG.md`
* From `/dwds` run `dart run build_runner build`, this will build and update the version in `/dwds/lib/src/version.dart`
* Submit a PR with those changes (example PR: https://github.com/dart-lang/webdev/pull/1456). *Note: Ensure your PR doesn’t have any dependency overrides.*
* Once the PR is submitted, pull from master and `run dart pub publish`
* Finally, go to https://github.com/dart-lang/webdev/releases and create a new release, eg https://github.com/dart-lang/webdev/releases/tag/dwds-v12.0.0. You might need to delete some of the content of the autogenerated notes.
> *Note: To have the right permissions for publishing, you need to be invited to the tools.dart.dev. A member of the Dart team should be able to add you at https://pub.dev/publishers/tools.dart.dev/admin.*

## Step 3: Publish Webdev to pub
> *Note: DWDS is a dependency of Webdev, which is why DWDS must be published before Webdev can be published.*
* Make sure you are on the Dart stable SDK version (check with `dart --version`)
* Update the DWDS version in `/webdev/pubspec.yaml` to match the newly released DWDS version, and update the Webdev version to the new version number. Also, comment out the dependency_override so that Webdev is now depending on the version of DWDS on pub (which should have just been published) instead of the local version.
* Update `/webdev/CHANGELOG.md` to match the new webdev version
* From `/webdev`, run `dart pub upgrade`
* From `/webdev` run `dart run build_runner build`, this will build and update the version in `webdev/lib/src/version.dart`
* Submit a PR with those changes (example PR: https://github.com/dart-lang/webdev/pull/1498)
* Once the PR is submitted, pull from master and run `dart pub publish`
* Finally, go to https://github.com/dart-lang/webdev/releases and create a new release, eg https://github.com/dart-lang/webdev/releases/tag/webdev-v2.7.8. You might need to delete some of the content of the autogenerated notes.

## Whenever the Dart SDK is updated
Whenever Dart SDK is updated to a new major or minor version (~every 2 weeks), any PR submissions to Webdev are blocked by the min_sdk_test until the Dart min SDK constraint is updated. Therefore, whenever your PR gets blocked by the test, you need to:
1. Create a new PR that updates all the min SDK constraints to the new version, eg: https://github.com/dart-lang/webdev/pull/1463.
2. From each of the subdirectories (`/dwds`, `/frontend_server_client`, `/frontend_server_common`, and `/webdev`) update dependencies with `dart pub upgrade`
3. Make sure to update the `CHANGELOG` to include the new version number
4. Submit your PR. At this point, you technically will be able to submit the PR that was blocked, but the point of the test is to make sure that DWDS and Webdev get released after a Dart stable release. Therefore, follow the steps above to publish DWDS and Webdev.
> ### Why is this necessary?
> This is so that we don’t need to support older versions of the SDK and test against them, therefore every time the Dart SDK is bumped to a new major or minor version, DWDS and Webdev’s min Dart SDK constraint needs to to be changed and DWDS and Webdev have to be released.
> Since DWDS is dependent on DDC and the runtime API, if we had a looser min constraint we would need to run tests for all earlier stable releases of the SDK that match the constraint, which would have differences in functionality and therefore need different tests.