What you described is not continuous integration due to the following requirement:
Every X hours a day, the Integration Server checks the external line and combines all branches (which should explicitly go into the integration system) into it
Real Continuous integration
includes the following steps:
- Updating the source code from one specific branch (
trunk
, for example). - The source code of a building that creates an assembly artifact that can be executed or deployed. Sometimes this step also includes unit tests and checks.
- Shows the status of the assembly, whether it was successful or not: green or red.
If you have several branches, this means that you need to set up several build plans for several branches in order to perform continuous integration for each branch separately.
Therefore, there can be no best practice for what you described, because mergers should always be done manually. This is due to merge conflicts. They occur quite often and can only be resolved manually. Continuous integration will not help.
If you just get confused with the conditions and want to fulfill everything that you described, I would say that your development process is a bit spoiled. You may not need to merge multiple branches at the same time. All the development that you perform most often should be concentrated in one branch. Most often, this "one" branch will be a chest.
In your case, it seems that valuable development is scattered between several branches. This is not true. As soon as you decide that some features should be included in the upcoming release, it should be integrated into one (possibly parent) branch and remain there as part of the code base. Try to reduce the number of branches you have.
Summarizing,
- Exclude the
merge all branches
step from your process (this should not be done automatically). - Instead, manually merge.
- If you are sure that you need to have branches all the time, configure continuous integration for each individual branch separately.
- Otherwise (you do not need to constantly maintain branches, and after development is complete, they can be easily reintegrated into the parent branch). Reduce the number of branches to a minimum.
Good luck
source share