-
Notifications
You must be signed in to change notification settings - Fork 1
Waiting for tree to go green bot
Note: links to source files are permalinks to master as of this writing; be sure to check the actual checked in code and update the wiki if it has changed.
https://github.com/flutter/cocoon has a request handler called check-for-waiting-pull-requests. Sending a GET request will cause it to run a GraphQL query to get a list of pull requests in flutter/flutter
and flutter/engine
that are labeled with waiting-for-tree-to-go-green
. The label name is configured here (sorry, googlers only). You can run the query yourself in the GraphQL Explorer to see what it returns.
A cron job (source | dashboard, googlers only) makes the GET request every 5 minutes.
The core logic is that pull requests can be merged if:
- CI has passed
- at least one approved review has been added (does not need to contain the phrase
LGTM
, but must be an actual approval review via the GitHub UI) - no changes have been requested
- The last push time is at least 60 minutes ago. This ensures that checks have had time to start and reviewers have had time to review.
If these conditions are met, it sends an additional query to actually merge the pull request.
It will remove the label under the following conditions:
- No approved reviews on the pull request
- At least one changes requested review on the pull request
The label can be re-applied after any change request reviews have been dismissed and at least one approval has been granted.
- Home of the Wiki
- Roadmap
- API Reference (stable)
- API Reference (master)
- Glossary
- Contributor Guide
- Chat on Discord
- Code of Conduct
- Issue triage reports
- Our Values
- Tree hygiene
- Issue hygiene and Triage
- Style guide for Flutter repo
- Project teams
- Contributor access
- What should I work on?
- Running and writing tests
- Release process
- Rolling Dart
- Manual Engine Roll with Breaking Commits
- Updating Material Design Fonts & Icons
- Postmortems
- Setting up the Framework development environment
- The Framework architecture
- The flutter tool
- API Docs code block generation
- Running examples
- Using the Dart analyzer
- The flutter run variants
- Test coverage for package:flutter
- Writing a golden-file test for package:flutter
- Setting up the Engine development environment
- Compiling the engine
- Debugging the engine
- Using Sanitizers with the Flutter Engine
- Testing the engine
- The Engine architecture
- Flutter's modes
- Engine disk footprint
- Comparing AOT Snapshot Sizes
- Custom Flutter engine embedders
- Custom Flutter Engine Embedding in AOT Mode
- Flutter engine operation in AOT Mode
- Engine-specific Service Protocol extensions
- Crashes
- Supporting legacy platforms
- Metal on iOS FAQ
- Engine Clang Tidy Linter
- Why we have a separate engine repo
- Reduce Flutter engine size with MLGO
- Setting up the Plugins development environment
- Setting up the Packages development environment
- Plugins and Packages repository structure
- Plugin Tests
- Contributing to Plugins and Packages
- Releasing a Plugin or Package
- Unexpected Plugins and Packages failures