Learn how to share and reuse configuration pieces in your configuration.
In Mergify, you can leverage certain features like YAML anchors and aliases,
shared key, and the
extends key to reduce redundancy, maintain
consistency, and increase code reusability.
YAML anchors (
&) and aliases
*) are supported in the
configuration file. These allow you to reuse configuration
sections. For example, you can create a list of continuous integration checks
and use it in multiple sections:
queue_rules:- name: hotfixqueue_conditions:- and: &CheckRuns- check-success=linters- check-success=unit- check-success=functionnal- check-success=e2e- check-success=docker- name: defaultqueue_conditions:- and: *CheckRuns- schedule=Mon-Fri 09:00-17:30[Europe/Paris]
You can store anything in the
shared key. Its main purpose is to provide a
place to put redundant YAML anchors:
shared:my_ci: &common_checks- check-success=ci-one- check-success=ci-twoqueue_rules:- name: hotfixqueue_conditions:- and: *my_ci- name: defaultqueue_conditions:- and: *my_ci- schedule=Mon-Fri 09:00-17:30[Europe/Paris]
Mergify lets you extend your configuration file by including the configuration from another repository. This feature is useful when you want to share and reuse configuration rules across multiple repositories, helping maintain consistency and reduce duplication.
To extend a configuration file, use the
extends keyword at the top level of
your configuration file file and specify the repository name from which you
want to include the configuration.
The Mergify application must also be installed on the source repository that you want to import the configuration from.
The configuration from the specified repository will be loaded and applied before the one in the current repository. Here's an example:
extends: organization/shared-configpull_request_rules:- name: additional rule specific to this repositoryconditions:- base=mainactions:label:add: ["repository-specific"]
Values in the
sharedkey will not be merged and shared between local and remote configurations.
Values in the
defaultkey will be merged and remote default values will apply to local configuration.