diff --git a/.mergify.yml b/.mergify.yml index 5f9c0a4152..a43b445991 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -1,6 +1,20 @@ queue_rules: - name: default - conditions: + queue_conditions: + - "#approved-reviews-by>=1" + - "#changes-requested-reviews-by=0" + - base=main + - label=checkin-needed + - check-success=Decision Task + - check-success=run-tests + - check-success=ios-test-and-artifacts + - check-success=clippy + - check-success=check-formatting + - "#check-success>=5" + - "#check-pending=0" + - "#check-stale=0" + - "#check-failure=0" + merge_conditions: # Conditions to get out of the queue (= merged) - check-success=Decision Task - check-success=run-tests @@ -9,6 +23,8 @@ queue_rules: - "#check-pending=0" - "#check-stale=0" - "#check-failure=0" + merge_method: rebase + pull_request_rules: - name: remove outdated reviews for non-core authors conditions: @@ -22,39 +38,7 @@ pull_request_rules: label: remove: - checkin-needed - - name: automatic merge for main - conditions: - - "#approved-reviews-by>=1" - - "#changes-requested-reviews-by=0" - - base=main - - label=checkin-needed - # What we want to say here is "all checks passed", but that's not a concept - # that makes sense in GitHub: - # - # https://docs.mergify.io/conditions/#validating-all-status-checks - # - # But we don't want to just list out all the checks, because we have many of - # them and some of them are added dynamically and we might add or remove checks - # without updating the list here. - # - # So instead we insist that a small set of known checks has completed, - # and also that there are no other checks in unexpected states. - - check-success=Decision Task - - check-success=run-tests - - check-success=ios-test-and-artifacts - - check-success=clippy - - check-success=check-formatting - - "#check-success>=5" # we should always have at least this many checks - - "#check-pending=0" - - "#check-stale=0" - - "#check-failure=0" + - name: refactored queue action rule + conditions: [] actions: - # This merges by rebasing without strict merge, which means that mergify will *attempt* - # to rebase a matching PR directly on to the `main` branch, even if the PR is out of date. - # However, our GitHub branch protection rules require that PRs must be up-to-date before merging, - # and mergify respects these rules, so the expected behaviour here is that mergify will only - # merge when it can cleanly put the exact commits of the PR directly on top of `main` - # (and thus avoid having to re-write any commits or create merge commits of its own). queue: - method: rebase - name: default