Sharing Configuration
Learn how to share and reuse configuration pieces in your configuration.
In Mergify, you can leverage certain features like YAML anchors and aliases,
the shared
key, and the extends
key to reduce redundancy, maintain
consistency, and increase code reusability.
YAML Anchors and Aliases
Section titled YAML Anchors and AliasesYAML 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: hotfix
queue_conditions:
- and: &CheckRuns
- check-success = linters
- check-success = unit
- check-success = functionnal
- check-success = e2e
- check-success = docker
- name: default
queue_conditions:
- and: *CheckRuns
- schedule = Mon-Fri 09:00-17:30[Europe/Paris]
Sharing Configuration Sections
Section titled Sharing Configuration SectionsYou 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-two
queue_rules:
- name: hotfix
queue_conditions:
- and: *my_ci
- name: default
queue_conditions:
- and: *my_ci
- schedule = Mon-Fri 09:00-17:30[Europe/Paris]
Extending Configuration Files
Section titled Extending Configuration FilesMergify 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.
extends: organization/shared-config
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-config
pull_request_rules:
- name: additional rule specific to this repository
conditions:
- base = main
actions:
label:
add:
- repository-specific