Mergify Changelog 2021Q2

Mergify Changelog 2021Q2

Julien Danjou

The second quarter of 2021 has finished. As usual, we got pretty busy and shipped a lot of new features.

This quarter has been marked by a massive increase in our number of users and, therefore, our workload. We spent quite some time preparing for significant improvements in our processing engine, which we finally deployed last week. We'll write about this in a later blog post.

We're not going to bother you with our list of bug fixes. Our engine is open-source, so keep in mind that you're free to join us and participate if you're curious about what we do, improve, fix, and design.

Here are our fancy new features!

Using time in conditions

Let's start with the most significant feature of this quarter: Mergify got a clock! You are now allowed to refer to various times and dates in your conditions and defer your action based on the current time.

Timed conditions open a ton of new workflow and possibilities: limit the time range where merges are authorized, automate actions based on the age of a pull request, etc.

For example, you can limit the automatic merge of pull requests during your office hours this way:

pull_request_rules:
  - name: Merge pull requests during working hours
    conditions:
      - schedule=Mon-Fri 10:00-17:00
      - check-success=myci
      - "#approved-review-by>=1"
    actions:
      merge:

We wrote another blog post about this new feature if you want more details.

Using Boolean operators in conditions

As we announced a few weeks ago, you can use Boolean operators in your condition and construct more complex conditions. Using operators provides infinite flexibility and simplifies writing rules.

We now provide and and or operators in the conditions.

pull_request_rules:
  - name: Queue for merge pull requests for alice or bob or sam if urgent
    conditions:
      - or:
        - author=bob
        - author=alice
        - and:
          - author=sam
          - label=urgent
    actions:
      queue:

We also wrote a dedicated announcement on this feature with more details.

Depends-On

We have introduced pull request dependencies handling. Linking pull requests together has been a long-awaited feature for GitHub users.

This functionality makes even much more sense when you automate the merge of pull requests. You can imagine a smooth merge of your stack of pull requests quite easily!

The syntax and usage are simple: add a Depends-On header in your pull request body. Mergify will automatically add a condition that prevents the pull request's merge until its dependencies are merged.

New awesome feature

To get the complete picture, you may need to look at these pull requests:

Depends-On: #42
Depends-On: https://github.com/organization/repository/pull/123

Commands

For security reasons, Mergify limits triggering commands to the maintainers of a repository. We lifted this limitation by allowing the pull request author to run commands on their pull requests.

Running Mergify on configuration changes

For security reasons, again, Mergify used to disable itself when a pull request modified its configuration.

We lifted this restriction to allow some degree of automation on such pull requests. The merge and queues actions are the only ones disabled when a pull request modifies the Mergify configuration.

That's all for this quarter. We hope you'll make great use of those new features in your projects. Don't hesitate to reach out to our team if you need any help!