---
defaults:
  actions:
    # mergify.io has removed bot_account from its free open source plan.
    # comment:
    # bot_account: ceph-csi-bot # mergify[bot] will be commenting.
    queue:
      # merge_bot_account: ceph-csi-bot #mergify[bot] will be merging prs.
      # update_bot_account: ceph-csi-bot #mergify will randomly pick and use
      # credentials of users with write access to repo to rebase prs.
      name: default
      method: rebase
      rebase_fallback: merge
      update_method: rebase

queue_rules:
  - name: default
    conditions:
      # Conditions to get out of the queue (= merged)
      - or:
          - and:
              - base~=^(devel)|(release-.+)$
              - "status-success=codespell"
              - "status-success=multi-arch-build"
              - "status-success=go-test"
              - "status-success=golangci-lint"
              - "status-success=mod-check"
              - "status-success=lint-extras"
              - "status-success=ci/centos/k8s-e2e-external-storage/1.23"
              - "status-success=ci/centos/k8s-e2e-external-storage/1.24"
              - "status-success=ci/centos/k8s-e2e-external-storage/1.25"
              - "status-success=ci/centos/mini-e2e-helm/k8s-1.23"
              - "status-success=ci/centos/mini-e2e-helm/k8s-1.24"
              - "status-success=ci/centos/mini-e2e-helm/k8s-1.25"
              - "status-success=ci/centos/mini-e2e/k8s-1.23"
              - "status-success=ci/centos/mini-e2e/k8s-1.24"
              - "status-success=ci/centos/mini-e2e/k8s-1.25"
              - "status-success=ci/centos/upgrade-tests-cephfs"
              - "status-success=ci/centos/upgrade-tests-rbd"
          - and:
              - base=ci/centos
              - "status-success=ci/centos/job-validation"
              - "status-success=ci/centos/jjb-validate"

pull_request_rules:
  - name: start CI jobs for queued PR
    conditions:
      - base~=^(devel)|(release-.+)$
      - "check-pending=Queue: Embarked in merge train"
    actions:
      label:
        add:
          - ok-to-test

  - name: remove outdated approvals
    conditions:
      - base~=^(devel)|(release-.+)$
    actions:
      dismiss_reviews:
        approved: true
        changes_requested: false

  - name: ask to resolve conflict
    conditions:
      - conflict
      - author!=dependabot[bot]
    actions:
      comment:
        # yamllint disable-line rule:truthy
        message: "This pull request now has conflicts with the target branch.
        Could you please resolve conflicts and force push the corrected
        changes? 🙏"
      label:
        remove:
          - ok-to-test

  - name: update dependencies by dependabot (skip commitlint)
    conditions:
      - author=dependabot[bot]
      - label!=DNM
      - base~=^(devel)|(release-.+)$
      - "#approved-reviews-by>=2"
      - "#changes-requested-reviews-by=0"
      - "approved-reviews-by=@ceph/ceph-csi-contributors"
      - "approved-reviews-by=@ceph/ceph-csi-maintainers"
      - "status-success=codespell"
      - "status-success=multi-arch-build"
      - "status-success=go-test"
      - "status-success=golangci-lint"
      - "status-success=mod-check"
      - "status-success=lint-extras"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.23"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.24"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.25"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.23"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.24"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.25"
      - "status-success=ci/centos/mini-e2e/k8s-1.23"
      - "status-success=ci/centos/mini-e2e/k8s-1.24"
      - "status-success=ci/centos/mini-e2e/k8s-1.25"
      - "status-success=ci/centos/upgrade-tests-cephfs"
      - "status-success=ci/centos/upgrade-tests-rbd"
      - "status-success=DCO"
    actions:
      queue:
        name: default
      delete_head_branch: {}
      label:
        remove:
          - ok-to-test

  - name: dismiss review of merged pull request
    conditions:
      - base~=^(devel)|(release-.+)$
      - merged
    actions:
      dismiss_reviews: {}
      label:
        remove:
          - ok-to-test

  - name: automatic merge
    conditions:
      - label!=DNM
      - base~=^(devel)|(release-.+)$
      - "#approved-reviews-by>=2"
      - "#changes-requested-reviews-by=0"
      - "approved-reviews-by=@ceph/ceph-csi-contributors"
      - "approved-reviews-by=@ceph/ceph-csi-maintainers"
      - "status-success=codespell"
      - "status-success=multi-arch-build"
      - "status-success=go-test"
      - "status-success=golangci-lint"
      - "status-success=commitlint"
      - "status-success=mod-check"
      - "status-success=lint-extras"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.23"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.24"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.25"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.23"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.24"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.25"
      - "status-success=ci/centos/mini-e2e/k8s-1.23"
      - "status-success=ci/centos/mini-e2e/k8s-1.24"
      - "status-success=ci/centos/mini-e2e/k8s-1.25"
      - "status-success=ci/centos/upgrade-tests-cephfs"
      - "status-success=ci/centos/upgrade-tests-rbd"
      - "status-success=DCO"
    actions:
      queue:
        name: default
      delete_head_branch: {}
      label:
        remove:
          - ok-to-test

  - name: automatic merge PR having ready-to-merge label
    conditions:
      - label!=DNM
      - label=ready-to-merge
      - base~=^(devel)|(release-.+)$
      - "approved-reviews-by=@ceph/ceph-csi-maintainers"
      - "status-success=codespell"
      - "status-success=multi-arch-build"
      - "status-success=go-test"
      - "status-success=golangci-lint"
      - "status-success=commitlint"
      - "status-success=mod-check"
      - "status-success=lint-extras"
      - "#changes-requested-reviews-by=0"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.23"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.24"
      - "status-success=ci/centos/k8s-e2e-external-storage/1.25"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.23"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.24"
      - "status-success=ci/centos/mini-e2e-helm/k8s-1.25"
      - "status-success=ci/centos/mini-e2e/k8s-1.23"
      - "status-success=ci/centos/mini-e2e/k8s-1.24"
      - "status-success=ci/centos/mini-e2e/k8s-1.25"
      - "status-success=ci/centos/upgrade-tests-cephfs"
      - "status-success=ci/centos/upgrade-tests-rbd"
      - "status-success=DCO"
    actions:
      queue:
        name: default
      delete_head_branch: {}
      label:
        remove:
          - ok-to-test

  - name: backport patches to release-v3.6 branch
    conditions:
      - base=devel
      - label=backport-to-release-v3.6
    actions:
      backport:
        branches:
          - release-v3.6

  - name: backport patches to release-v3.7 branch
    conditions:
      - base=devel
      - label=backport-to-release-v3.7
    actions:
      backport:
        branches:
          - release-v3.7

  - name: remove outdated approvals on ci/centos
    conditions:
      - base=ci/centos
    actions:
      dismiss_reviews:
        approved: true
        changes_requested: false

  - name: automatic merge on ci/centos
    conditions:
      - label!=DNM
      - base=ci/centos
      - "#approved-reviews-by>=2"
      - "approved-reviews-by=@ceph/ceph-csi-contributors"
      - "approved-reviews-by=@ceph/ceph-csi-maintainers"
      - "#changes-requested-reviews-by=0"
      - "status-success=ci/centos/job-validation"
      - "status-success=ci/centos/jjb-validate"
      - "status-success=DCO"
    actions:
      queue:
        name: default
      delete_head_branch: {}

  - name: automatic merge PR having ready-to-merge label on ci/centos
    conditions:
      - label!=DNM
      - label=ready-to-merge
      - base=ci/centos
      - "approved-reviews-by=@ceph/ceph-csi-maintainers"
      - "#changes-requested-reviews-by=0"
      - "status-success=ci/centos/job-validation"
      - "status-success=ci/centos/jjb-validate"
      - "status-success=DCO"
    actions:
      queue:
        name: default
      delete_head_branch: {}
      label:
        remove:
          - ok-to-test

  ##
  ## Automatically set/remove labels
  ##
  - name: title contains DNM
    conditions:
      - title~=DNM
    actions:
      label:
        add:
          - DNM
  - name: title contains CephFS
    conditions:
      - "title~=cephfs: "
    actions:
      label:
        add:
          - component/cephfs
  - name: title contains NFS
    conditions:
      - "title~=nfs: "
    actions:
      label:
        add:
          - component/nfs
  - name: title contains RBD
    conditions:
      - "title~=rbd: "
    actions:
      label:
        add:
          - component/rbd
  - name: title contains CI, testing or e2e
    conditions:
      - "title~=(ci: )|(testing: )|(e2e)"
    actions:
      label:
        add:
          - component/testing
  - name: title contains Helm
    conditions:
      - title~=helm
    actions:
      label:
        add:
          - component/deployment
  - name: title contains rebase
    conditions:
      - "title~=rebase: "
    actions:
      label:
        add:
          - rebase
  - name: title contains build
    conditions:
      - "title~=build: "
    actions:
      label:
        add:
          - component/build
  - name: title indicates a bug fix
    conditions:
      - title~=(bug)|(fix)
    actions:
      label:
        add:
          - bug
  - name: title contains cleanup
    conditions:
      - "title~=cleanup: "
    actions:
      label:
        add:
          - cleanup
  - name: title contains doc
    conditions:
      - "title~=doc: "
    actions:
      label:
        add:
          - component/docs
          - ci/skip/e2e
          - ci/skip/multi-arch-build
  - name: title contains Mergify
    conditions:
      - "title~=(?i)mergify"
    actions:
      label:
        add:
          - Repo activity
          - ci/skip/e2e
          - ci/skip/multi-arch-build