加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
.mergify.yml 7.49 KB
一键复制 编辑 原始数据 按行查看 历史
Martin Kojtal 提交于 2021-10-14 14:54 . 内容可能含有违规信息
#
# Copyright (c) 2020, Arm Limited and affiliates.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Mergify follow our workflow: https://os.mbed.com/docs/mbed-os/latest/contributing/workflow.html
# Inital state (needs: review) is done by internal reviewer bot
# Notes: conditions do not check if label is already there if we add or remove later, this is to limit Github API access to
# minimum. If a label is already there and we add it again, nothing should happen (we do 1 less access to Github).
# For instance for needs: work if CI failed, we just add a label as action, don't check if needs: works is already there.
#
# Reviewers request needs write access to block PR, otherwise it's just a suggestion on Github, not PR block
pull_request_rules:
# From needs: review to needs: work - reviewers request
- name: "label needs: work when changes were requested"
conditions:
# Reviewers
- "#changes-requested-reviews-by>0"
actions:
label:
add: ['needs: work']
remove: ['needs: review', 'needs: CI']
# From needs: review to needs: work - CI failure
- name: "label needs: work when GitHub Actions jobs have failed"
conditions:
# GitHub Actions are failing
- check-failure=license-check
- check-failure=include-check
- check-failure=style-check
- check-failure=docs-check
- check-failure=python-tests
- check-failure=pin-validation
- check-failure=cmake-checks
- check-failure=frozen-tools-check
- "label!=mergify skip"
- "label!='needs: work'"
actions:
label:
add: ['needs: work']
remove: ['needs: review', 'needs: CI']
# From needs: CI to needs: work - CI failure in jenkins pipeline
- name: "label needs: work when Jenkins CI failed - pr head"
conditions:
# Jenkins CI failing, only pr head
- check-failure~=continuous-integration/jenkins/pr-head
- "label!=mergify skip"
- "label=needs: CI"
- -closed
actions:
label:
add: ['needs: work']
remove: ['needs: CI']
# From needs: CI to needs: work - CI failure
- name: "label needs: work when Jenkins CI failed - any of the pipeline"
conditions:
# Jenkins CI failing - any of the pipeline
- check-failure~=^jenkins-ci
- "label=needs: CI"
- "label!=mergify skip"
actions:
label:
add: ['needs: work']
remove: ['needs: CI']
# From needs: review or needs: work to needs: CI. One approval means we should be good to start CI
- name: "label needs: CI when at least one reviewers approval"
conditions:
# Labels
- "label!=needs: preceding PR"
# Reviewers
- "#changes-requested-reviews-by=0"
- "#approved-reviews-by>=1"
# No conflict with the base branch
- -conflict
# CI green policy, at least GitHub Actions jobs should be green
- check-success=license-check
- check-success=include-check
- check-success=style-check
- check-success=docs-check
- check-success=python-tests
- check-success=pin-validation
- check-success=cmake-checks
- check-success=frozen-tools-check
# new CI needs to be done (neutral does not work, lets check if it failed or passed, if none, we need to run again)
- -check-success~=continuous-integration/jenkins/pr-head
- -check-failure~=continuous-integration/jenkins/pr-head
actions:
label:
add: ['needs: CI']
remove: ['needs: review', 'needs: work']
# Remove reviews after the branch is updated. This yet does not allow
# any other action like labels, etc. See mergify-engine/issues/360
- name: remove outdated reviews
conditions: []
actions:
dismiss_reviews:
approved: True
changes_requested: True
# Conflict in the PR - needs: work and a comment to notify a user
- name: "label needs: work when there is a conflict"
conditions:
- -closed
- conflict
actions:
label:
add: ['needs: work']
remove: ['needs: review', 'needs: CI']
comment:
message: This PR cannot be merged due to conflicts. Please rebase to resolve them.
- name: "add label feature branch for feature branch additions"
conditions:
- base~=^feature
actions:
label:
add: ['release-version: feature branch']
# Ready for integration. Not yet auto merge, will be enabled once carefuly tested
- name: label "ready for merge" when ready
conditions:
# Labels
- "label!=do not merge"
- "label!=mergify skip"
- "label=needs: CI"
# Reviewers
- "#approved-reviews-by>=1"
- "#changes-requested-reviews-by=0"
# CI green policy
- check-success=license-check
- check-success=include-check
- check-success=style-check
- check-success=docs-check
- check-success=python-tests
- check-success=pin-validation
- check-success=cmake-checks
- check-success=frozen-tools-check
# Internal Jenkins - we rely on PR head to provide status
- check-success~=continuous-integration/jenkins/pr-head
# any of the jenkins pipeline needs to be green. We rely on not failure means all good (if skipped or executed)
- -check-failure~=^jenkins-ci
actions:
label:
add: ['ready for merge']
remove: ['needs: CI']
# Clean-up after merge
- name: remove ready for merge when merged
conditions:
- merged
- "label=ready for merge"
actions:
label:
remove: ['ready for merge', 'stale']
- name: add "do not merge" label when WIP is in title
conditions:
- title~=^(\[wip\]( |:) |\[WIP\]( |:) |wip( |:) |WIP( |:)).*
actions:
label:
add: ['do not merge']
# Check if version label is applied
- name: release version is a must for merged PRs part 1
conditions:
- merged
- -label~=^(release-version)
- -label~=^(Release review required)
- -label~=^(release-type)
actions:
label:
add: ['release version missing']
comment:
message: This PR does not contain release version label after merging.
# If there is a release version remove 'release version missing' and / or
# release review required
- name: release version is a must for merged PRs part 2.1
conditions:
- merged
- label=^(release-version)
actions:
label:
remove: ['release version missing', 'Release review required']
- name: release version is a must for merged PRs part 2.2
conditions:
- merged
- label=^(release-type)
actions:
label:
remove: ['release version missing', 'Release review required']
- name: add release review required to release branches
conditions:
- base~=^mbed-os-5.15
actions:
label:
add: ['Release review required']
# Clean-up if closed but not merged
- name: remove release version and needs labels
conditions:
- closed
- -merged
actions:
label:
remove_all: true
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化