Mergify Changelog 2021Q4

Mergify Changelog 2021Q4

Julien Danjou

The last quarter of the year is now wrapped up, and it's time to wish everyone a happy new year.

We want to start this changelog edition by looking back to a year ago. Our number of users doubled over the year, which came with its pack of challenges. We wrote a few months ago about how we grew close to 1M events per day from GitHub. Our team also increased — from 3 to 8 people — and we are still hiring.

We are proud of what we shipped overall this year. The number of software engineering teams relying on Mergify every day keeps increasing. We are now part of many workflows and daily routines. Most organizations using Mergify would lose a lot of productivity without the functionalities Mergify provides.

We're looking forward to this new year. Our roadmap is booked with new and exciting features that we are eager to announce.

Now, let's talk about what we did at the end of 2021.

🆕 New Condition Attributes

This quarter, we've added many new pull request attributes that can be used in conditions.

  • review-threads-resolved and review-threads-unresolved: the list of bodies associated to review threads that are marked as resolved or unresolved by GitHub. Beneficial to merge pull requests that have only all of their review comments closed by using #review-threads-unresolved=0.
  • commits-behind: the list of commits between the head of the base branch and the base of the pull request. This is useful to detect pull requests that are not up-to-date by using #commits-behind>0.
  • commits: the list of commit messages of the pull request. It can be helpful to write conditions based on the number of commits in a pull request using #commits.
  • commits-unverified: the list of commit messages that are marked as unverified by GitHub. This is useful to check if all the commits in a pull request are signed.
  • queue-position: the position of the pull request in its queue if queued.
  • queue-merge-started-at: the time the pull request mergeability checks have started at.

🔌 API

We've announced our new API. For now, it only allows retrieving the state of your merge queues. We have more features planned for it in the future.

Introducing Mergify API
Today, we are pleased to announce the general availability of the Mergify API. This has been one of our focuses over the last months, as it has been one of the most requested features from our beloved users. We are thrilled to release it and are eager to add more
Our API documentation

✍️ Commit Message Template

The queue and merge actions now offer a commit_message_template option, which allows defining a template for merging pull requests. This means you can now have a single template used on the whole repository.

- name: merge when ready
  conditions:
    - "#approved-reviews-by>=2"
    - check-success=myci
  actions:
    merge:
      commit_message_template: |
{{title}}

{{body}}

{% for user in approved_reviews_by %}
Approved-By: {{user}}
{% endfor %}

🐛 New Queue Options

The queue action offers three new options:

  • checks_timeout allows specifying the number of seconds Mergify should wait before giving up on merging the pull request. This makes sure that if a problem with the CI blocks a queue, Mergify gives up and schedules the subsequent pull request for merge. There is no default set.
  • allow_checks_interruption, enabled by default, allows Mergify to preempt a pull request which is currently being merged by a pull request with a higher priority. This can lead to canceling the running checks.
  • require_branch_protection, enabled by default, indicates whether pull request should match GitHub branch protection before queuing.

❌ Dismissing Reviews

The dismiss_reviews action now has a when option, which allows you always to dismiss reviews. The default behavior remains to only dismiss reviews when a synchronize event occurs.

👋 Bye Bye Strict Mode

With the advent of the queue action over the last months, we announced the retirement of the strict mode for the merge action. After a brownout day, this feature has been entirely removed.

Strict Mode Deprecation
When Mergify started to automate pull request merges, users expressed rapidly the need for having a way to keep their pull requests updated. We soon introduced the strict mode for the merge action, offering pull request merge serialization. This was our first, very basic, merge queue. Later, Mergify…

📜 Convert a pull request to draft

You can now convert a pull request to draft and vice-versa. That's it. 🤷

🚀 Startup Program

If you are — or know — a startup, we now have a Startup Program in place that offers up to $21,000 of Mergify subscription fees.

That's it for this year. Stay tuned for the next quarter update, the first of 2022!