Skip to content

Commit

Permalink
feat: add mergeify config
Browse files Browse the repository at this point in the history
This PR adds a mergeify config that will help automate merging code into the repo and doing PRs

Signed-off-by: Oleg S <97077423+RobotSail@users.noreply.github.com>
  • Loading branch information
RobotSail committed Aug 28, 2024
1 parent 9f1f417 commit 7a5cae7
Show file tree
Hide file tree
Showing 2 changed files with 181 additions and 2 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
- 'requirements*.txt'
- 'tox.ini'
- 'scripts/*.sh'
- '.github/**'
- '.github/workflows/lint.yml'
pull_request:
branches:
- "main"
Expand All @@ -24,7 +24,7 @@ on:
- 'requirements*.txt'
- 'tox.ini'
- 'scripts/*.sh'
- '.github/**'
- '.github/workflows/lint.yml'

env:
PYTHON_VERSION: 3.11
Expand Down
179 changes: 179 additions & 0 deletions .github/workflows/mergify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
pull_request_rules:

Check failure on line 1 in .github/workflows/mergify.yml

View workflow job for this annotation

GitHub Actions / actionlint

unexpected key "pull_request_rules" for "workflow" section. expected one of "concurrency", "defaults", "env", "jobs", "name", "on", "permissions", "run-name"

Check failure on line 1 in .github/workflows/mergify.yml

View workflow job for this annotation

GitHub Actions / actionlint

"on" section is missing in workflow

Check failure on line 1 in .github/workflows/mergify.yml

View workflow job for this annotation

GitHub Actions / actionlint

"jobs" section is missing in workflow
- name: auto-merge
description: automatic merge for main with >= 1 approved reviews, all requested reviews have given feedback, not held, and CI is successful
conditions:
- "#approved-reviews-by>=1"
- "#review-requested=0"
- "#changes-requested-reviews-by=0"
- or:
- base=main
- base~=^release-
- label!=hold
- label!=do-not-merge
- label!=needs-rebase
- check-success=DCO

# The files conditions regex should match the globs in workflow files
# If workflow configuration files in .github/ are changed, the actionlint check must pass
- or:
- and:
- check-success=actionlint
- or:
- files~=^\.github/(actions|workflows)/.*\.ya?ml$
- files~=^\.github/workflows/actionlint\.
- and:
- -files~=^\.github/(actions|workflows)/.*\.ya?ml$
- -files~=^\.github/workflows/actionlint\.

# e2e workflow
- or:
- and:
- check-success=e2e
- or:
- files~=\.py$
- files=pyproject.toml
- files~=^requirements.*\.txt$
- files=.github/workflows/e2e.yml
- and:
- -files~=\.py$
- -files=pyproject.toml
- -files~=^requirements.*\.txt$
- -files=.github/workflows/e2e.yml

# lint must pass if files change that would trigger this job
- or:
- and:
- check-success=lint-workflow-complete
- or:
# see .github/workflows/lint.yml and test.yml
- files~=\.py$
- files=pyproject.toml
- files~=^requirements.*\.txt$
- files=tox.ini
- files~=^scripts/[^/]+\.sh$
- files=.github/workflows/lint.yml
- and:
- -files~=\.py$
- -files=pyproject.toml
- -files~=^requirements.*\.txt$
- -files=tox.ini
- -files~=^scripts/[^/]+\.sh$
- -files=.github/workflows/lint.yml


actions:
merge:
method: merge
delete_head_branch:

- name: label-cicd
description: Automatically apply CI/CD label
conditions:
- or:
- files=.github/mergify.yml
- files~=^\.github/(actions|workflows)/
- files=scripts/ruff.sh
- files=.pre-commit-config.yaml
- files=.pylintrc
- files~=^\.spellcheck[^/]+$
- files=tox.ini
- files=.markdownlint-cli2.yaml
actions:
label:
add:
- CI/CD

- name: label-documentation
description: Automatically apply documentation label
conditions:
- or:
- files~=^[^/]+\.md$
actions:
label:
add:
- documentation

- name: label-testing
description: Automatically apply testing label
conditions:
- or:
- files~=^tests/
- files=tox.ini
actions:
label:
add:
- testing

- name: ping author on conflicts and add 'needs-rebase' label
conditions:
- conflict
- -closed
actions:
label:
add:
- needs-rebase
comment:
message: |
This pull request has merge conflicts that must be resolved before it can be
merged. @{{author}} please rebase it. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork
- name: remove 'needs-rebase' label when conflict is resolved
conditions:
- -conflict
- -closed
actions:
label:
remove:
- needs-rebase

- name: release-branch-label
description: Automatically apply the release-branch label to release branch PRs
conditions:
- base~=^release-
actions:
label:
add:
- release-branch

- name: Apply ci-failure label if any CI checks have failed
conditions:
- "#check-failure>0"
actions:
label:
add:
- ci-failure

- name: Remove ci-failure label if no failures are present
conditions:
- "#check-failure=0"
actions:
label:
remove:
- ci-failure

- name: Apply 'one-approval' label if one of the maintainer approved the PR
conditions:
- "#approved-reviews-by=1"
actions:
label:
add:
- one-approval

- name: Remove 'one-approval' label if the approval was reset
conditions:
- "#approved-reviews-by!=1"
actions:
label:
remove:
- one-approval

- name: label-dependencies
description: Automatically apply dependencies label
conditions:
- or:
- files~=^requirements.*\.txt$
- files~=^requirements/
actions:
label:
add:
- dependencies

0 comments on commit 7a5cae7

Please sign in to comment.