GitHub pull requests workflow
Each pull request goes through the following workflow:
Pull request workflow
Pull request states
Mergify bot drives our workflow. The mergify rules are defined in the Mbed OS repository in the .mergify.yml file. The Mbed OS maintainers are responsible for moving pull requests through the workflow states with help from the mergify bot.
Each state is time-boxed. In most cases, this is sufficient time to move to another state. The pull request can be closed if no update is provided within the time frame.
If a pull request is idle for more than two weeks, it will be closed. The author or the maintainer can reopen it at any time.
All pull requests must be reviewed. The Arm Mbed CI bot determines the most suitable person to review the pull request (based on the files changed) and tags that person accordingly. A PR creator can request specific reviewers by @ tagging people or teams in the Reviewers section of the pull request template. For example, @personA @TeamB.
Mergify dismisses a reviewer's status after any change to the pull request commit history (such as adding a new commit or rebasing). Smaller changes, such as documentation edits or rebases on top of latest master, only require additional review by maintainers. Their approval is sufficient because a team assigned as a reviewer already approved the pull request.
- Time: Three days for reviewers to leave feedback after the autoreviewer bot has added the label.
The Continuous Integration (CI) testing
There are many CI systems available for testing Mbed OS pull requests and braches. Which CI tests we run against a particular pull request depends on the effect that it has on the code base. Irrespective of which CI tests run, Mbed OS has an all-green policy, meaning that all triggered CI jobs must pass before we merge the pull request.
- Time: One day for CI to complete and report back results.
A pull request in the "work needed" state requires additional work due to failed tests, or rework as a result of the review. If a pull request is in this state, our maintainers request changes from the pull request author.
- Time: Three days for the pull request author to action the review comments.
Ready for integration
A pull request is ready for merge after all the reviews and tests are complete.
Maintainers merge pull requests because they have write access to the main master branch. Pull request integration happens at any time of the day. This may be automated in the future.
Ready for merge.
- Time: One day.
When we merge a pull request that we will publish in a patch release, we tag it with the specific patch release version. This is the release in which we first publish this pull request. For patch releases, we allow only bug fixes, new targets and enhancements to existing functionality. New features are typically published in feature releases.
The release tag has the format:
mis the major release.
fis the feature release.
pis the patch release.
We may add additional suffixes, which could represent a release candidate, alpha or beta release or so on.
We use many other labels to summarize the scope and effect of the changes:
- needs: preceding PR - Cannot yet be merged because it has a dependency on another pull request that needs to merge first.
- do not merge - Contains changes that may be in a draft state and submitted purely for review, or may contain breaking changes that have not been considered.
- devices: 'name' - Specifically affects the named device(s).
- component: 'name' - Specifically affects the named component. Component names follow the structure of Mbed OS (for example
- Release review required - Additional release version approval is required.
- release version missing - A merged pull request does not contain a release label; the maintainers team should fix this.
- BREAKING-CHANGE - This pull request introduces a breaking change.
- mirrored - The git2jira bot mirrored an issue to our internal Jira.
- JIRA status: - An internal Jira ticket status propagated to Github issues. It can be: OPEN, IN PROGRESS, CLOSED, RESOLVED or REOPENED.
- closed in jira - Mirrored internal Jira issue was closed.
- Manually patch - A pull request needs manual cherry-picking for the release candidate to resolve conflicts.
- risk: x - The pull request risk level. Options are green, amber or red.
- open for community contributions - Arm does not intend to fix this issue in the near future.
- mirror internally - This pull request will be manually mirrored to our internal Jira.
The following labels summarize the scope of the pull request:
- scope: bug-fix.
- scope: feature.
- scope: new-target.
- scope: refactor.
Documentation contribution labels
The documentation repository uses some of the same labels that the
mbed-os repository does. In addition, it includes:
- code dependency - The feature or change this pull request describes has not yet merged into
mbed-os. Even if all the required reviewers have reviewed and approved this pull request, it must wait to merge until its code does.
- wait to merge - This pull request is a work in progress and is not yet ready for full review.
- Scripting work - not for writers - This issue requires a change too large or frequent for us to do manually. Instead, a script needs to be created to fix this issue.
- help wanted - The documentation team does not know how to answer this question and welcomes help in answering it.