As inspectIT is highly focused on quality, we introduced a Development Process in which each feature is checked by an integration manager. During an integration a piece of work a developer created (on a Feature branch) will be integrated with the master branch of the central repository.
The integration manager checks a pull request that a contributor created. If the pull request is valid, he pushes the commit to the stable repository of inspectIT.
Don't use the merge option on the GitHub to merge the ticket! Re-base and push manually only. Get the pull request locally by "git fetch origin pull/ID/head:BRANCHNAME"
The Integration Manager is responsible for:
- ensure that the feature is working
- ensure that all tests are green
- ensure that no errors are reported in static code analysis (run the ant task of Agent, CMR and inspectIT, each with the option "clean release-and-analyse")
- ensure that the commit is correct (naming, squashing, ...)
ensure that the commit can be re-based on master
- check if the realization of the feature complies with other similar realizations
- ensure that new dependencies that are added are necessary and not already addressed by current libraries
- ensure that when adding new dependencies (or updating existing ones), the licensing information (Used licenses in inspectIT) is updated and the new license is checked (see /wiki/spaces/ARCHIVE/pages/9109545)
Marking Pull Requests with labels
For easier collaboration, several labels are defined on the GitHub, so that proper state of the Pull Request can be marked:
In-Progress | Should be set by integration manager when the integration starts. |
Rejected | Should be set by integration manager when integration failed. |
Rebased & Merged | Should be set by integration manager when pull request is closed with successful merging. |
Comments only in Reviewable | Should be set always if the pull request is coming from a NovaTec colleague or student, if it's not there it's responsibility of integration manager to add it before using Reviewable. |